[ 
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)

Reply via email to