[ https://issues.apache.org/jira/browse/SIS-368?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Martin Desruisseaux closed SIS-368. ----------------------------------- > When a coordinate operation change the longitude axis range from [-180 … > +180]° to [0 … 360]°, the Envelopes.transform(…) result should be normalized > accordingly > ----------------------------------------------------------------------------------------------------------------------------------------------------------------- > > Key: SIS-368 > URL: https://issues.apache.org/jira/browse/SIS-368 > Project: Spatial Information Systems > Issue Type: Improvement > Components: Referencing > Affects Versions: 0.5, 0.6, 0.7 > Reporter: Martin Desruisseaux > Assignee: Martin Desruisseaux > Priority: Major > Fix For: 0.8 > > > There is at least two conventions regarding the range of longitude values: > -180° to 180° or 0° to 360°. The range is specified with > {{CoordinateSystemAxis}} minimum and maximum attributes. Most of the times, > we use the -180° to +180° convention. However when an envelope is transformed > with {{Envelopes.transform(CoordinateOperation, Envelope)}} method, if the > longitude range declared in the coordinate system changes, we expect the > envelope longitude values to be updated accordingly. > We could invoke {{GeneralEnvelope.normalize()}} after envelope > transformation, but we don't want to invoke it systematically. If the > {{CoordinateOperation}} does not change the longitude range, then it is safer > to let the longitude values as we found them, even if they are slightly > outside the expected range. Example: > * If source CRS uses longitudes in the \[-180 … +180\]° range and target CRS > uses longitudes are in the \[-180 … +180\]° range, then do nothing. Even if > the transformation result is an envelope spanning 175° to 185° of longitude, > leave it as-is because the original envelope was probably already crossing > the anti-meridian (not necessarily using longitudes; we can cross the > anti-meridian with the Mercator projection too). > * If source CRS uses longitudes in the \[0 … 360\]° range and target CRS uses > longitudes are in the \[0 … 360\]° range, do nothing for the same reason than > above. > * If source CRS uses longitudes in the \[-180 … +180\]° range and target CRS > uses longitudes are in the \[0 … 360\]° range, then if the envelope result is > outside the \[0 … 360\]° range, brings it back to the \[0 … 360\]° range as > described in {{GeneralEnvelope.normalize()}}. > * If source CRS uses longitudes in the \[0 … 360\]° range and target CRS uses > longitudes are in the \[-180 … +180\]° range, then if the envelope result is > outside the \[-180 … +180\]° range, brings it back to the \[-180 … +180\]° > range. -- This message was sent by Atlassian Jira (v8.3.4#803005)