MeteoSwiss / MeteoSwiss/ampycloud
[Bug]: ampycloud expects ceilometers to all be at the same altitude
- Dominant language
- Python
- Stars
- 6
- Forks
- 2
- Avg merge
- 4d 10h
- Merged PRs (30d)
- 4
Description
### Is there already an issue for this?
- [x] I found no existing issue for this bug.
### Describe the bug
Discussing with a colleague, I just realized that ampycloud indirectly assumes that all ceilometers are located on the ground, all at the same altitude.
If one (or more) ceilometer in a group is/are located significantly higher than the others (e.g. on top of a tall tower), ampycloud is unable to account for this fact when computing cloud covers for altitudes below the tallest ceilometer. For example, assuming a low and complete cloud cover with a single ceilometer peaking above it, ampcyloud would never report "OVC" because one ceilometer reports a clear sight line, even though the clouds are below it.
The manner to resolve this limitation is unclear to me at this point. It would likely require to compute the maximum theoretical number of hits per cloud layer as a function of altitude, accounting for the altitude above ground of the different ceilometers. The challenge will come from cases where the cloud hit distribution spans a small range of altitude above and below the elevated ceilometers.
This may not be straighforward, and will require a change to the user interface (because user will need to provide the altitude of all the ceilometers, which could be made optional and thus backward compatible, I suppose).
A first (easy) step would be to identify which ceilometers (if any) are currently not located on the ground at the airport of interest.
### Screenshot
N/A
### Steps to reproduce
N/A
### Relevant log output
```shell
N/A
```
### Environment
```markdown
N/A
```
### Code of Conduct
- [x] I agree to follow the ampycloud Code of Conduct.
Contributor guide
Research direction
No files, tests, or entry points are named. Begin by locating the code that groups ceilometer hits and computes cloud coverage by altitude, then trace how ceilometer locations are provided to the package. Done means the calculation accounts for differing ceilometer altitudes and the required user-interface change is defined, including backward compatibility.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- python
- Domain
- data
- Issue type
- Bug
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Needs clarification
- Newbie friendliness
- 25/100