-
Notifications
You must be signed in to change notification settings - Fork 47
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Update geostationary projection to allow clean description of newer generation satellites #258
Comments
@erget This sounds like an excellent change to me. |
I'm not familiar with this projection, but in principle I think your proposal is sensible. There isn't a problem in having alternative ways to do things if there are new things which need to be described. Thanks. |
Hi Daniel:
It is not an issue of the generation of the satellite. There is nothing that precludes a 3-axis stabilized satellite from operating like Meteosat.
The geolocation algorithm in the gestationary projection includes multiple rotation matrix multiplication operations. The order of these operations vary as a function of how the scanning is done (i.e. sweep and fixed axes)
Matrix multiplication is not commutative.
very respectfully,
randy
… On Apr 1, 2020, at 10:46 AM, Daniel Lee ***@***.***> wrote:
Moderator
@user <https://github.com/user>
Moderator Status Review [last updated: YY/MM/DD]
Brief comment on current status, update periodically
Requirement Summary
The geostationary project <http://cfconventions.org/cf-conventions/cf-conventions.html#_geostationary_projection> should be compatible with all generations of satellites that are used to generate data products from geostationary orbit.
Technical Proposal Summary
The current wording of the geostationary projection uses the concept of sweep_angle_axis and fixed_angle_axis. This is applicable for when instruments sweep their view along a given axis of a data product, whereas the other axis of the product is fixed. An example of this is the Meteosat mission, whose satellites' imagers "sweep" north as the satellite spins about its fixed axis.
This is no longer an applicable description of how newer satellites work. GOES-17, for example, uses a different approach to scans, as will Meteosat Third Generation. These satellites are three-axis stabilised and don't have a fixed axis.
As in practice, sweep_angle_axis and fixed_angle_axis refer to the elevation and azimuth, independent of the instrument's operating principles, I propose adding the capability of having a more general description of the image which does not rely on the underlying scan mechanism. In the end, the grid definition is a mathematical construct and the user is interested in understanding the grid in order to recover Earth coordinates from it; the instrument's function is likely interesting but not important in order to understand the geophysical observation.
Benefits
Users and producers of geostationary data products.
Status Quo
It is currently possible to encode data using the CF Conventions with the attributes described in Appendix F, but this can be confusing, especially for data producers, when spin and sweep aren't actually related to the instrument in question.
Detailed Proposal
It might be a bit tricky to get this right so I'm open to suggestions. I'd like to wait to create a PR until I receive feedback from the community. In a nutshell I propose:
Clarifying the notes related to spin and sweep in order to specify the generations of satellites they apply to. I might also include some language describing what they actually meant in the context of those satellites, some of which will soon be considered legacy.
Add the possibility of using elevation and azimuth rather than spin and sweep axes, whilst stating that the data producer must specify either one of elevation/azimuth or one of spin/sweep axis.
This would not break existing data, and for future data it would be a bit clearer. However, it makes the projection a little bit more involved, as we would have 2 sets of attributes that would essentially be identical.
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub <#258>, or unsubscribe <https://github.com/notifications/unsubscribe-auth/AHZDNAJJL66ICSBUEZCVUSLRKNHUBANCNFSM4LZAULXA>.
This list forwards relevant notifications from Github. It is distinct from ***@***.*** ***@***.***>, although if you do nothing, a subscription to the UCAR list will result in a subscription to this list. To unsubscribe from this list only, send a message to ***@***.*** ***@***.***>.
_____________________________________
Randy C Horne ([email protected])
Principal Engineer, Excalibur Laboratories Inc.
voice & fax: (321) 952.5100
cell: (321) 693.1074
url: http://www.excaliburlabs.com
|
Randy, what you say is quite correct. Do you have a suggestion for better names that don't assume too much? |
Dear Jim:
A key objective of the geostationary projection when it was defined is that it would work for all geostationary weather satellites whose imagery was projected on an idealized fixed grid … a reasonable design tenet given all the other math in the geolocation algorithm is exactly the same.
We struggled with these names (sweep_angle_axis and fixed_angle_axis). These names are not great, but this was the best we could come up with.
It is just really odd that the location of data points in the projection vary as a function of how the imaging instrument works (which is why these projection parameters are instrument-centric).
Maybe some fresh eyes can come up with something better.
very respectfully,
randy
|
Hi @rhorne99 you're right, there's nothing that prevents a 3-axis stabilised satellite from behaving like Meteosat 1st or 2nd generation. Meteosat 3rd generation deviates from the concept of previous generations by scanning in out of alignment with the image's axes. And to make matters more interesting this misalignment is different throughout the full disc scan - it's skewed in opposite directions in opposing hemispheres. This picture illustrates how it works: The result of this is that the position within the data array doesn't necessarily map to a position on the Earth in the same way that it did before. I think you put it well when you said
In this configuration there isn't really a fixed axis at all. This is why we'd like to be able to signify which axes give elevation and azimuth angles. Independently of how the instrument is scanning, then, a rectified product would be well-described using these attributes. If this approach makes sense to somebody who's not me I'll put together a pull request showing the exact changes proposed :) |
Dear Daniel:
Thanks for the explanation of how Meteosat 3 works. Note that the original definition of the CF geostationary projection was put together with GOES-R series, which includes GOES-17, and Meteosat 2 in mind.
Generalizing the projection parameters and, more importantly, making them clear is a clearly challenge. I have 2 questions:
(!)
Can you better explain what you mean when you say "This is why we'd like to be able to signify which axes give elevation and azimuth angles. “
(2)
Is it still the case that the Meteosat 3 fixed/rectified image product is oriented N/S and E/W ?
very respectfully,
randy
… On Apr 2, 2020, at 3:05 AM, Daniel Lee ***@***.***> wrote:
Hi @rhorne99 <https://github.com/rhorne99> you're right, there's nothing that prevents a 3-axis stabilised satellite from behaving like Meteosat 1st or 2nd generation.
Meteosat 3rd generation deviates from the concept of previous generations by scanning in out of alignment with the image's axes. And to make matters more interesting this misalignment is different throughout the full disc scan - it's skewed in opposite directions in opposing hemispheres. This picture illustrates how it works:
<https://camo.githubusercontent.com/dff5e937d699f6f522219642e9008b866f71ad12/68747470733a2f2f7777772e65756d65747361742e696e742f776562736974652f77636d2f6964632f696463706c673f496463536572766963653d4745545f46494c452664446f634e616d653d494d475f4d54475f4643495f5343414e4e494e475f46445353265265766973696f6e53656c656374696f6e4d6574686f643d4c617465737452656c65617365642652656e646974696f6e3d576562>
The result of this is that the position within the data array doesn't necessarily map to a position on the Earth in the same way that it did before. I think you put it well when you said <#258 (comment)>
the location of data points in the projection vary as a function of how the imaging instrument works
In this configuration there isn't really a fixed axis at all. This is why we'd like to be able to signify which axes give elevation and azimuth angles. Independently of how the instrument is scanning, then, a rectified product would be well-described using these attributes.
If this approach makes sense to somebody who's not me I'll put together a pull request showing the exact changes proposed :)
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub <#258 (comment)>, or unsubscribe <https://github.com/notifications/unsubscribe-auth/AHZDNAIZXRKMD5MFUT4D6EDRKQ2LBANCNFSM4LZAULXA>.
This list forwards relevant notifications from Github. It is distinct from ***@***.*** ***@***.***>, although if you do nothing, a subscription to the UCAR list will result in a subscription to this list. To unsubscribe from this list only, send a message to ***@***.*** ***@***.***>.
_____________________________________
Randy C Horne ([email protected])
Principal Engineer, Excalibur Laboratories Inc.
voice & fax: (321) 952.5100
cell: (321) 693.1074
url: http://www.excaliburlabs.com
|
Hi Randy, Concerning your questions:
Daniel |
Dear Daniel:
All the GOES R series satellites in orbit have level 1b/2+ products that use the current geostationary projection parameters. This currently includes GOES-16 and GOES-17. There are two more planned GOES-R series satellites to be launched in the 2020s.
Getting the program/prime contractor to follow CF conventions was like pulling teeth. Be aware that if the current geostationary projection parameters are deprecated, I would be very surprised if the products for the yet to be launched GOES-R series satellites (T and U) will reflect any changes you are proposing.
Disclaimer: I no longer (officially) support the program in any capacity.
very respectfully,
randy
… On Apr 3, 2020, at 9:46 AM, Daniel Lee ***@***.***> wrote:
Hi Randy,
Concerning your questions:
As at EUMETSAT we are essentially using sweep_angle_axis as synonymous with the axis signifying azimuth angle and fixed_angle_axis as synonymous with the axis signifying elevation, we'd like to be able to specify azimuth_axis and fixed_angle_axis instead of sweep_angle_axis and fixed_angle_axis. This more general definition would more accurately reflect our understanding of how our instrument works.
Yes, the Meteosat Third Generation image products will still have North, South, East, and West as the image outer boundaries - we scan tilted, but full disk images won't be tilted.
Daniel
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub <#258 (comment)>, or unsubscribe <https://github.com/notifications/unsubscribe-auth/AHZDNAMGJH6NE4OH5MI72M3RKXSDFANCNFSM4LZAULXA>.
This list forwards relevant notifications from Github. It is distinct from ***@***.*** ***@***.***>, although if you do nothing, a subscription to the UCAR list will result in a subscription to this list. To unsubscribe from this list only, send a message to ***@***.*** ***@***.***>.
_____________________________________
Randy C Horne ([email protected])
Principal Engineer, Excalibur Laboratories Inc.
voice & fax: (321) 952.5100
cell: (321) 693.1074
url: http://www.excaliburlabs.com
|
Although primarily working with polar orbiters this suggested change make sense to me. I fully acknowledge the challenge identified by Randy, but think that shouldn't prevent this update and I think the proposal as stated also acknowledge this. |
Hi all, Thanks very much for your inputs! A few points to respond to: From Randy:
I understand, this is an issue that's present with all of the major satellite data producers. I do not intend to deprecate anything, but rather to provide clarifications so that implementing things are easier. @steingod thanks for chiming in as well, it's very much appreciated. TLDRI myself have sought further clarification of the issue with one of our optical imager engineers @ameraner who has been kind enough to delve deep into the details of how I'll propose specific changes to the notes in a TBW PR, but surgery on the Conventions needs care and so I'm summarising the specifics of the issue below. Nuts and boltsAs nicely described by PROJ the geostationary projection works using a gimbal model of an observation point's viewing angle, like thus: Some terms: As you can see, the definitions could be considered counterintuitive but they're widely adopted and there's no reason to (try to) change them. The important thing to note is that even if you know the azimuth and elevation of a given point, you also have to know which axis is aligned with the conceptual outer and inner gimbal. Order of operations matters in this case. This contradicts what I was asserting earlier and has led to implementation difficulties, not because the attributes are incorrect, but rather because they require some mental gymnastics to parse. The solution is to clarify a few things in the notes:
|
Hi all, thanks @erget for trying to clarify this issue! It's causing some confusion in the community, as it's a tricky thing to understand. I'm fully in line with your last recap. As it's already been mentioned here, imho one thing that each description should really clarify (including the one from PROJ), is that this gimbal scanning geometry we are describing for the geostationary projection is independent of the actual scanning geometry of the actual instrument in orbit. It rather describes how the image is aquired by a fictitious, simplified, two-axis gimbal imaging instrument in an idealized geostationary position. Elaborating on this, for future newbies like me delving into this issue: |
Daniel:
Thanks for listening ! I think your plan is a good one.
very respectfully,
randy
… On Apr 14, 2020, at 6:22 AM, Daniel Lee ***@***.***> wrote:
Hi all,
Thanks very much for your inputs! A few points to respond to:
From Randy:
if the current geostationary projection parameters are deprecated, I would be very surprised if the products for the yet to be launched GOES-R series satellites (T and U) will reflect any changes you are proposing.
I understand, this is an issue that's present with all of the major satellite data producers. I do not intend to deprecate anything, but rather to provide clarifications so that implementing things are easier.
@steingod <https://github.com/steingod> thanks for chiming in as well, it's very much appreciated.
TLDR
I myself have sought further clarification of the issue with one of our optical imager engineers @ameraner <https://github.com/ameraner> who has been kind enough to delve deep into the details of how sweep_angle_axis and fixed_angle_axis are used. I think that the issue can in fact be resolved not by adding additional attributes, but rather by clarifying in the notes how these axes are used. PROJ probably has the best documentation on this <https://github.com/OSGeo/PROJ/blob/master/docs/source/operations/projections/geos.rst> - concise and understandable - and I believe that CF would profit from similar clarity in the notes.
I'll propose specific changes to the notes in a TBW PR, but surgery on the Conventions needs care and so I'm summarising the specifics of the issue below.
Nuts and bolts
As nicely described by PROJ <https://github.com/OSGeo/PROJ/blob/master/docs/source/operations/projections/geos.rst> the geostationary projection works using a gimbal model of an observation point's viewing angle, like thus:
<https://github.com/OSGeo/PROJ/raw/master/docs/images/geos_sweep.png>
Some terms:
Sweep-angle axis: This is the outer-gimbal axis, the one whose axis is aligned with the "base" in the figure. If you imagine this as the Earth, its equator always describes the same great circle.
Fixed-angle axis: This is the inner-gimbal axis, the one whose axis is attached to the "equator" of the outer-gimbal circle. Therefore its "equator" describes a different great circle depending on the position of the outer gimbal.
As you can see, the definitions could be considered counterintuitive but they're widely adopted and there's no reason to (try to) change them.
The important thing to note is that even if you know the azimuth and elevation of a given point, you also have to know which axis is aligned with the conceptual outer and inner gimbal. Order of operations matters in this case. This contradicts what I was asserting earlier and has led to implementation difficulties, not because the attributes are incorrect, but rather because they require some mental gymnastics to parse.
The solution is to clarify a few things in the notes:
How the axes correspond to a gimbal view, as this has confused developers
That the y-axis (in existing implementations, and probably for the foreseeable future) aligns with N/S and the x-axis aligns with E/W. This is true in practice but is not specified in our description.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub <#258 (comment)>, or unsubscribe <https://github.com/notifications/unsubscribe-auth/AOJPXWO7RCKDKVQHQR6WHOTRMQ2PNANCNFSM4LZAULXA>.
_____________________________________
Randy C Horne ([email protected])
Principal Engineer, Excalibur Laboratories Inc.
(321) 693.1074
url: http://www.excaliburlabs.com
|
Dear geostationary friends, I've now completed a proposal text, found in #259 . It reflects the results of this discussion and would be happy to discuss your approval or criticism. At this note, now that we have a concrete proposal on the table, who would be willing to moderate this discussion? Cheers, |
@JimBiardCics you've chimed in a few times on this discussion - would you be willing to moderate the proposal? We now have a concrete text on the table for potential approval. |
@JonathanGregory I think @JimBiardCics might be out of office - would you be interested in moderating this discussion, now that the proposed text change is on the table? |
Yes I could try to moderate it. I'd certainly be a neutral moderator since I'm quite ignorant of this! I've just read it and I have a few questions of clarification:
Everyone is invited to comment on the proposal text in #259. Please post your comments here and not in the pull request (following our GitHub guidelines). Thanks. |
Thanks @JonathanGregory for jumping in! Good points, I will address these before the weekend. |
Hi @JonathanGregory , answers inline below.
Fixed in ee79789.
Excellent question - I also think that the terms are confusing, and don't know anybody who thinks that they're straightforward. Even a diagram doesn't really explain this for me; it seems that one must simply memorise it. I did consider inserting a diagram but in the whole of the CF Conventions there are only tables and code samples! That is the reason that in the proposed text I link to further explanatory information and a nice diagram on the PROJ website (in fact I stole the diagram of choice and used it in a previous comment). In order to keep the document's style consistent I would prefer to use this approach, as the linked document is short and explains it as well as one can expect. It would be a small matter to introduce a diagram (or to steal the existing one) but would be a departure from the document's current style. Would you agree to leaving that part of the text as-is, sans diagram?
This is correct. I've struck that line in a471a2e - as we have not limited this grid mapping to views over the equator thus far, it would potentially break backwards compatibility to do that now, and the explanation becomes clunky if we try to account for all cases.
Yes. Taken by themselves,
Meaning if one of the axes is
|
Dear Daniel @erget Thanks. Now I understand much better. That leads to some more questions, but they're at the next order of small quantities.
Cheers Jonathan |
I should just clarify that not all attributes are case-insensitive; |
@JonathanGregory thanks for these improvements!
I've phrased this as follows in cfb37b1:
Done in 0fa8f39.
Done in dd75623.
Done in 9511395. Best regards, |
Hei @erget and all, (reposting here instead of #259 , sorry for the mess): I happen to have spent the week-end on this projection, browsing through the history, and trying to understand what we were encoding in the CF object. I received great help from the Pytroll community. I propose a small clarification (against the current 1.9 doc) to:
First, we have "this projection" twice. Second, "related to the scanning angle". Aren't they the scanning angle themselves, can we drop "related to"? Third, it seems to me that this projection introduces a mismatch between what is stored in the CF file (the angles in radians) and what "mainstream" projection libraries (Proj) use (distance from origin in meters). So that the wording "the projection coordinates" could be confusing. Thus, I humbly suggest:
I also suggest a sentence to be added in the bullet points, to warn the non-expert user, along the lines of:
I understand the implementation in PROJ shouldn't be driving the CF convention (and it didn't), but I feel we could be explicit for the non-expert users (after all, AFAIK, the geostationary projection is the only one in CF where CF stores something different that what PROJ returns/expects). |
Hej @TomLav , No worries about the "mess" - it's no bother to anyone and every community has its own way of doing things, so we're all located somewhere along the same learning curve ;) Concerning the clarifications (1) and (2) you propose, I've implemented some changes in bc93215. Concerning (3) (units) I am not familiar with any products that actually use distance from origin. Do you have an example? We had some discussion in the past about this because the units used in CF implied that meters were used, whereas in fact the units were angular. This is the reason why In any case my opinion is that there's enough text concerning angular vs linear coordinates in the new draft that we risk beating a dead horse by adding more on this topic. Having reviewed the PROJ docs, I also don't see the use of linear distance from origin, but I am happy to be corrected on this if I have overlooked something. |
@TomLav has moved the point he made to cf-convention/discuss#49. Hence it is no longer an unanswered question on this issue. I believe that there are no outstanding questions at the moment. |
This enhancement (Update geostationary projection) will be agreed tomorrow (Tue 2nd June) if no further difficulties are raised. |
This enhancement (update geostationary projection) is now agreed. Thank you, Daniel @erget. The conformance document is unaffected, and Daniel is already listed as an author, but I think the history.adoc needs a comment about this issue, which I don't see in the pull request - is it there? If I'm correct about that, please could you add it to the PR, which I will then merge. Thanks. |
@JonathanGregory thanks a bunch, I've updated the PR to include changes to |
Thanks @erget. I have merged the PR. That concludes this issue. I don't know about deleting the source branch. I presume that's your own private affair. I was following your helpful instructions in CONTRIBUTING.md. 😄 |
@JonathanGregory 😆 yeah at the time that I inserted that update I wasn't sure if we'd be using the most GitHub-esque way of doing Pull Requests, which is via forks of repositories, as we're doing now. In such cases that falls to the proposer, but some groups prefer workflows that use the same repository to hold all branches. It's a cultural issue and I feel that we've established we use the multi-repository workflow in CF so that's an item that should be updated in CONTRIBUTING! I hope the rest of the instructions were helpful nonetheless :) |
Moderator
@JonathanGregory
Moderator Status Review [last updated: YY/MM/DD]
Brief comment on current status, update periodically
Requirement Summary
The geostationary projection should be compatible with all generations of satellites that are used to generate data products from geostationary orbit.
Technical Proposal Summary
The current wording of the geostationary projection uses the concept of
sweep_angle_axis
andfixed_angle_axis
. This is applicable for when instruments sweep their view along a given axis of a data product, whereas the other axis of the product is fixed. An example of this is the Meteosat mission, whose satellites' imagers "sweep" north as the satellite spins about its fixed axis.This is no longer an applicable description of how newer satellites work. GOES-17, for example, uses a different approach to scans, as will Meteosat Third Generation. These satellites are three-axis stabilised and don't have a fixed axis.
As in practice,
sweep_angle_axis
andfixed_angle_axis
refer to the elevation and azimuth, independent of the instrument's operating principles, I propose adding the capability of having a more general description of the image which does not rely on the underlying scan mechanism. In the end, the grid definition is a mathematical construct and the user is interested in understanding the grid in order to recover Earth coordinates from it; the instrument's function is likely interesting but not important in order to understand the geophysical observation.Benefits
Users and producers of geostationary data products.
Status Quo
It is currently possible to encode data using the CF Conventions with the attributes described in Appendix F, but this can be confusing, especially for data producers, when spin and sweep aren't actually related to the instrument in question.
Detailed Proposal
It might be a bit tricky to get this right so I'm open to suggestions. I'd like to wait to create a PR until I receive feedback from the community. In a nutshell I propose:
This would not break existing data, and for future data it would be a bit clearer. However, it makes the projection a little bit more involved, as we would have 2 sets of attributes that would essentially be identical.
The text was updated successfully, but these errors were encountered: