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 {
