This is an automated email from the ASF dual-hosted git repository. desruisseaux pushed a commit to branch geoapi-4.0 in repository https://gitbox.apache.org/repos/asf/sis.git
commit 5806fe202c5660fe5f598cd45c8729f066cab660 Author: Martin Desruisseaux <[email protected]> AuthorDate: Sat Apr 6 14:38:04 2019 +0200 Add CommonCRS.GRS1980 enumeration value for "Unknown datum based upon the GRS 1980 ellipsoid" (EPSG:4019). This is useful for parsing netCDF file, which often do not specify the datum. --- .../java/org/apache/sis/referencing/CommonCRS.java | 28 ++++++++++++++++++++-- .../sis/referencing/StandardDefinitions.java | 4 +++- .../sis/referencing/EPSGFactoryFallbackTest.java | 4 ++-- 3 files changed, 31 insertions(+), 5 deletions(-) diff --git a/core/sis-referencing/src/main/java/org/apache/sis/referencing/CommonCRS.java b/core/sis-referencing/src/main/java/org/apache/sis/referencing/CommonCRS.java index d2f44f1..715d532 100644 --- a/core/sis-referencing/src/main/java/org/apache/sis/referencing/CommonCRS.java +++ b/core/sis-referencing/src/main/java/org/apache/sis/referencing/CommonCRS.java @@ -112,7 +112,7 @@ import static org.apache.sis.internal.util.StandardDateFormat.MILLISECONDS_PER_D * <tr><td>European Terrestrial Reference Frame (ETRS) 1989</td> <td>CRS, datum</td> <td>{@link #ETRS89}</td></tr> * <tr><td>European Terrestrial Reference System (ETRF) 1989</td> <td>CRS, datum</td> <td>{@link #ETRS89}</td></tr> * <tr><td>Greenwich</td> <td>Prime meridian</td> <td>{@link #WGS84}, {@link #WGS72}, {@link #ETRS89}, {@link #NAD83}, {@link #NAD27}, {@link #ED50}, {@link #SPHERE}</td></tr> - * <tr><td>GRS 1980</td> <td>Ellipsoid</td> <td>{@link #ETRS89}, {@link #NAD83}</td></tr> + * <tr><td>GRS 1980</td> <td>Ellipsoid</td> <td>{@link #GRS1980}, {@link #ETRS89}, {@link #NAD83}</td></tr> * <tr><td>GRS 1980 Authalic Sphere</td> <td>Ellipsoid</td> <td>{@link #SPHERE}</td></tr> * <tr><td>Hayford 1909</td> <td>Ellipsoid</td> <td>{@link #ED50}</td></tr> * <tr><td>International 1924</td> <td>Ellipsoid</td> <td>{@link #ED50}</td></tr> @@ -125,7 +125,7 @@ import static org.apache.sis.internal.util.StandardDateFormat.MILLISECONDS_PER_D * </table></blockquote> * * @author Martin Desruisseaux (Geomatys) - * @version 0.8 + * @version 1.0 * * @see org.apache.sis.referencing.factory.CommonAuthorityFactory * @@ -260,6 +260,25 @@ public enum CommonCRS { (short) 0, (short) 0, (short) 23000, (short) 0, (byte) 28, (byte) 38), // UPS and UTM info /** + * Unknown datum based upon the GRS 1980 ellipsoid. + * Use only in cases where geodetic datum is unknown. + * + * <blockquote><table class="compact" summary="Sphere properties."> + * <tr><th>EPSG identifiers:</th> <td>4019 (<i>datum:</i> 6019, <i>ellipsoid:</i> 7019)</td></tr> + * <tr><th>Primary names:</th> <td>"Unknown datum based upon the GRS 1980 ellipsoid."</td></tr> + * <tr><th>Prime meridian:</th> <td>Greenwich</td></tr> + * <tr><th>Semi-major axis length:</th> <td>6378137</td></tr> + * <tr><th>Semi-minor axis length:</th> <td>6356752 <i>(approximated)</i></td></tr> + * <tr><th>Inverse flattening:</th> <td>298.257222101 <i>(definitive)</i></td></tr> + * <tr><th>Ellipsoid axes unit:</th> <td>{@link Units#METRE}</td></tr> + * </table></blockquote> + * + * @since 1.0 + */ + GRS1980((short) 4019, (short) 0, (short) 0, (short) 6019, (short) 7019, // Geodetic info + (short) 0, (short) 0, (short) 0, (short) 0, (byte) 0, (byte) 0), // UPS and UTM info + + /** * Unspecified datum based upon the GRS 1980 Authalic Sphere. Spheres use a simpler algorithm for * {@linkplain org.apache.sis.referencing.datum.DefaultEllipsoid#orthodromicDistance * orthodromic distance computation}, which may be faster and more robust. @@ -554,6 +573,7 @@ public enum CommonCRS { * <tr><td>ETRS89</td> <td>{@link #ETRS89}</td> <td></td></tr> * <tr><td>NAD27</td> <td>{@link #NAD27}</td> <td>CRS:27</td></tr> * <tr><td>NAD83</td> <td>{@link #NAD83}</td> <td>CRS:83</td></tr> + * <tr><td>GRS 1980</td> <td>{@link #GRS1980}</td><td></td></tr> * <tr><td>GRS 1980 Authalic Sphere</td> <td>{@link #SPHERE}</td> <td></td></tr> * <tr><td>WGS 72</td> <td>{@link #WGS72}</td> <td></td></tr> * <tr><td>WGS 84</td> <td>{@link #WGS84}</td> <td>CRS:84</td></tr> @@ -594,6 +614,7 @@ public enum CommonCRS { * <tr><td>ETRS89</td> <td>{@link #ETRS89}</td> <td>4258</td></tr> * <tr><td>NAD27</td> <td>{@link #NAD27}</td> <td>4267</td></tr> * <tr><td>NAD83</td> <td>{@link #NAD83}</td> <td>4269</td></tr> + * <tr><td>GRS 1980</td> <td>{@link #GRS1980}</td><td>4019</td></tr> * <tr><td>GRS 1980 Authalic Sphere</td> <td>{@link #SPHERE}</td> <td>4047</td></tr> * <tr><td>WGS 72</td> <td>{@link #WGS72}</td> <td>4322</td></tr> * <tr><td>WGS 84</td> <td>{@link #WGS84}</td> <td>4326</td></tr> @@ -649,6 +670,7 @@ public enum CommonCRS { * <tr><td>ETRS89</td> <td>{@link #ETRS89}</td> <td>4937</td></tr> * <tr><td>NAD27</td> <td>{@link #NAD27}</td> <td></td></tr> * <tr><td>NAD83</td> <td>{@link #NAD83}</td> <td></td></tr> + * <tr><td>GRS 1980</td> <td>{@link #GRS1980}</td><td></td></tr> * <tr><td>GRS 1980 Authalic Sphere</td> <td>{@link #SPHERE}</td> <td></td></tr> * <tr><td>WGS 72</td> <td>{@link #WGS72}</td> <td>4985</td></tr> * <tr><td>WGS 84</td> <td>{@link #WGS84}</td> <td>4979</td></tr> @@ -707,6 +729,7 @@ public enum CommonCRS { * <tr><td>ETRS89</td> <td>{@link #ETRS89}</td> <td>4936</td></tr> * <tr><td>NAD27</td> <td>{@link #NAD27}</td> <td></td></tr> * <tr><td>NAD83</td> <td>{@link #NAD83}</td> <td></td></tr> + * <tr><td>GRS 1980</td> <td>{@link #GRS1980}</td><td></td></tr> * <tr><td>GRS 1980 Authalic Sphere</td> <td>{@link #SPHERE}</td> <td></td></tr> * <tr><td>WGS 72</td> <td>{@link #WGS72}</td> <td>4984</td></tr> * <tr><td>WGS 84</td> <td>{@link #WGS84}</td> <td>4978</td></tr> @@ -815,6 +838,7 @@ public enum CommonCRS { * <tr><td>European Terrestrial Reference System 1989</td> <td>{@link #ETRS89}</td> <td>6258</td></tr> * <tr><td>North American Datum 1927</td> <td>{@link #NAD27}</td> <td>6267</td></tr> * <tr><td>North American Datum 1983</td> <td>{@link #NAD83}</td> <td>6269</td></tr> + * <tr><td>Not specified (based on GRS 1980 ellipsoid)</td> <td>{@link #GRS1980}</td><td>6019</td></tr> * <tr><td>Not specified (based on GRS 1980 Authalic Sphere)</td> <td>{@link #SPHERE}</td> <td>6047</td></tr> * <tr><td>World Geodetic System 1972</td> <td>{@link #WGS72}</td> <td>6322</td></tr> * <tr><td>World Geodetic System 1984</td> <td>{@link #WGS84}</td> <td>6326</td></tr> diff --git a/core/sis-referencing/src/main/java/org/apache/sis/referencing/StandardDefinitions.java b/core/sis-referencing/src/main/java/org/apache/sis/referencing/StandardDefinitions.java index b075dde..5a1f579 100644 --- a/core/sis-referencing/src/main/java/org/apache/sis/referencing/StandardDefinitions.java +++ b/core/sis-referencing/src/main/java/org/apache/sis/referencing/StandardDefinitions.java @@ -77,7 +77,7 @@ import static org.apache.sis.internal.metadata.ReferencingServices.AUTHALIC_RADI * This class should not be loaded when a connection to an EPSG geodetic dataset is available. * * @author Martin Desruisseaux (Geomatys) - * @version 0.8 + * @version 1.0 * @since 0.4 * @module */ @@ -180,6 +180,7 @@ final class StandardDefinitions { case 4269: name = "NAD83"; scope = "Geodetic survey."; break; case 4267: name = "NAD27"; scope = "Geodetic survey."; break; case 4230: name = "ED50"; scope = "Geodetic survey."; break; + case 4019: name = "Unknown datum based upon the GRS 1980 ellipsoid"; world = true; break; case 4047: name = "Unspecified datum based upon the GRS 1980 Authalic Sphere"; world = true; break; default: throw new AssertionError(code); } @@ -207,6 +208,7 @@ final class StandardDefinitions { case 6269: name = "North American Datum 1983"; alias = "NAD83"; break; case 6267: name = "North American Datum 1927"; alias = "NAD27"; break; case 6230: name = "European Datum 1950"; alias = "ED50"; break; + case 6019: name = "Not specified (based on GRS 1980 ellipsoid)"; alias = null; world = true; break; case 6047: name = "Not specified (based on GRS 1980 Authalic Sphere)"; alias = null; world = true; break; default: throw new AssertionError(code); } diff --git a/core/sis-referencing/src/test/java/org/apache/sis/referencing/EPSGFactoryFallbackTest.java b/core/sis-referencing/src/test/java/org/apache/sis/referencing/EPSGFactoryFallbackTest.java index 5b2d5a5..4145b19 100644 --- a/core/sis-referencing/src/test/java/org/apache/sis/referencing/EPSGFactoryFallbackTest.java +++ b/core/sis-referencing/src/test/java/org/apache/sis/referencing/EPSGFactoryFallbackTest.java @@ -68,11 +68,11 @@ public final strictfp class EPSGFactoryFallbackTest extends TestCase { EPSGFactoryFallback.INSTANCE.getAuthorityCodes(PrimeMeridian.class)); assertSetEquals(Arrays.asList("7030", "7043", "7019", "7008", "7022", "7048"), EPSGFactoryFallback.INSTANCE.getAuthorityCodes(Ellipsoid.class)); - assertSetEquals(Arrays.asList("6326", "6322", "6269", "6267", "6258", "6230", "6047", "5100", "5103"), + assertSetEquals(Arrays.asList("6326", "6322", "6269", "6267", "6258", "6230", "6019", "6047", "5100", "5103"), EPSGFactoryFallback.INSTANCE.getAuthorityCodes(Datum.class)); assertSetEquals(Arrays.asList("4978", "4984", "4936"), EPSGFactoryFallback.INSTANCE.getAuthorityCodes(GeocentricCRS.class)); - assertSetEquals(Arrays.asList("4326", "4322", "4047", "4269", "4267", "4258", "4230", "4979", "4985", "4937"), + assertSetEquals(Arrays.asList("4326", "4322", "4019", "4047", "4269", "4267", "4258", "4230", "4979", "4985", "4937"), EPSGFactoryFallback.INSTANCE.getAuthorityCodes(GeographicCRS.class)); assertSetEquals(Arrays.asList("5714", "5715", "5703"), EPSGFactoryFallback.INSTANCE.getAuthorityCodes(VerticalCRS.class));
