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 a5c010b654410c9775b1550b38af3021ccafeae7
Author: Martin Desruisseaux <[email protected]>
AuthorDate: Tue Jul 26 14:08:08 2022 +0200

    Use a spherical model for GCOM-C data with Sinusoidal Equal Area projection.
---
 .../main/java/org/apache/sis/internal/earth/netcdf/GCOM_C.java   | 9 ++++++++-
 .../java/org/apache/sis/internal/earth/netcdf/package-info.java  | 2 +-
 .../src/main/java/org/apache/sis/internal/netcdf/Convention.java | 4 ++++
 .../main/java/org/apache/sis/internal/netcdf/GridMapping.java    | 5 ++++-
 4 files changed, 17 insertions(+), 3 deletions(-)

diff --git 
a/profiles/sis-japan-profile/src/main/java/org/apache/sis/internal/earth/netcdf/GCOM_C.java
 
b/profiles/sis-japan-profile/src/main/java/org/apache/sis/internal/earth/netcdf/GCOM_C.java
index e81c9efb36..d21d264952 100644
--- 
a/profiles/sis-japan-profile/src/main/java/org/apache/sis/internal/earth/netcdf/GCOM_C.java
+++ 
b/profiles/sis-japan-profile/src/main/java/org/apache/sis/internal/earth/netcdf/GCOM_C.java
@@ -117,7 +117,7 @@ import ucar.nc2.constants.CF;
  *
  * @author  Alexis Manin (Geomatys)
  * @author  Martin Desruisseaux (Geomatys)
- * @version 1.2
+ * @version 1.3
  *
  * @see <a href="http://global.jaxa.jp/projects/sat/gcom_c/";>SHIKISAI (GCOM-C) 
on JAXA</a>
  * @see <a 
href="https://en.wikipedia.org/wiki/Global_Change_Observation_Mission";>GCOM on 
Wikipedia</a>
@@ -361,11 +361,13 @@ public final class GCOM_C extends Convention {
         if (name == null) {
             return super.projection(node);
         }
+        Number radius = null;
         final String method;
         final int s = name.indexOf(' ');
         final String code = (s >= 0) ? name.substring(0, s) : name;
         if (code.equalsIgnoreCase("EQA")) {
             method = Sinusoidal.NAME;
+            radius = 6371000;           // "Not specified (based on Authalic 
Sphere)" datum (EPSG:6035).
         } else if (code.equalsIgnoreCase("EQR")) {
             method = Equirectangular.NAME;
         } else if (code.equalsIgnoreCase("PS")) {
@@ -376,6 +378,11 @@ public final class GCOM_C extends Convention {
         final Map<String,Object> definition = new HashMap<>(4);
         definition.put(CF.GRID_MAPPING_NAME, method);
         definition.put(CONVERSION_NAME, name);
+        if (radius != null) {
+            definition.put(CF.SEMI_MAJOR_AXIS, radius);
+            definition.put(CF.SEMI_MINOR_AXIS, radius);
+            definition.put(ELLIPSOID_NAME, "Authalic sphere");
+        }
         return definition;
     }
 
diff --git 
a/profiles/sis-japan-profile/src/main/java/org/apache/sis/internal/earth/netcdf/package-info.java
 
b/profiles/sis-japan-profile/src/main/java/org/apache/sis/internal/earth/netcdf/package-info.java
index 1381a2a517..e0f420d726 100644
--- 
a/profiles/sis-japan-profile/src/main/java/org/apache/sis/internal/earth/netcdf/package-info.java
+++ 
b/profiles/sis-japan-profile/src/main/java/org/apache/sis/internal/earth/netcdf/package-info.java
@@ -21,7 +21,7 @@
  *
  * @author  Alexis Manin (Geomatys)
  * @author  Martin Desruisseaux (Geomatys)
- * @version 1.1
+ * @version 1.3
  * @since   1.0
  * @module
  */
diff --git 
a/storage/sis-netcdf/src/main/java/org/apache/sis/internal/netcdf/Convention.java
 
b/storage/sis-netcdf/src/main/java/org/apache/sis/internal/netcdf/Convention.java
index f14865a487..67ea796b7a 100644
--- 
a/storage/sis-netcdf/src/main/java/org/apache/sis/internal/netcdf/Convention.java
+++ 
b/storage/sis-netcdf/src/main/java/org/apache/sis/internal/netcdf/Convention.java
@@ -459,6 +459,10 @@ public class Convention {
      *     <td>{@link Number} or {@code double[]}</td>
      *     <td>Map projection parameter values</td>
      *   </tr><tr>
+     *     <td>{@value CF#SEMI_MAJOR_AXIS} and {@value CF#SEMI_MINOR_AXIS}</td>
+     *     <td>{@link Number}</td>
+     *     <td>Ellipsoid axis lengths.</td>
+     *   </tr><tr>
      *     <td>{@value #TOWGS84}</td>
      *     <td>{@link BursaWolfParameters}</td>
      *     <td>Datum shift information.</td>
diff --git 
a/storage/sis-netcdf/src/main/java/org/apache/sis/internal/netcdf/GridMapping.java
 
b/storage/sis-netcdf/src/main/java/org/apache/sis/internal/netcdf/GridMapping.java
index 54c914905d..839e69c98b 100644
--- 
a/storage/sis-netcdf/src/main/java/org/apache/sis/internal/netcdf/GridMapping.java
+++ 
b/storage/sis-netcdf/src/main/java/org/apache/sis/internal/netcdf/GridMapping.java
@@ -309,7 +309,10 @@ final class GridMapping {
             meridian = defaultDefinitions.primeMeridian();
         }
         /*
-         * Ellipsoid built from "semi_major_axis", "semi_minor_axis", etc.
+         * Ellipsoid built from "semi_major_axis" and "semi_minor_axis" 
parameters. Note that it is okay
+         * to use the OGC name (e.g. "semi_major") instead of the netCDF name 
(e.g. ""semi_major_axis").
+         * The Apache SIS implementation of parameter value group understands 
the aliases. Using the OGC
+         * names is safer because they should be understood by most map 
projection implementations.
          */
         Ellipsoid ellipsoid;
         try {

Reply via email to