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 &nbsp;(<i>datum:</i> 
6019, &nbsp;<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));

Reply via email to