sis-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From desruisse...@apache.org
Subject svn commit: r1737251 - in /sis/branches/JDK8/core: sis-metadata/src/main/java/org/apache/sis/internal/metadata/ sis-metadata/src/main/java/org/apache/sis/io/wkt/ sis-referencing/src/main/java/org/apache/sis/internal/jaxb/referencing/ sis-referencing/sr...
Date Thu, 31 Mar 2016 15:43:01 GMT
Author: desruisseaux
Date: Thu Mar 31 15:43:00 2016
New Revision: 1737251

URL: http://svn.apache.org/viewvc?rev=1737251&view=rev
Log:
Complete JAXB annotation on ParametricCRS related classes and add JAXB adapter.
Add the parametric case in EPSGDataAccess.
Javadoc and formatting.

Added:
    sis/branches/JDK8/core/sis-referencing/src/main/java/org/apache/sis/internal/jaxb/referencing/CD_ParametricDatum.java
      - copied, changed from r1737213, sis/branches/JDK8/core/sis-referencing/src/main/java/org/apache/sis/internal/jaxb/referencing/CD_EngineeringDatum.java
    sis/branches/JDK8/core/sis-referencing/src/main/java/org/apache/sis/internal/jaxb/referencing/CS_ParametricCS.java
      - copied, changed from r1737213, sis/branches/JDK8/core/sis-referencing/src/main/java/org/apache/sis/internal/jaxb/referencing/CS_UserDefinedCS.java
Modified:
    sis/branches/JDK8/core/sis-metadata/src/main/java/org/apache/sis/internal/metadata/WKTKeywords.java
    sis/branches/JDK8/core/sis-metadata/src/main/java/org/apache/sis/io/wkt/GeodeticObjectParser.java
    sis/branches/JDK8/core/sis-referencing/src/main/java/org/apache/sis/referencing/crs/AbstractCRS.java
    sis/branches/JDK8/core/sis-referencing/src/main/java/org/apache/sis/referencing/crs/DefaultCompoundCRS.java
    sis/branches/JDK8/core/sis-referencing/src/main/java/org/apache/sis/referencing/crs/DefaultDerivedCRS.java
    sis/branches/JDK8/core/sis-referencing/src/main/java/org/apache/sis/referencing/crs/DefaultEngineeringCRS.java
    sis/branches/JDK8/core/sis-referencing/src/main/java/org/apache/sis/referencing/crs/DefaultGeocentricCRS.java
    sis/branches/JDK8/core/sis-referencing/src/main/java/org/apache/sis/referencing/crs/DefaultGeographicCRS.java
    sis/branches/JDK8/core/sis-referencing/src/main/java/org/apache/sis/referencing/crs/DefaultImageCRS.java
    sis/branches/JDK8/core/sis-referencing/src/main/java/org/apache/sis/referencing/crs/DefaultParametricCRS.java
    sis/branches/JDK8/core/sis-referencing/src/main/java/org/apache/sis/referencing/crs/DefaultProjectedCRS.java
    sis/branches/JDK8/core/sis-referencing/src/main/java/org/apache/sis/referencing/crs/DefaultTemporalCRS.java
    sis/branches/JDK8/core/sis-referencing/src/main/java/org/apache/sis/referencing/crs/DefaultVerticalCRS.java
    sis/branches/JDK8/core/sis-referencing/src/main/java/org/apache/sis/referencing/crs/package-info.java
    sis/branches/JDK8/core/sis-referencing/src/main/java/org/apache/sis/referencing/cs/AbstractCS.java
    sis/branches/JDK8/core/sis-referencing/src/main/java/org/apache/sis/referencing/cs/DefaultParametricCS.java
    sis/branches/JDK8/core/sis-referencing/src/main/java/org/apache/sis/referencing/datum/AbstractDatum.java
    sis/branches/JDK8/core/sis-referencing/src/main/java/org/apache/sis/referencing/datum/DefaultParametricDatum.java
    sis/branches/JDK8/core/sis-referencing/src/main/java/org/apache/sis/referencing/factory/GeodeticAuthorityFactory.java
    sis/branches/JDK8/core/sis-referencing/src/main/java/org/apache/sis/referencing/factory/GeodeticObjectFactory.java
    sis/branches/JDK8/core/sis-referencing/src/main/java/org/apache/sis/referencing/factory/sql/EPSGDataAccess.java
    sis/branches/JDK8/core/sis-referencing/src/test/java/org/apache/sis/io/wkt/WKTParserTest.java

Modified: sis/branches/JDK8/core/sis-metadata/src/main/java/org/apache/sis/internal/metadata/WKTKeywords.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK8/core/sis-metadata/src/main/java/org/apache/sis/internal/metadata/WKTKeywords.java?rev=1737251&r1=1737250&r2=1737251&view=diff
==============================================================================
--- sis/branches/JDK8/core/sis-metadata/src/main/java/org/apache/sis/internal/metadata/WKTKeywords.java [UTF-8] (original)
+++ sis/branches/JDK8/core/sis-metadata/src/main/java/org/apache/sis/internal/metadata/WKTKeywords.java [UTF-8] Thu Mar 31 15:43:00 2016
@@ -34,8 +34,9 @@ import org.apache.sis.util.Static;
  * This class is intended to be used only at compile-time and could be omitted from the JAR file.</div>
  *
  * @author  Martin Desruisseaux (Geomatys)
+ * @author  Johann Sorel (Geomatys)
  * @since   0.6
- * @version 0.6
+ * @version 0.7
  * @module
  *
  * @see <a href="http://docs.opengeospatial.org/is/12-063r5/12-063r5.html">WKT 2 specification</a>

Modified: sis/branches/JDK8/core/sis-metadata/src/main/java/org/apache/sis/io/wkt/GeodeticObjectParser.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK8/core/sis-metadata/src/main/java/org/apache/sis/io/wkt/GeodeticObjectParser.java?rev=1737251&r1=1737250&r2=1737251&view=diff
==============================================================================
--- sis/branches/JDK8/core/sis-metadata/src/main/java/org/apache/sis/io/wkt/GeodeticObjectParser.java [UTF-8] (original)
+++ sis/branches/JDK8/core/sis-metadata/src/main/java/org/apache/sis/io/wkt/GeodeticObjectParser.java [UTF-8] Thu Mar 31 15:43:00 2016
@@ -86,6 +86,7 @@ import static java.util.Collections.sing
  *
  * @author  Rémi Eve (IRD)
  * @author  Martin Desruisseaux (IRD, Geomatys)
+ * @author  Johann Sorel (Geomatys)
  * @since   0.6
  * @version 0.7
  * @module
@@ -307,7 +308,7 @@ final class GeodeticObjectParser extends
             verticalElements = null;
             verticalCRS = null;
             axisOrder.clear();
-            properties.clear();     // for letting the garbage collector do its work.
+            properties.clear();                             // for letting the garbage collector do its work.
         }
         return object;
     }
@@ -706,7 +707,7 @@ final class GeodeticObjectParser extends
                                 new String[] {WKTKeywords.CS, type}, element.offset);
                     }
                 }
-                if (dimension <= 0 || dimension > 1000) {  // Arbitrary upper limit against badly formed CS.
+                if (dimension <= 0 || dimension > 1000) {       // Arbitrary upper limit against badly formed CS.
                     final short key;
                     final Object[] args;
                     if (dimension <= 0) {
@@ -741,7 +742,7 @@ final class GeodeticObjectParser extends
             } while (axis != null);
             if (!isWKT1 || !ignoreAxes) {
                 axes = list.toArray(new CoordinateSystemAxis[list.size()]);
-                Arrays.sort(axes, this);  // Take ORDER[n] elements in account.
+                Arrays.sort(axes, this);                    // Take ORDER[n] elements in account.
             }
         }
         /*
@@ -753,13 +754,13 @@ final class GeodeticObjectParser extends
             if (type == null) {
                 throw parent.missingComponent(WKTKeywords.Axis);
             }
-            String nx = null, x = null;             // Easting or Longitude axis name and abbreviation.
-            String ny = null, y = null;             // Northing or latitude axis name and abbreviation.
-            String nz = null, z = null;             // Depth, height or time axis name and abbreviation.
+            String nx = null, x = null;                     // Easting or Longitude axis name and abbreviation.
+            String ny = null, y = null;                     // Northing or latitude axis name and abbreviation.
+            String nz = null, z = null;                     // Depth, height or time axis name and abbreviation.
             AxisDirection dx = AxisDirection.EAST;
             AxisDirection dy = AxisDirection.NORTH;
-            AxisDirection direction = null;         // Depth, height or time axis direction.
-            Unit<?> unit = defaultUnit;             // Depth, height or time axis unit.
+            AxisDirection direction = null;                 // Depth, height or time axis direction.
+            Unit<?> unit = defaultUnit;                     // Depth, height or time axis unit.
             switch (type) {
                 /*
                  * Cartesian — we can create axes only for geodetic datum, in which case the axes are for
@@ -850,7 +851,7 @@ final class GeodeticObjectParser extends
                     z = "t";
                     break;
                 }
-                 /*
+                /*
                  * Parametric — axis name and abbreviation not yet specified by ISO 19111_2.
                  */
                 case WKTKeywords.parametric: {
@@ -907,7 +908,7 @@ final class GeodeticObjectParser extends
                     case 2: return csFactory.createEllipsoidalCS(csProperties, axes[0], axes[1]);
                     case 3: return csFactory.createEllipsoidalCS(csProperties, axes[0], axes[1], axes[2]);
                 }
-                dimension = (axes.length < 2) ? 2 : 3;  // For error message.
+                dimension = (axes.length < 2) ? 2 : 3;                      // For error message.
                 break;
             }
             case WKTKeywords.Cartesian: {
@@ -915,7 +916,7 @@ final class GeodeticObjectParser extends
                     case 2: return csFactory.createCartesianCS(csProperties, axes[0], axes[1]);
                     case 3: return csFactory.createCartesianCS(csProperties, axes[0], axes[1], axes[2]);
                 }
-                dimension = (axes.length < 2) ? 2 : 3;  // For error message.
+                dimension = (axes.length < 2) ? 2 : 3;                      // For error message.
                 break;
             }
             case WKTKeywords.affine: {
@@ -923,7 +924,7 @@ final class GeodeticObjectParser extends
                     case 2: return csFactory.createAffineCS(csProperties, axes[0], axes[1]);
                     case 3: return csFactory.createAffineCS(csProperties, axes[0], axes[1], axes[2]);
                 }
-                dimension = (axes.length < 2) ? 2 : 3;  // For error message.
+                dimension = (axes.length < 2) ? 2 : 3;                      // For error message.
                 break;
             }
             case WKTKeywords.vertical: {
@@ -951,6 +952,7 @@ final class GeodeticObjectParser extends
                 return csFactory.createSphericalCS(csProperties, axes[0], axes[1], axes[2]);
             }
             case WKTKeywords.parametric: {
+                if (axes.length != (dimension = 1)) break;
                 return csFactory.createParametricCS(csProperties, axes[0]);
             }
             default: {
@@ -1097,9 +1099,9 @@ final class GeodeticObjectParser extends
             if (n2 != null) {
                 return n1 - n2;
             }
-            return -1;  // Axis 1 before Axis 2 since the later has no 'ORDER' element.
+            return -1;                      // Axis 1 before Axis 2 since the later has no 'ORDER' element.
         } else if (n2 != null) {
-            return +1;  // Axis 2 before Axis 1 since the later has no 'ORDER' element.
+            return +1;                      // Axis 2 before Axis 1 since the later has no 'ORDER' element.
         }
         return 0;
     }
@@ -1171,7 +1173,7 @@ final class GeodeticObjectParser extends
         for (int i=0; i<values.length;) {
             values[i] = element.pullDouble(ToWGS84[i]);
             if ((++i % 3) == 0 && element.isEmpty()) {
-                break;  // It is legal to have only 3 or 6 elements.
+                break;                                              // It is legal to have only 3 or 6 elements.
             }
         }
         element.close(ignoredElements);
@@ -1209,7 +1211,7 @@ final class GeodeticObjectParser extends
         }
         final Map<String,?> properties = parseMetadataAndClose(element, name, null);
         try {
-            if (inverseFlattening == 0) {   // OGC convention for a sphere.
+            if (inverseFlattening == 0) {                           // OGC convention for a sphere.
                 return datumFactory.createEllipsoid(properties, semiMajorAxis, semiMajorAxis, unit);
             } else {
                 return datumFactory.createFlattenedSphere(properties, semiMajorAxis, inverseFlattening, unit);
@@ -1469,7 +1471,7 @@ final class GeodeticObjectParser extends
         if (element == null) {
             return null;
         }
-        final String  name   = element.pullString ("name");
+        final String name = element.pullString("name");
         try {
             return datumFactory.createParametricDatum(parseAnchorAndClose(element, name));
         } catch (FactoryException exception) {
@@ -1503,9 +1505,9 @@ final class GeodeticObjectParser extends
         if (element == null) {
             return null;
         }
-        final String name  = element.pullString ("name");
+        final String name = element.pullString("name");
         if (isWKT1) {
-            element.pullInteger("datum");   // Ignored for now.
+            element.pullInteger("datum");                                       // Ignored for now.
         }
         try {
             return datumFactory.createEngineeringDatum(parseAnchorAndClose(element, name));
@@ -1558,14 +1560,14 @@ final class GeodeticObjectParser extends
             throws ParseException
     {
         final Element element = parent.pullElement(mode,
-                isBaseCRS ? new String[] {WKTKeywords.BaseEngCRS}       // WKT 2 in DerivedCRS
-                          : new String[] {WKTKeywords.EngineeringCRS,   // [0]  WKT 2
-                                          WKTKeywords.EngCRS,           // [1]  WKT 2
-                                          WKTKeywords.Local_CS});       // [2]  WKT 1
+                isBaseCRS ? new String[] {WKTKeywords.BaseEngCRS}               // WKT 2 in DerivedCRS
+                          : new String[] {WKTKeywords.EngineeringCRS,           // [0]  WKT 2
+                                          WKTKeywords.EngCRS,                   // [1]  WKT 2
+                                          WKTKeywords.Local_CS});               // [2]  WKT 1
         if (element == null) {
             return null;
         }
-        final boolean isWKT1 = element.getKeywordIndex() == 2;  // Index of "Local_CS" above.
+        final boolean isWKT1 = element.getKeywordIndex() == 2;                  // Index of "Local_CS" above.
         final String  name   = element.pullString("name");
         final Unit<?> unit   = parseUnit(element);
         /*
@@ -1602,7 +1604,7 @@ final class GeodeticObjectParser extends
                 }
             }
         }
-        if (baseCRS == null) {  // The most usual case.
+        if (baseCRS == null) {                                                  // The most usual case.
             datum = parseEngineeringDatum(MANDATORY, element, isWKT1);
         }
         try {
@@ -1678,12 +1680,12 @@ final class GeodeticObjectParser extends
             throws ParseException
     {
         final Element element = parent.pullElement(mode,
-                (csType != null) ? new String[] {WKTKeywords.BaseGeodCRS,    // [0]  WKT 2 in ProjectedCRS or DerivedCRS
-                                                 WKTKeywords.GeogCS}         // [1]  WKT 1 in ProjectedCRS
-                                 : new String[] {WKTKeywords.GeodeticCRS,    // [0]  WKT 2
-                                                 WKTKeywords.GeogCS,         // [1]  WKT 1
-                                                 WKTKeywords.GeodCRS,        // [2]  WKT 2
-                                                 WKTKeywords.GeocCS});       // [3]  WKT 1
+                (csType != null) ? new String[] {WKTKeywords.BaseGeodCRS,       // [0]  WKT 2 in ProjectedCRS or DerivedCRS
+                                                 WKTKeywords.GeogCS}            // [1]  WKT 1 in ProjectedCRS
+                                 : new String[] {WKTKeywords.GeodeticCRS,       // [0]  WKT 2
+                                                 WKTKeywords.GeogCS,            // [1]  WKT 1
+                                                 WKTKeywords.GeodCRS,           // [2]  WKT 2
+                                                 WKTKeywords.GeocCS});          // [3]  WKT 1
         if (element == null) {
             return null;
         }
@@ -1722,7 +1724,7 @@ final class GeodeticObjectParser extends
                          * We recognize those cases by a non-null 'csType' given in argument to this method.
                          */
                         if (WKTKeywords.ellipsoidal.equals(csType)) {
-                            csUnit = NonSI.DEGREE_ANGLE;   // For BaseGeodCRS in ProjectedCRS.
+                            csUnit = NonSI.DEGREE_ANGLE;                        // For BaseGeodCRS in ProjectedCRS.
                         }
                     }
                 }
@@ -1803,11 +1805,11 @@ final class GeodeticObjectParser extends
             if (cs instanceof EllipsoidalCS) {  // By far the most frequent case.
                 return crsFactory.createGeographicCRS(properties, datum, (EllipsoidalCS) cs);
             }
-            if (cs instanceof CartesianCS) {    // The second most frequent case.
+            if (cs instanceof CartesianCS) {                                    // The second most frequent case.
                 return crsFactory.createGeocentricCRS(properties, datum,
                         referencing.upgradeGeocentricCS((CartesianCS) cs));
             }
-            if (cs instanceof SphericalCS) {    // Not very common case.
+            if (cs instanceof SphericalCS) {                                    // Not very common case.
                 return crsFactory.createGeocentricCRS(properties, datum, (SphericalCS) cs);
             }
         } catch (FactoryException exception) {
@@ -1836,14 +1838,14 @@ final class GeodeticObjectParser extends
             throws ParseException
     {
         final Element element = parent.pullElement(mode,
-                isBaseCRS ? new String[] {WKTKeywords.BaseVertCRS}    // WKT 2 in DerivedCRS
-                          : new String[] {WKTKeywords.VerticalCRS,    // [0]  WKT 2
-                                          WKTKeywords.VertCRS,        // [1]  WKT 2
-                                          WKTKeywords.Vert_CS});      // [2]  WKT 1
+                isBaseCRS ? new String[] {WKTKeywords.BaseVertCRS}              // WKT 2 in DerivedCRS
+                          : new String[] {WKTKeywords.VerticalCRS,              // [0]  WKT 2
+                                          WKTKeywords.VertCRS,                  // [1]  WKT 2
+                                          WKTKeywords.Vert_CS});                // [2]  WKT 1
         if (element == null) {
             return null;
         }
-        final boolean isWKT1 = element.getKeywordIndex() == 2;  // Index of "Vert_CS" above.
+        final boolean isWKT1 = element.getKeywordIndex() == 2;                  // Index of "Vert_CS" above.
         final String  name   = element.pullString("name");
         final Unit<?> unit   = parseUnit(element);
         /*
@@ -1869,7 +1871,7 @@ final class GeodeticObjectParser extends
                 baseCRS = parseVerticalCRS(MANDATORY, element, true);
             }
         }
-        if (baseCRS == null) {                                                              // The most usual case.
+        if (baseCRS == null) {                                                  // The most usual case.
             datum = parseVerticalDatum(MANDATORY, element, isWKT1);
         }
         final CoordinateSystem cs;
@@ -1948,7 +1950,7 @@ final class GeodeticObjectParser extends
                 baseCRS = parseTimeCRS(MANDATORY, element, true);
             }
         }
-        if (baseCRS == null) {  // The most usual case.
+        if (baseCRS == null) {                                                  // The most usual case.
             datum = parseTimeDatum(MANDATORY, element);
         }
         final CoordinateSystem cs;
@@ -1983,15 +1985,15 @@ final class GeodeticObjectParser extends
         if (element == null) {
             return null;
         }
-        final String  name   = element.pullString("name");
-        final Unit<?> unit   = parseUnit(element);
+        final String  name = element.pullString("name");
+        final Unit<?> unit = parseUnit(element);
         /*
          * A ParametricCRS can be either a "normal" one (with a non-null datum), or a DerivedCRS of kind ParametricCRS.
          * In the later case, the datum is null and we have instead DerivingConversion element from a BaseParametricCRS.
          */
-        ParametricDatum datum  = null;
-        SingleCRS     baseCRS  = null;
-        Conversion    fromBase = null;
+        ParametricDatum datum    = null;
+        SingleCRS       baseCRS  = null;
+        Conversion      fromBase = null;
         if (!isBaseCRS) {
             /*
              * UNIT[…] in DerivedCRS parameters are mandatory according ISO 19162 and the specification does not said
@@ -2008,7 +2010,7 @@ final class GeodeticObjectParser extends
                 baseCRS = parseParametricCRS(MANDATORY, element, true);
             }
         }
-        if (baseCRS == null) {  // The most usual case.
+        if (baseCRS == null) {                                                  // The most usual case.
             datum = parseParametricDatum(MANDATORY, element);
         }
         final CoordinateSystem cs;
@@ -2048,15 +2050,15 @@ final class GeodeticObjectParser extends
             throws ParseException
     {
         final Element element = parent.pullElement(mode,
-                isBaseCRS ? new String[] {WKTKeywords.BaseProjCRS}    // WKT 2 in DerivedCRS
-                          : new String[] {WKTKeywords.ProjectedCRS,   // [0]  WKT 2
-                                          WKTKeywords.ProjCRS,        // [1]  WKT 2
-                                          WKTKeywords.ProjCS});       // [2]  WKT 1
+                isBaseCRS ? new String[] {WKTKeywords.BaseProjCRS}              // WKT 2 in DerivedCRS
+                          : new String[] {WKTKeywords.ProjectedCRS,             // [0]  WKT 2
+                                          WKTKeywords.ProjCRS,                  // [1]  WKT 2
+                                          WKTKeywords.ProjCS});                 // [2]  WKT 1
 
         if (element == null) {
             return null;
         }
-        final boolean   isWKT1 = element.getKeywordIndex() == 2;  // Index of "ProjCS" above.
+        final boolean   isWKT1 = element.getKeywordIndex() == 2;                // Index of "ProjCS" above.
         final String    name   = element.pullString("name");
         final SingleCRS geoCRS = parseGeodeticCRS(MANDATORY, element, 2, WKTKeywords.ellipsoidal);
         if (!(geoCRS instanceof GeographicCRS)) {

Copied: sis/branches/JDK8/core/sis-referencing/src/main/java/org/apache/sis/internal/jaxb/referencing/CD_ParametricDatum.java (from r1737213, sis/branches/JDK8/core/sis-referencing/src/main/java/org/apache/sis/internal/jaxb/referencing/CD_EngineeringDatum.java)
URL: http://svn.apache.org/viewvc/sis/branches/JDK8/core/sis-referencing/src/main/java/org/apache/sis/internal/jaxb/referencing/CD_ParametricDatum.java?p2=sis/branches/JDK8/core/sis-referencing/src/main/java/org/apache/sis/internal/jaxb/referencing/CD_ParametricDatum.java&p1=sis/branches/JDK8/core/sis-referencing/src/main/java/org/apache/sis/internal/jaxb/referencing/CD_EngineeringDatum.java&r1=1737213&r2=1737251&rev=1737251&view=diff
==============================================================================
--- sis/branches/JDK8/core/sis-referencing/src/main/java/org/apache/sis/internal/jaxb/referencing/CD_EngineeringDatum.java [UTF-8] (original)
+++ sis/branches/JDK8/core/sis-referencing/src/main/java/org/apache/sis/internal/jaxb/referencing/CD_ParametricDatum.java [UTF-8] Thu Mar 31 15:43:00 2016
@@ -17,9 +17,9 @@
 package org.apache.sis.internal.jaxb.referencing;
 
 import javax.xml.bind.annotation.XmlElement;
-import org.opengis.referencing.datum.EngineeringDatum;
+import org.opengis.referencing.datum.ParametricDatum;
 import org.apache.sis.internal.jaxb.gco.PropertyType;
-import org.apache.sis.referencing.datum.DefaultEngineeringDatum;
+import org.apache.sis.referencing.datum.DefaultParametricDatum;
 
 
 /**
@@ -28,15 +28,15 @@ import org.apache.sis.referencing.datum.
  *
  * @author  Cédric Briançon (Geomatys)
  * @author  Martin Desruisseaux (Geomatys)
- * @since   0.4
- * @version 0.4
+ * @since   0.7
+ * @version 0.7
  * @module
  */
-public final class CD_EngineeringDatum extends PropertyType<CD_EngineeringDatum, EngineeringDatum> {
+public final class CD_ParametricDatum extends PropertyType<CD_ParametricDatum, ParametricDatum> {
     /**
      * Empty constructor for JAXB only.
      */
-    public CD_EngineeringDatum() {
+    public CD_ParametricDatum() {
     }
 
     /**
@@ -44,42 +44,42 @@ public final class CD_EngineeringDatum e
      * This method is indirectly invoked by the private constructor
      * below, so it shall not depend on the state of this object.
      *
-     * @return {@code EngineeringDatum.class}
+     * @return {@code ParametricDatum.class}
      */
     @Override
-    protected Class<EngineeringDatum> getBoundType() {
-        return EngineeringDatum.class;
+    protected Class<ParametricDatum> getBoundType() {
+        return ParametricDatum.class;
     }
 
     /**
      * Constructor for the {@link #wrap} method only.
      */
-    private CD_EngineeringDatum(final EngineeringDatum datum) {
+    private CD_ParametricDatum(final ParametricDatum datum) {
         super(datum);
     }
 
     /**
      * Invoked by {@link PropertyType} at marshalling time for wrapping the given value
-     * in a {@code <gml:EngineeringDatum>} XML element.
+     * in a {@code <gml:ParametricDatum>} XML element.
      *
      * @param  datum The element to marshall.
      * @return A {@code PropertyType} wrapping the given the element.
      */
     @Override
-    protected CD_EngineeringDatum wrap(final EngineeringDatum datum) {
-        return new CD_EngineeringDatum(datum);
+    protected CD_ParametricDatum wrap(final ParametricDatum datum) {
+        return new CD_ParametricDatum(datum);
     }
 
     /**
      * Invoked by JAXB at marshalling time for getting the actual element to write
-     * inside the {@code <gml:EngineeringDatum>} XML element.
+     * inside the {@code <gml:ParametricDatum>} XML element.
      * This is the value or a copy of the value given in argument to the {@code wrap} method.
      *
      * @return The element to be marshalled.
      */
-    @XmlElement(name = "EngineeringDatum")
-    public DefaultEngineeringDatum getElement() {
-        return DefaultEngineeringDatum.castOrCopy(metadata);
+    @XmlElement(name = "ParametricDatum")
+    public DefaultParametricDatum getElement() {
+        return DefaultParametricDatum.castOrCopy(metadata);
     }
 
     /**
@@ -87,7 +87,7 @@ public final class CD_EngineeringDatum e
      *
      * @param datum The unmarshalled element.
      */
-    public void setElement(final DefaultEngineeringDatum datum) {
+    public void setElement(final DefaultParametricDatum datum) {
         metadata = datum;
     }
 }

Copied: sis/branches/JDK8/core/sis-referencing/src/main/java/org/apache/sis/internal/jaxb/referencing/CS_ParametricCS.java (from r1737213, sis/branches/JDK8/core/sis-referencing/src/main/java/org/apache/sis/internal/jaxb/referencing/CS_UserDefinedCS.java)
URL: http://svn.apache.org/viewvc/sis/branches/JDK8/core/sis-referencing/src/main/java/org/apache/sis/internal/jaxb/referencing/CS_ParametricCS.java?p2=sis/branches/JDK8/core/sis-referencing/src/main/java/org/apache/sis/internal/jaxb/referencing/CS_ParametricCS.java&p1=sis/branches/JDK8/core/sis-referencing/src/main/java/org/apache/sis/internal/jaxb/referencing/CS_UserDefinedCS.java&r1=1737213&r2=1737251&rev=1737251&view=diff
==============================================================================
--- sis/branches/JDK8/core/sis-referencing/src/main/java/org/apache/sis/internal/jaxb/referencing/CS_UserDefinedCS.java [UTF-8] (original)
+++ sis/branches/JDK8/core/sis-referencing/src/main/java/org/apache/sis/internal/jaxb/referencing/CS_ParametricCS.java [UTF-8] Thu Mar 31 15:43:00 2016
@@ -17,8 +17,8 @@
 package org.apache.sis.internal.jaxb.referencing;
 
 import javax.xml.bind.annotation.XmlElement;
-import org.opengis.referencing.cs.UserDefinedCS;
-import org.apache.sis.referencing.cs.DefaultUserDefinedCS;
+import org.opengis.referencing.cs.ParametricCS;
+import org.apache.sis.referencing.cs.DefaultParametricCS;
 import org.apache.sis.internal.jaxb.gco.PropertyType;
 
 
@@ -27,15 +27,15 @@ import org.apache.sis.internal.jaxb.gco.
  * package documentation for more information about JAXB and interface.
  *
  * @author  Martin Desruisseaux (Geomatys)
- * @since   0.4
- * @version 0.4
+ * @since   0.7
+ * @version 0.7
  * @module
  */
-public final class CS_UserDefinedCS extends PropertyType<CS_UserDefinedCS, UserDefinedCS> {
+public final class CS_ParametricCS extends PropertyType<CS_ParametricCS, ParametricCS> {
     /**
      * Empty constructor for JAXB only.
      */
-    public CS_UserDefinedCS() {
+    public CS_ParametricCS() {
     }
 
     /**
@@ -43,42 +43,42 @@ public final class CS_UserDefinedCS exte
      * This method is indirectly invoked by the private constructor
      * below, so it shall not depend on the state of this object.
      *
-     * @return {@code UserDefinedCS.class}
+     * @return {@code ParametricCS.class}
      */
     @Override
-    protected Class<UserDefinedCS> getBoundType() {
-        return UserDefinedCS.class;
+    protected Class<ParametricCS> getBoundType() {
+        return ParametricCS.class;
     }
 
     /**
      * Constructor for the {@link #wrap} method only.
      */
-    private CS_UserDefinedCS(final UserDefinedCS cs) {
+    private CS_ParametricCS(final ParametricCS cs) {
         super(cs);
     }
 
     /**
      * Invoked by {@link PropertyType} at marshalling time for wrapping the given value
-     * in a {@code <gml:UserDefinedCS>} XML element.
+     * in a {@code <gml:ParametricCS>} XML element.
      *
      * @param  cs The element to marshall.
      * @return A {@code PropertyType} wrapping the given the element.
      */
     @Override
-    protected CS_UserDefinedCS wrap(final UserDefinedCS cs) {
-        return new CS_UserDefinedCS(cs);
+    protected CS_ParametricCS wrap(final ParametricCS cs) {
+        return new CS_ParametricCS(cs);
     }
 
     /**
      * Invoked by JAXB at marshalling time for getting the actual element to write
-     * inside the {@code <gml:UserDefinedCS>} XML element.
+     * inside the {@code <gml:ParametricCS>} XML element.
      * This is the value or a copy of the value given in argument to the {@code wrap} method.
      *
      * @return The element to be marshalled.
      */
-    @XmlElement(name = "UserDefinedCS")
-    public DefaultUserDefinedCS getElement() {
-        return DefaultUserDefinedCS.castOrCopy(metadata);
+    @XmlElement(name = "ParametricCS")
+    public DefaultParametricCS getElement() {
+        return DefaultParametricCS.castOrCopy(metadata);
     }
 
     /**
@@ -86,7 +86,7 @@ public final class CS_UserDefinedCS exte
      *
      * @param cs The unmarshalled element.
      */
-    public void setElement(final DefaultUserDefinedCS cs) {
+    public void setElement(final DefaultParametricCS cs) {
         metadata = cs;
     }
 }

Modified: sis/branches/JDK8/core/sis-referencing/src/main/java/org/apache/sis/referencing/crs/AbstractCRS.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK8/core/sis-referencing/src/main/java/org/apache/sis/referencing/crs/AbstractCRS.java?rev=1737251&r1=1737250&r2=1737251&view=diff
==============================================================================
--- sis/branches/JDK8/core/sis-referencing/src/main/java/org/apache/sis/referencing/crs/AbstractCRS.java [UTF-8] (original)
+++ sis/branches/JDK8/core/sis-referencing/src/main/java/org/apache/sis/referencing/crs/AbstractCRS.java [UTF-8] Thu Mar 31 15:43:00 2016
@@ -97,6 +97,7 @@ import java.util.Objects;
     DefaultGeodeticCRS.class,
     DefaultVerticalCRS.class,
     DefaultTemporalCRS.class,
+    DefaultParametricCRS.class,
     DefaultEngineeringCRS.class,
     DefaultImageCRS.class,
     DefaultCompoundCRS.class
@@ -159,12 +160,12 @@ public class AbstractCRS extends Abstrac
      *     <td>{@link #getRemarks()}</td>
      *   </tr>
      *   <tr>
-     *     <td>{@value org.opengis.referencing.datum.Datum#DOMAIN_OF_VALIDITY_KEY}</td>
+     *     <td>{@value org.opengis.referencing.ReferenceSystem#DOMAIN_OF_VALIDITY_KEY}</td>
      *     <td>{@link org.opengis.metadata.extent.Extent}</td>
      *     <td>{@link #getDomainOfValidity()}</td>
      *   </tr>
      *   <tr>
-     *     <td>{@value org.opengis.referencing.datum.Datum#SCOPE_KEY}</td>
+     *     <td>{@value org.opengis.referencing.ReferenceSystem#SCOPE_KEY}</td>
      *     <td>{@link org.opengis.util.InternationalString} or {@link String}</td>
      *     <td>{@link #getScope()}</td>
      *   </tr>

Modified: sis/branches/JDK8/core/sis-referencing/src/main/java/org/apache/sis/referencing/crs/DefaultCompoundCRS.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK8/core/sis-referencing/src/main/java/org/apache/sis/referencing/crs/DefaultCompoundCRS.java?rev=1737251&r1=1737250&r2=1737251&view=diff
==============================================================================
--- sis/branches/JDK8/core/sis-referencing/src/main/java/org/apache/sis/referencing/crs/DefaultCompoundCRS.java [UTF-8] (original)
+++ sis/branches/JDK8/core/sis-referencing/src/main/java/org/apache/sis/referencing/crs/DefaultCompoundCRS.java [UTF-8] Thu Mar 31 15:43:00 2016
@@ -170,12 +170,12 @@ public class DefaultCompoundCRS extends
      *     <td>{@link #getRemarks()}</td>
      *   </tr>
      *   <tr>
-     *     <td>{@value org.opengis.referencing.datum.Datum#DOMAIN_OF_VALIDITY_KEY}</td>
+     *     <td>{@value org.opengis.referencing.ReferenceSystem#DOMAIN_OF_VALIDITY_KEY}</td>
      *     <td>{@link org.opengis.metadata.extent.Extent}</td>
      *     <td>{@link #getDomainOfValidity()}</td>
      *   </tr>
      *   <tr>
-     *     <td>{@value org.opengis.referencing.datum.Datum#SCOPE_KEY}</td>
+     *     <td>{@value org.opengis.referencing.ReferenceSystem#SCOPE_KEY}</td>
      *     <td>{@link org.opengis.util.InternationalString} or {@link String}</td>
      *     <td>{@link #getScope()}</td>
      *   </tr>

Modified: sis/branches/JDK8/core/sis-referencing/src/main/java/org/apache/sis/referencing/crs/DefaultDerivedCRS.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK8/core/sis-referencing/src/main/java/org/apache/sis/referencing/crs/DefaultDerivedCRS.java?rev=1737251&r1=1737250&r2=1737251&view=diff
==============================================================================
--- sis/branches/JDK8/core/sis-referencing/src/main/java/org/apache/sis/referencing/crs/DefaultDerivedCRS.java [UTF-8] (original)
+++ sis/branches/JDK8/core/sis-referencing/src/main/java/org/apache/sis/referencing/crs/DefaultDerivedCRS.java [UTF-8] Thu Mar 31 15:43:00 2016
@@ -27,6 +27,7 @@ import org.opengis.referencing.datum.Dat
 import org.opengis.referencing.datum.GeodeticDatum;
 import org.opengis.referencing.datum.VerticalDatum;
 import org.opengis.referencing.datum.TemporalDatum;
+import org.opengis.referencing.datum.ParametricDatum;
 import org.opengis.referencing.datum.EngineeringDatum;
 import org.opengis.referencing.crs.SingleCRS;
 import org.opengis.referencing.crs.DerivedCRS;
@@ -34,11 +35,13 @@ import org.opengis.referencing.crs.Geode
 import org.opengis.referencing.crs.VerticalCRS;
 import org.opengis.referencing.crs.TemporalCRS;
 import org.opengis.referencing.crs.ProjectedCRS;
+import org.opengis.referencing.crs.ParametricCRS;
 import org.opengis.referencing.crs.EngineeringCRS;
 import org.opengis.referencing.crs.CoordinateReferenceSystem;
 import org.opengis.referencing.cs.CoordinateSystem;
 import org.opengis.referencing.cs.VerticalCS;
 import org.opengis.referencing.cs.TimeCS;
+import org.opengis.referencing.cs.ParametricCS;
 import org.opengis.referencing.operation.Conversion;
 import org.opengis.referencing.operation.OperationMethod;
 import org.opengis.referencing.operation.MathTransform;
@@ -59,9 +62,6 @@ import org.apache.sis.io.wkt.Formattable
 import org.apache.sis.io.wkt.Formatter;
 import org.apache.sis.util.ComparisonMode;
 import org.apache.sis.util.Classes;
-import org.opengis.referencing.crs.ParametricCRS;
-import org.opengis.referencing.cs.ParametricCS;
-import org.opengis.referencing.datum.ParametricDatum;
 
 
 /**
@@ -93,6 +93,7 @@ import org.opengis.referencing.datum.Par
  * synchronization.
  *
  * @author  Martin Desruisseaux (IRD, Geomatys)
+ * @author  Johann Sorel (Geomatys)
  * @since   0.6
  * @version 0.7
  * @module
@@ -145,12 +146,12 @@ public class DefaultDerivedCRS extends A
      *     <td>{@link #getRemarks()}</td>
      *   </tr>
      *   <tr>
-     *     <td>{@value org.opengis.referencing.datum.Datum#DOMAIN_OF_VALIDITY_KEY}</td>
+     *     <td>{@value org.opengis.referencing.ReferenceSystem#DOMAIN_OF_VALIDITY_KEY}</td>
      *     <td>{@link org.opengis.metadata.extent.Extent}</td>
      *     <td>{@link #getDomainOfValidity()}</td>
      *   </tr>
      *   <tr>
-     *     <td>{@value org.opengis.referencing.datum.Datum#SCOPE_KEY}</td>
+     *     <td>{@value org.opengis.referencing.ReferenceSystem#SCOPE_KEY}</td>
      *     <td>{@link org.opengis.util.InternationalString} or {@link String}</td>
      *     <td>{@link #getScope()}</td>
      *   </tr>
@@ -290,10 +291,10 @@ public class DefaultDerivedCRS extends A
         if (baseCRS != null && derivedCS != null) {
             final String type = getType(baseCRS, derivedCS);
             if (type != null) switch (type) {
-                case WKTKeywords.GeodeticCRS: return new Geodetic(properties, (GeodeticCRS) baseCRS, conversion,              derivedCS);
-                case WKTKeywords.VerticalCRS: return new Vertical(properties, (VerticalCRS) baseCRS, conversion, (VerticalCS) derivedCS);
-                case WKTKeywords.TimeCRS:     return new Temporal(properties, (TemporalCRS) baseCRS, conversion,     (TimeCS) derivedCS);
-                case WKTKeywords.ParametricCRS:return new Parametric(properties,(ParametricCRS)baseCRS,conversion,(ParametricCS)derivedCS);
+                case WKTKeywords.GeodeticCRS:   return new Geodetic  (properties, (GeodeticCRS)   baseCRS, conversion,                derivedCS);
+                case WKTKeywords.VerticalCRS:   return new Vertical  (properties, (VerticalCRS)   baseCRS, conversion,   (VerticalCS) derivedCS);
+                case WKTKeywords.TimeCRS:       return new Temporal  (properties, (TemporalCRS)   baseCRS, conversion,       (TimeCS) derivedCS);
+                case WKTKeywords.ParametricCRS: return new Parametric(properties, (ParametricCRS) baseCRS, conversion, (ParametricCS) derivedCS);
                 case WKTKeywords.EngineeringCRS: {
                     /*
                      * This case may happen for baseCRS of kind GeodeticCRS, ProjectedCRS or EngineeringCRS.
@@ -344,10 +345,10 @@ public class DefaultDerivedCRS extends A
         if (baseCRS != null && derivedCS != null) {
             final String type = getType(baseCRS, derivedCS);
             if (type != null) switch (type) {
-                case WKTKeywords.GeodeticCRS: return new Geodetic(properties, (GeodeticCRS) baseCRS, interpolationCRS, method, baseToDerived,              derivedCS);
-                case WKTKeywords.VerticalCRS: return new Vertical(properties, (VerticalCRS) baseCRS, interpolationCRS, method, baseToDerived, (VerticalCS) derivedCS);
-                case WKTKeywords.TimeCRS:     return new Temporal(properties, (TemporalCRS) baseCRS, interpolationCRS, method, baseToDerived,     (TimeCS) derivedCS);
-                case WKTKeywords.ParametricCRS:return new Parametric(properties,(ParametricCRS)baseCRS,interpolationCRS,method,baseToDerived,(ParametricCS)derivedCS);
+                case WKTKeywords.GeodeticCRS:   return new Geodetic  (properties, (GeodeticCRS)   baseCRS, interpolationCRS, method, baseToDerived,                derivedCS);
+                case WKTKeywords.VerticalCRS:   return new Vertical  (properties, (VerticalCRS)   baseCRS, interpolationCRS, method, baseToDerived,  (VerticalCS)  derivedCS);
+                case WKTKeywords.TimeCRS:       return new Temporal  (properties, (TemporalCRS)   baseCRS, interpolationCRS, method, baseToDerived,      (TimeCS)  derivedCS);
+                case WKTKeywords.ParametricCRS: return new Parametric(properties, (ParametricCRS) baseCRS, interpolationCRS, method, baseToDerived, (ParametricCS) derivedCS);
                 case WKTKeywords.EngineeringCRS: {
                     if (baseCRS instanceof EngineeringCRS) {
                         // See the comment in create(Map, SingleCRS, Conversion, CoordinateSystem)
@@ -379,8 +380,8 @@ public class DefaultDerivedCRS extends A
                 case WKTKeywords.GeodeticCRS:    return new Geodetic   (object);
                 case WKTKeywords.VerticalCRS:    return new Vertical   (object);
                 case WKTKeywords.TimeCRS:        return new Temporal   (object);
-                case WKTKeywords.EngineeringCRS: return new Engineering(object);
                 case WKTKeywords.ParametricCRS:  return new Parametric (object);
+                case WKTKeywords.EngineeringCRS: return new Engineering(object);
             }
             return new DefaultDerivedCRS(object);
         }
@@ -629,6 +630,8 @@ public class DefaultDerivedCRS extends A
             return WKTKeywords.VerticalCRS;
         } else if (TemporalCRS.class.isAssignableFrom(type) && derivedCS instanceof TimeCS) {
             return WKTKeywords.TimeCRS;
+        } else if (ParametricCRS.class.isAssignableFrom(type) && derivedCS instanceof ParametricCS) {
+            return WKTKeywords.ParametricCRS;
         } else if (ProjectedCRS.class.isAssignableFrom(type) || EngineeringCRS.class.isAssignableFrom(type)) {
             return WKTKeywords.EngineeringCRS;
         } else {
@@ -796,105 +799,105 @@ public class DefaultDerivedCRS extends A
     }
 
     /**
-     * An derived engineering CRS. ISO 19162 restricts the base CRS to {@code EngineeringCRS}, {@code ProjectedCRS}
-     * or {@code GeodeticCRS}. Note that in the later case, an ambiguity may exist with the
-     * {@link org.apache.sis.referencing.crs.DefaultDerivedCRS.Geodetic} when deciding which {@code DerivedCRS} to
-     * create.
+     * A derived parametric CRS.
      */
     @XmlTransient
-    private static final class Engineering extends DefaultDerivedCRS implements EngineeringCRS {
+    private static final class Parametric extends DefaultDerivedCRS implements ParametricCRS {
         /** For cross-version compatibility. */
-        private static final long serialVersionUID = 42334975023270039L;
+        private static final long serialVersionUID = 2344979923957294024L;
 
         /** Creates a copy of the given CRS. */
-        Engineering(DerivedCRS other) {
+        Parametric(DerivedCRS other) {
             super(other);
         }
 
-        /** Creates a new engineering CRS from the given properties. */
-        Engineering(Map<String,?> properties, EngineeringCRS baseCRS, Conversion conversion, CoordinateSystem derivedCS) {
+        /** Creates a new parametric CRS from the given properties. */
+        Parametric(Map<String,?> properties, ParametricCRS baseCRS, Conversion conversion, ParametricCS derivedCS) {
             super(properties, baseCRS, conversion, derivedCS);
         }
 
-        /** Creates a new engineering CRS from the given properties. */
-        Engineering(Map<String,?> properties, EngineeringCRS baseCRS, CoordinateReferenceSystem interpolationCRS,
-                OperationMethod method, MathTransform baseToDerived, CoordinateSystem derivedCS)
+        /** Creates a new parametric CRS from the given properties. */
+        Parametric(Map<String,?> properties, ParametricCRS baseCRS, CoordinateReferenceSystem interpolationCRS,
+                OperationMethod method, MathTransform baseToDerived, ParametricCS derivedCS)
         {
             super(properties, baseCRS, interpolationCRS, method, baseToDerived, derivedCS);
         }
 
-        /** Returns the datum of the base engineering CRS. */
-        @Override public EngineeringDatum getDatum() {
-            return (EngineeringDatum) super.getDatum();
+        /** Returns the datum of the base parametric CRS. */
+        @Override public ParametricDatum getDatum() {
+            return (ParametricDatum) super.getDatum();
+        }
+
+        /** Returns the coordinate system given at construction time. */
+        @Override public ParametricCS getCoordinateSystem() {
+            return (ParametricCS) super.getCoordinateSystem();
         }
 
         /** Returns a coordinate reference system of the same type than this CRS but with different axes. */
         @Override AbstractCRS createSameType(final Map<String,?> properties, final CoordinateSystem derivedCS) {
             final Conversion conversionFromBase = getConversionFromBase();
-            return new Engineering(properties, (EngineeringCRS) conversionFromBase.getSourceCRS(), conversionFromBase, derivedCS);
+            return new Parametric(properties, (ParametricCRS) conversionFromBase.getSourceCRS(),
+                    conversionFromBase, (ParametricCS) derivedCS);
         }
 
         /** Returns the WKT keyword for this derived CRS type. */
         @Override String keyword(final Formatter formatter) {
-            return formatter.shortOrLong(WKTKeywords.EngCRS, WKTKeywords.EngineeringCRS);
+            return WKTKeywords.ParametricCRS;
         }
 
         /** Returns the GML code for this derived CRS type. */
         @Override SC_DerivedCRSType getType() {
-            return new SC_DerivedCRSType("engineering");
+            return new SC_DerivedCRSType("parametric");
         }
     }
 
     /**
-     * A derived parametric CRS.
+     * An derived engineering CRS. ISO 19162 restricts the base CRS to {@code EngineeringCRS}, {@code ProjectedCRS}
+     * or {@code GeodeticCRS}. Note that in the later case, an ambiguity may exist with the
+     * {@link org.apache.sis.referencing.crs.DefaultDerivedCRS.Geodetic} when deciding which {@code DerivedCRS} to
+     * create.
      */
     @XmlTransient
-    private static final class Parametric extends DefaultDerivedCRS implements ParametricCRS {
+    private static final class Engineering extends DefaultDerivedCRS implements EngineeringCRS {
         /** For cross-version compatibility. */
-        private static final long serialVersionUID = 2344979923957294024L;
+        private static final long serialVersionUID = 42334975023270039L;
 
         /** Creates a copy of the given CRS. */
-        Parametric(DerivedCRS other) {
+        Engineering(DerivedCRS other) {
             super(other);
         }
 
-        /** Creates a new parametric CRS from the given properties. */
-        Parametric(Map<String,?> properties, ParametricCRS baseCRS, Conversion conversion, ParametricCS derivedCS) {
+        /** Creates a new engineering CRS from the given properties. */
+        Engineering(Map<String,?> properties, EngineeringCRS baseCRS, Conversion conversion, CoordinateSystem derivedCS) {
             super(properties, baseCRS, conversion, derivedCS);
         }
 
-        /** Creates a new parametric CRS from the given properties. */
-        Parametric(Map<String,?> properties, ParametricCRS baseCRS, CoordinateReferenceSystem interpolationCRS,
-                OperationMethod method, MathTransform baseToDerived, ParametricCS derivedCS)
+        /** Creates a new engineering CRS from the given properties. */
+        Engineering(Map<String,?> properties, EngineeringCRS baseCRS, CoordinateReferenceSystem interpolationCRS,
+                OperationMethod method, MathTransform baseToDerived, CoordinateSystem derivedCS)
         {
             super(properties, baseCRS, interpolationCRS, method, baseToDerived, derivedCS);
         }
 
-        /** Returns the datum of the base parametric CRS. */
-        @Override public ParametricDatum getDatum() {
-            return (ParametricDatum) super.getDatum();
-        }
-
-        /** Returns the coordinate system given at construction time. */
-        @Override public ParametricCS getCoordinateSystem() {
-            return (ParametricCS) super.getCoordinateSystem();
+        /** Returns the datum of the base engineering CRS. */
+        @Override public EngineeringDatum getDatum() {
+            return (EngineeringDatum) super.getDatum();
         }
 
         /** Returns a coordinate reference system of the same type than this CRS but with different axes. */
         @Override AbstractCRS createSameType(final Map<String,?> properties, final CoordinateSystem derivedCS) {
             final Conversion conversionFromBase = getConversionFromBase();
-            return new Parametric(properties, (ParametricCRS) conversionFromBase.getSourceCRS(),
-                    conversionFromBase, (ParametricCS) derivedCS);
+            return new Engineering(properties, (EngineeringCRS) conversionFromBase.getSourceCRS(), conversionFromBase, derivedCS);
         }
 
         /** Returns the WKT keyword for this derived CRS type. */
         @Override String keyword(final Formatter formatter) {
-            return WKTKeywords.BaseParamCRS;
+            return formatter.shortOrLong(WKTKeywords.EngCRS, WKTKeywords.EngineeringCRS);
         }
 
         /** Returns the GML code for this derived CRS type. */
         @Override SC_DerivedCRSType getType() {
-            return new SC_DerivedCRSType("parametric");
+            return new SC_DerivedCRSType("engineering");
         }
     }
 

Modified: sis/branches/JDK8/core/sis-referencing/src/main/java/org/apache/sis/referencing/crs/DefaultEngineeringCRS.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK8/core/sis-referencing/src/main/java/org/apache/sis/referencing/crs/DefaultEngineeringCRS.java?rev=1737251&r1=1737250&r2=1737251&view=diff
==============================================================================
--- sis/branches/JDK8/core/sis-referencing/src/main/java/org/apache/sis/referencing/crs/DefaultEngineeringCRS.java [UTF-8] (original)
+++ sis/branches/JDK8/core/sis-referencing/src/main/java/org/apache/sis/referencing/crs/DefaultEngineeringCRS.java [UTF-8] Thu Mar 31 15:43:00 2016
@@ -120,12 +120,12 @@ public class DefaultEngineeringCRS exten
      *     <td>{@link #getRemarks()}</td>
      *   </tr>
      *   <tr>
-     *     <td>{@value org.opengis.referencing.datum.Datum#DOMAIN_OF_VALIDITY_KEY}</td>
+     *     <td>{@value org.opengis.referencing.ReferenceSystem#DOMAIN_OF_VALIDITY_KEY}</td>
      *     <td>{@link org.opengis.metadata.extent.Extent}</td>
      *     <td>{@link #getDomainOfValidity()}</td>
      *   </tr>
      *   <tr>
-     *     <td>{@value org.opengis.referencing.datum.Datum#SCOPE_KEY}</td>
+     *     <td>{@value org.opengis.referencing.ReferenceSystem#SCOPE_KEY}</td>
      *     <td>{@link org.opengis.util.InternationalString} or {@link String}</td>
      *     <td>{@link #getScope()}</td>
      *   </tr>

Modified: sis/branches/JDK8/core/sis-referencing/src/main/java/org/apache/sis/referencing/crs/DefaultGeocentricCRS.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK8/core/sis-referencing/src/main/java/org/apache/sis/referencing/crs/DefaultGeocentricCRS.java?rev=1737251&r1=1737250&r2=1737251&view=diff
==============================================================================
--- sis/branches/JDK8/core/sis-referencing/src/main/java/org/apache/sis/referencing/crs/DefaultGeocentricCRS.java [UTF-8] (original)
+++ sis/branches/JDK8/core/sis-referencing/src/main/java/org/apache/sis/referencing/crs/DefaultGeocentricCRS.java [UTF-8] Thu Mar 31 15:43:00 2016
@@ -125,12 +125,12 @@ public class DefaultGeocentricCRS extend
      *     <td>{@link #getRemarks()}</td>
      *   </tr>
      *   <tr>
-     *     <td>{@value org.opengis.referencing.datum.Datum#DOMAIN_OF_VALIDITY_KEY}</td>
+     *     <td>{@value org.opengis.referencing.ReferenceSystem#DOMAIN_OF_VALIDITY_KEY}</td>
      *     <td>{@link org.opengis.metadata.extent.Extent}</td>
      *     <td>{@link #getDomainOfValidity()}</td>
      *   </tr>
      *   <tr>
-     *     <td>{@value org.opengis.referencing.datum.Datum#SCOPE_KEY}</td>
+     *     <td>{@value org.opengis.referencing.ReferenceSystem#SCOPE_KEY}</td>
      *     <td>{@link org.opengis.util.InternationalString} or {@link String}</td>
      *     <td>{@link #getScope()}</td>
      *   </tr>

Modified: sis/branches/JDK8/core/sis-referencing/src/main/java/org/apache/sis/referencing/crs/DefaultGeographicCRS.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK8/core/sis-referencing/src/main/java/org/apache/sis/referencing/crs/DefaultGeographicCRS.java?rev=1737251&r1=1737250&r2=1737251&view=diff
==============================================================================
--- sis/branches/JDK8/core/sis-referencing/src/main/java/org/apache/sis/referencing/crs/DefaultGeographicCRS.java [UTF-8] (original)
+++ sis/branches/JDK8/core/sis-referencing/src/main/java/org/apache/sis/referencing/crs/DefaultGeographicCRS.java [UTF-8] Thu Mar 31 15:43:00 2016
@@ -139,12 +139,12 @@ public class DefaultGeographicCRS extend
      *     <td>{@link #getRemarks()}</td>
      *   </tr>
      *   <tr>
-     *     <td>{@value org.opengis.referencing.datum.Datum#DOMAIN_OF_VALIDITY_KEY}</td>
+     *     <td>{@value org.opengis.referencing.ReferenceSystem#DOMAIN_OF_VALIDITY_KEY}</td>
      *     <td>{@link org.opengis.metadata.extent.Extent}</td>
      *     <td>{@link #getDomainOfValidity()}</td>
      *   </tr>
      *   <tr>
-     *     <td>{@value org.opengis.referencing.datum.Datum#SCOPE_KEY}</td>
+     *     <td>{@value org.opengis.referencing.ReferenceSystem#SCOPE_KEY}</td>
      *     <td>{@link org.opengis.util.InternationalString} or {@link String}</td>
      *     <td>{@link #getScope()}</td>
      *   </tr>

Modified: sis/branches/JDK8/core/sis-referencing/src/main/java/org/apache/sis/referencing/crs/DefaultImageCRS.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK8/core/sis-referencing/src/main/java/org/apache/sis/referencing/crs/DefaultImageCRS.java?rev=1737251&r1=1737250&r2=1737251&view=diff
==============================================================================
--- sis/branches/JDK8/core/sis-referencing/src/main/java/org/apache/sis/referencing/crs/DefaultImageCRS.java [UTF-8] (original)
+++ sis/branches/JDK8/core/sis-referencing/src/main/java/org/apache/sis/referencing/crs/DefaultImageCRS.java [UTF-8] Thu Mar 31 15:43:00 2016
@@ -113,12 +113,12 @@ public class DefaultImageCRS extends Abs
      *     <td>{@link #getRemarks()}</td>
      *   </tr>
      *   <tr>
-     *     <td>{@value org.opengis.referencing.datum.Datum#DOMAIN_OF_VALIDITY_KEY}</td>
+     *     <td>{@value org.opengis.referencing.ReferenceSystem#DOMAIN_OF_VALIDITY_KEY}</td>
      *     <td>{@link org.opengis.metadata.extent.Extent}</td>
      *     <td>{@link #getDomainOfValidity()}</td>
      *   </tr>
      *   <tr>
-     *     <td>{@value org.opengis.referencing.datum.Datum#SCOPE_KEY}</td>
+     *     <td>{@value org.opengis.referencing.ReferenceSystem#SCOPE_KEY}</td>
      *     <td>{@link org.opengis.util.InternationalString} or {@link String}</td>
      *     <td>{@link #getScope()}</td>
      *   </tr>

Modified: sis/branches/JDK8/core/sis-referencing/src/main/java/org/apache/sis/referencing/crs/DefaultParametricCRS.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK8/core/sis-referencing/src/main/java/org/apache/sis/referencing/crs/DefaultParametricCRS.java?rev=1737251&r1=1737250&r2=1737251&view=diff
==============================================================================
--- sis/branches/JDK8/core/sis-referencing/src/main/java/org/apache/sis/referencing/crs/DefaultParametricCRS.java (original)
+++ sis/branches/JDK8/core/sis-referencing/src/main/java/org/apache/sis/referencing/crs/DefaultParametricCRS.java Thu Mar 31 15:43:00 2016
@@ -20,20 +20,24 @@ import java.util.Map;
 import javax.xml.bind.annotation.XmlElement;
 import javax.xml.bind.annotation.XmlRootElement;
 import javax.xml.bind.annotation.XmlType;
-import org.apache.sis.internal.metadata.MetadataUtilities;
-import org.apache.sis.internal.metadata.WKTKeywords;
-import org.apache.sis.io.wkt.Formatter;
-import static org.apache.sis.referencing.crs.AbstractCRS.isBaseCRS;
-import org.apache.sis.referencing.cs.AxesConvention;
-import static org.apache.sis.util.ArgumentChecks.ensureNonNull;
 import org.opengis.referencing.crs.ParametricCRS;
 import org.opengis.referencing.crs.TemporalCRS;
 import org.opengis.referencing.cs.CoordinateSystem;
 import org.opengis.referencing.cs.ParametricCS;
 import org.opengis.referencing.datum.ParametricDatum;
+import org.apache.sis.internal.metadata.MetadataUtilities;
+import org.apache.sis.internal.metadata.WKTKeywords;
+import org.apache.sis.referencing.cs.AxesConvention;
+import org.apache.sis.io.wkt.Formatter;
+
+import static org.apache.sis.util.ArgumentChecks.ensureNonNull;
+import static org.apache.sis.referencing.crs.AbstractCRS.isBaseCRS;
+
 
 /**
  * A 1-dimensional coordinate reference system which uses parameter values or functions.
+ * Parametric CRS can be used for physical properties or functions that vary monotonically with height.
+ * A typical example is the pressure in meteorological applications.
  *
  * <p><b>Used with coordinate system type:</b>
  *   {@linkplain org.apache.sis.referencing.cs.DefaultParametricCS Parametric}.
@@ -59,6 +63,10 @@ import org.opengis.referencing.datum.Par
 })
 @XmlRootElement(name = "ParametricCRS")
 public class DefaultParametricCRS extends AbstractCRS implements ParametricCRS {
+    /**
+     * Serial number for inter-operability with different versions.
+     */
+    private static final long serialVersionUID = 4013698133331342649L;
 
     /**
      * The datum.
@@ -104,12 +112,12 @@ public class DefaultParametricCRS extend
      *     <td>{@link #getRemarks()}</td>
      *   </tr>
      *   <tr>
-     *     <td>{@value org.opengis.referencing.datum.Datum#DOMAIN_OF_VALIDITY_KEY}</td>
+     *     <td>{@value org.opengis.referencing.ReferenceSystem#DOMAIN_OF_VALIDITY_KEY}</td>
      *     <td>{@link org.opengis.metadata.extent.Extent}</td>
      *     <td>{@link #getDomainOfValidity()}</td>
      *   </tr>
      *   <tr>
-     *     <td>{@value org.opengis.referencing.datum.Datum#SCOPE_KEY}</td>
+     *     <td>{@value org.opengis.referencing.ReferenceSystem#SCOPE_KEY}</td>
      *     <td>{@link org.opengis.util.InternationalString} or {@link String}</td>
      *     <td>{@link #getScope()}</td>
      *   </tr>
@@ -122,8 +130,8 @@ public class DefaultParametricCRS extend
      * @see org.apache.sis.referencing.factory.GeodeticObjectFactory#createParametricCRS(Map, ParametricDatum, ParametricCS)
      */
     public DefaultParametricCRS(final Map<String,?> properties,
-                              final ParametricDatum datum,
-                              final ParametricCS    cs)
+                                final ParametricDatum datum,
+                                final ParametricCS    cs)
     {
         super(properties, cs);
         ensureNonNull("datum", datum);
@@ -273,7 +281,7 @@ public class DefaultParametricCRS extend
         if (datum == null) {
             datum = value;
         } else {
-            MetadataUtilities.propertyAlreadySet(DefaultVerticalCRS.class, "setDatum", "parametricDatum");
+            MetadataUtilities.propertyAlreadySet(DefaultParametricCRS.class, "setDatum", "parametricDatum");
         }
     }
 
@@ -285,5 +293,4 @@ public class DefaultParametricCRS extend
     private void setCoordinateSystem(final ParametricCS cs) {
         setCoordinateSystem("parametricCS", cs);
     }
-
 }

Modified: sis/branches/JDK8/core/sis-referencing/src/main/java/org/apache/sis/referencing/crs/DefaultProjectedCRS.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK8/core/sis-referencing/src/main/java/org/apache/sis/referencing/crs/DefaultProjectedCRS.java?rev=1737251&r1=1737250&r2=1737251&view=diff
==============================================================================
--- sis/branches/JDK8/core/sis-referencing/src/main/java/org/apache/sis/referencing/crs/DefaultProjectedCRS.java [UTF-8] (original)
+++ sis/branches/JDK8/core/sis-referencing/src/main/java/org/apache/sis/referencing/crs/DefaultProjectedCRS.java [UTF-8] Thu Mar 31 15:43:00 2016
@@ -120,12 +120,12 @@ public class DefaultProjectedCRS extends
      *     <td>{@link #getRemarks()}</td>
      *   </tr>
      *   <tr>
-     *     <td>{@value org.opengis.referencing.datum.Datum#DOMAIN_OF_VALIDITY_KEY}</td>
+     *     <td>{@value org.opengis.referencing.ReferenceSystem#DOMAIN_OF_VALIDITY_KEY}</td>
      *     <td>{@link org.opengis.metadata.extent.Extent}</td>
      *     <td>{@link #getDomainOfValidity()}</td>
      *   </tr>
      *   <tr>
-     *     <td>{@value org.opengis.referencing.datum.Datum#SCOPE_KEY}</td>
+     *     <td>{@value org.opengis.referencing.ReferenceSystem#SCOPE_KEY}</td>
      *     <td>{@link org.opengis.util.InternationalString} or {@link String}</td>
      *     <td>{@link #getScope()}</td>
      *   </tr>

Modified: sis/branches/JDK8/core/sis-referencing/src/main/java/org/apache/sis/referencing/crs/DefaultTemporalCRS.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK8/core/sis-referencing/src/main/java/org/apache/sis/referencing/crs/DefaultTemporalCRS.java?rev=1737251&r1=1737250&r2=1737251&view=diff
==============================================================================
--- sis/branches/JDK8/core/sis-referencing/src/main/java/org/apache/sis/referencing/crs/DefaultTemporalCRS.java [UTF-8] (original)
+++ sis/branches/JDK8/core/sis-referencing/src/main/java/org/apache/sis/referencing/crs/DefaultTemporalCRS.java [UTF-8] Thu Mar 31 15:43:00 2016
@@ -132,12 +132,12 @@ public class DefaultTemporalCRS extends
      *     <td>{@link #getRemarks()}</td>
      *   </tr>
      *   <tr>
-     *     <td>{@value org.opengis.referencing.datum.Datum#DOMAIN_OF_VALIDITY_KEY}</td>
+     *     <td>{@value org.opengis.referencing.ReferenceSystem#DOMAIN_OF_VALIDITY_KEY}</td>
      *     <td>{@link org.opengis.metadata.extent.Extent}</td>
      *     <td>{@link #getDomainOfValidity()}</td>
      *   </tr>
      *   <tr>
-     *     <td>{@value org.opengis.referencing.datum.Datum#SCOPE_KEY}</td>
+     *     <td>{@value org.opengis.referencing.ReferenceSystem#SCOPE_KEY}</td>
      *     <td>{@link org.opengis.util.InternationalString} or {@link String}</td>
      *     <td>{@link #getScope()}</td>
      *   </tr>

Modified: sis/branches/JDK8/core/sis-referencing/src/main/java/org/apache/sis/referencing/crs/DefaultVerticalCRS.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK8/core/sis-referencing/src/main/java/org/apache/sis/referencing/crs/DefaultVerticalCRS.java?rev=1737251&r1=1737250&r2=1737251&view=diff
==============================================================================
--- sis/branches/JDK8/core/sis-referencing/src/main/java/org/apache/sis/referencing/crs/DefaultVerticalCRS.java [UTF-8] (original)
+++ sis/branches/JDK8/core/sis-referencing/src/main/java/org/apache/sis/referencing/crs/DefaultVerticalCRS.java [UTF-8] Thu Mar 31 15:43:00 2016
@@ -111,12 +111,12 @@ public class DefaultVerticalCRS extends
      *     <td>{@link #getRemarks()}</td>
      *   </tr>
      *   <tr>
-     *     <td>{@value org.opengis.referencing.datum.Datum#DOMAIN_OF_VALIDITY_KEY}</td>
+     *     <td>{@value org.opengis.referencing.ReferenceSystem#DOMAIN_OF_VALIDITY_KEY}</td>
      *     <td>{@link org.opengis.metadata.extent.Extent}</td>
      *     <td>{@link #getDomainOfValidity()}</td>
      *   </tr>
      *   <tr>
-     *     <td>{@value org.opengis.referencing.datum.Datum#SCOPE_KEY}</td>
+     *     <td>{@value org.opengis.referencing.ReferenceSystem#SCOPE_KEY}</td>
      *     <td>{@link org.opengis.util.InternationalString} or {@link String}</td>
      *     <td>{@link #getScope()}</td>
      *   </tr>

Modified: sis/branches/JDK8/core/sis-referencing/src/main/java/org/apache/sis/referencing/crs/package-info.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK8/core/sis-referencing/src/main/java/org/apache/sis/referencing/crs/package-info.java?rev=1737251&r1=1737250&r2=1737251&view=diff
==============================================================================
--- sis/branches/JDK8/core/sis-referencing/src/main/java/org/apache/sis/referencing/crs/package-info.java [UTF-8] (original)
+++ sis/branches/JDK8/core/sis-referencing/src/main/java/org/apache/sis/referencing/crs/package-info.java [UTF-8] Thu Mar 31 15:43:00 2016
@@ -100,6 +100,7 @@
     @XmlJavaTypeAdapter(CD_GeodeticDatum.class),
     @XmlJavaTypeAdapter(CD_EngineeringDatum.class),
     @XmlJavaTypeAdapter(CD_ImageDatum.class),
+    @XmlJavaTypeAdapter(CD_ParametricDatum.class),
     @XmlJavaTypeAdapter(CD_TemporalDatum.class),
     @XmlJavaTypeAdapter(CD_VerticalDatum.class),
     @XmlJavaTypeAdapter(CS_CartesianCS.class),      // Must be before CS_AffineCS.
@@ -107,6 +108,7 @@
     @XmlJavaTypeAdapter(CS_CylindricalCS.class),
     @XmlJavaTypeAdapter(CS_EllipsoidalCS.class),
     @XmlJavaTypeAdapter(CS_LinearCS.class),
+    @XmlJavaTypeAdapter(CS_ParametricCS.class),
     @XmlJavaTypeAdapter(CS_PolarCS.class),
     @XmlJavaTypeAdapter(CS_SphericalCS.class),
     @XmlJavaTypeAdapter(CS_TimeCS.class),

Modified: sis/branches/JDK8/core/sis-referencing/src/main/java/org/apache/sis/referencing/cs/AbstractCS.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK8/core/sis-referencing/src/main/java/org/apache/sis/referencing/cs/AbstractCS.java?rev=1737251&r1=1737250&r2=1737251&view=diff
==============================================================================
--- sis/branches/JDK8/core/sis-referencing/src/main/java/org/apache/sis/referencing/cs/AbstractCS.java [UTF-8] (original)
+++ sis/branches/JDK8/core/sis-referencing/src/main/java/org/apache/sis/referencing/cs/AbstractCS.java [UTF-8] Thu Mar 31 15:43:00 2016
@@ -84,6 +84,7 @@ import static org.apache.sis.util.Utilit
     DefaultLinearCS.class,
     DefaultVerticalCS.class,
     DefaultTimeCS.class,
+    DefaultParametricCS.class,
     DefaultUserDefinedCS.class
 })
 public class AbstractCS extends AbstractIdentifiedObject implements CoordinateSystem {

Modified: sis/branches/JDK8/core/sis-referencing/src/main/java/org/apache/sis/referencing/cs/DefaultParametricCS.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK8/core/sis-referencing/src/main/java/org/apache/sis/referencing/cs/DefaultParametricCS.java?rev=1737251&r1=1737250&r2=1737251&view=diff
==============================================================================
--- sis/branches/JDK8/core/sis-referencing/src/main/java/org/apache/sis/referencing/cs/DefaultParametricCS.java (original)
+++ sis/branches/JDK8/core/sis-referencing/src/main/java/org/apache/sis/referencing/cs/DefaultParametricCS.java Thu Mar 31 15:43:00 2016
@@ -22,6 +22,7 @@ import javax.xml.bind.annotation.XmlType
 import org.opengis.referencing.cs.CoordinateSystemAxis;
 import org.opengis.referencing.cs.ParametricCS;
 
+
 /**
  * A 1-dimensional coordinate system for parametric values or functions.
  *
@@ -53,7 +54,6 @@ import org.opengis.referencing.cs.Parame
 @XmlType(name = "ParametricCSType")
 @XmlRootElement(name = "ParametricCS")
 public class DefaultParametricCS extends AbstractCS implements ParametricCS {
-
     /**
      * Serial number for inter-operability with different versions.
      */
@@ -200,6 +200,4 @@ public class DefaultParametricCS extends
      */
     private DefaultParametricCS() {
     }
-
-
 }

Modified: sis/branches/JDK8/core/sis-referencing/src/main/java/org/apache/sis/referencing/datum/AbstractDatum.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK8/core/sis-referencing/src/main/java/org/apache/sis/referencing/datum/AbstractDatum.java?rev=1737251&r1=1737250&r2=1737251&view=diff
==============================================================================
--- sis/branches/JDK8/core/sis-referencing/src/main/java/org/apache/sis/referencing/datum/AbstractDatum.java [UTF-8] (original)
+++ sis/branches/JDK8/core/sis-referencing/src/main/java/org/apache/sis/referencing/datum/AbstractDatum.java [UTF-8] Thu Mar 31 15:43:00 2016
@@ -83,6 +83,7 @@ import java.util.Objects;
     DefaultGeodeticDatum.class,
     DefaultVerticalDatum.class,
     DefaultTemporalDatum.class,
+    DefaultParametricDatum.class,
     DefaultEngineeringDatum.class,
     DefaultImageDatum.class
 })

Modified: sis/branches/JDK8/core/sis-referencing/src/main/java/org/apache/sis/referencing/datum/DefaultParametricDatum.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK8/core/sis-referencing/src/main/java/org/apache/sis/referencing/datum/DefaultParametricDatum.java?rev=1737251&r1=1737250&r2=1737251&view=diff
==============================================================================
--- sis/branches/JDK8/core/sis-referencing/src/main/java/org/apache/sis/referencing/datum/DefaultParametricDatum.java (original)
+++ sis/branches/JDK8/core/sis-referencing/src/main/java/org/apache/sis/referencing/datum/DefaultParametricDatum.java Thu Mar 31 15:43:00 2016
@@ -20,9 +20,10 @@ import java.util.Date;
 import java.util.Map;
 import javax.xml.bind.annotation.XmlRootElement;
 import javax.xml.bind.annotation.XmlType;
+import org.opengis.referencing.datum.ParametricDatum;
 import org.apache.sis.internal.metadata.WKTKeywords;
 import org.apache.sis.io.wkt.Formatter;
-import org.opengis.referencing.datum.ParametricDatum;
+
 
 /**
  * Defines the origin of a parametric coordinate reference system.
@@ -57,7 +58,6 @@ import org.opengis.referencing.datum.Par
 @XmlType(name = "ParametricDatumType")
 @XmlRootElement(name = "ParametricDatum")
 public class DefaultParametricDatum extends AbstractDatum implements ParametricDatum {
-
     /**
      * Serial number for inter-operability with different versions.
      */
@@ -175,7 +175,7 @@ public class DefaultParametricDatum exte
      * Formats this datum as a <cite>Well Known Text</cite> {@code ParametricDatum[…]} element.
      *
      * <div class="note"><b>Compatibility note:</b>
-     * {@code TimeDatum} is defined in the WKT 2 specification only.</div>
+     * {@code ParametricDatum} is defined in the WKT 2 specification only.</div>
      *
      * @return {@code "ParametricDatum"}.
      *
@@ -209,5 +209,4 @@ public class DefaultParametricDatum exte
      */
     private DefaultParametricDatum() {
     }
-
 }

Modified: sis/branches/JDK8/core/sis-referencing/src/main/java/org/apache/sis/referencing/factory/GeodeticAuthorityFactory.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK8/core/sis-referencing/src/main/java/org/apache/sis/referencing/factory/GeodeticAuthorityFactory.java?rev=1737251&r1=1737250&r2=1737251&view=diff
==============================================================================
--- sis/branches/JDK8/core/sis-referencing/src/main/java/org/apache/sis/referencing/factory/GeodeticAuthorityFactory.java [UTF-8] (original)
+++ sis/branches/JDK8/core/sis-referencing/src/main/java/org/apache/sis/referencing/factory/GeodeticAuthorityFactory.java [UTF-8] Thu Mar 31 15:43:00 2016
@@ -62,6 +62,7 @@ import org.apache.sis.util.Debug;
  * However, other methods may be overridden as well for better performances.</p>
  *
  * @author  Martin Desruisseaux (IRD, Geomatys)
+ * @author  Johann Sorel (Geomatys)
  * @since   0.7
  * @version 0.7
  * @module

Modified: sis/branches/JDK8/core/sis-referencing/src/main/java/org/apache/sis/referencing/factory/GeodeticObjectFactory.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK8/core/sis-referencing/src/main/java/org/apache/sis/referencing/factory/GeodeticObjectFactory.java?rev=1737251&r1=1737250&r2=1737251&view=diff
==============================================================================
--- sis/branches/JDK8/core/sis-referencing/src/main/java/org/apache/sis/referencing/factory/GeodeticObjectFactory.java [UTF-8] (original)
+++ sis/branches/JDK8/core/sis-referencing/src/main/java/org/apache/sis/referencing/factory/GeodeticObjectFactory.java [UTF-8] Thu Mar 31 15:43:00 2016
@@ -189,6 +189,7 @@ import org.apache.sis.xml.XML;
  *
  * @author  Martin Desruisseaux (IRD, Geomatys)
  * @author  Guilhem Legal (Geomatys)
+ * @author  Johann Sorel (Geomatys)
  * @since   0.6
  * @version 0.7
  * @module
@@ -1036,6 +1037,95 @@ public class GeodeticObjectFactory exten
     }
 
     /**
+     * Creates a parametric coordinate reference system.
+     * Parametric CRS can be used for physical properties or functions that vary monotonically with height.
+     * A typical example is the pressure in meteorological applications.
+     *
+     * <div class="note"><b>Dependencies:</b>
+     * the components needed by this method can be created by the following methods:
+     * <ol>
+     *   <li>{@link #createCoordinateSystemAxis(Map, String, AxisDirection, Unit)}</li>
+     *   <li>{@link #createParametricCS(Map, CoordinateSystemAxis)}</li>
+     *   <li>{@link #createParametricDatum(Map)}</li>
+     * </ol></div>
+     *
+     * The default implementation creates a {@link DefaultParametricCRS} instance.
+     *
+     * @param  properties Name and other properties to give to the new object.
+     * @param  datum      The parametric datum to use in created CRS.
+     * @param  cs         The parametric coordinate system for the created CRS.
+     * @throws FactoryException if the object creation failed.
+     *
+     * @see DefaultParametricCRS#DefaultParametricCRS(Map, ParametricDatum, ParametricCS)
+     * @see GeodeticAuthorityFactory#createParametricCRS(String)
+     */
+    @Override
+    public ParametricCRS createParametricCRS(final Map<String,?> properties,
+            final ParametricDatum datum, final ParametricCS cs) throws FactoryException
+    {
+        final DefaultParametricCRS crs;
+        try {
+            crs = new DefaultParametricCRS(complete(properties), datum, cs);
+        } catch (IllegalArgumentException exception) {
+            throw new InvalidGeodeticParameterException(exception);
+        }
+        return unique("createParametricCRS", crs);
+    }
+
+    /**
+     * Creates a parametric datum.
+     * The default implementation creates a {@link DefaultParametricDatum} instance.
+     *
+     * @param  properties Name and other properties to give to the new object.
+     * @throws FactoryException if the object creation failed.
+     *
+     * @see DefaultParametricDatum#DefaultParametricDatum(Map)
+     * @see GeodeticAuthorityFactory#createParametricDatum(String)
+     */
+    @Override
+    public ParametricDatum createParametricDatum(final Map<String,?> properties)
+            throws FactoryException
+    {
+        final DefaultParametricDatum datum;
+        try {
+            datum = new DefaultParametricDatum(complete(properties));
+        } catch (IllegalArgumentException exception) {
+            throw new InvalidGeodeticParameterException(exception);
+        }
+        return unique("createParametricDatum", datum);
+    }
+
+    /**
+     * Creates a parametric coordinate system.
+     * This coordinate system can be used only with parametric CRS.
+     *
+     * <div class="note"><b>Dependencies:</b>
+     * the components needed by this method can be created by the following methods:
+     * <ol>
+     *   <li>{@link #createCoordinateSystemAxis(Map, String, AxisDirection, Unit)}</li>
+     * </ol></div>
+     *
+     * The default implementation creates a {@link DefaultParametricCS} instance.
+     *
+     * @param  properties Name and other properties to give to the new object.
+     * @param  axis The single axis.
+     * @throws FactoryException if the object creation failed.
+     *
+     * @see DefaultParametricCS#DefaultParametricCS(Map, CoordinateSystemAxis)
+     * @see GeodeticAuthorityFactory#createParametricCS(String)
+     */
+    @Override
+    public ParametricCS createParametricCS(Map<String, ?> properties, CoordinateSystemAxis axis) throws FactoryException {
+        final DefaultParametricCS cs;
+        try {
+            cs = new DefaultParametricCS(complete(properties), axis);
+        } catch (IllegalArgumentException exception) {
+            throw new InvalidGeodeticParameterException(exception);
+        }
+        return unique("createParametricCS", cs);
+    }
+
+    /**
      * Creates a compound coordinate reference system from an ordered list of {@code CoordinateReferenceSystem} objects.
      * Apache SIS puts no restriction on the components that can be used in a compound CRS.
      * However for better inter-operability, users are encouraged to follow the order mandated by ISO 19162:
@@ -1548,92 +1638,4 @@ public class GeodeticObjectFactory exten
                     Errors.Keys.IllegalClass_2, CoordinateReferenceSystem.class, object.getClass()));
         }
     }
-
-    /**
-     * Creates a parametric coordinate reference system.
-     *
-     * <div class="note"><b>Dependencies:</b>
-     * the components needed by this method can be created by the following methods:
-     * <ol>
-     *   <li>{@link #createCoordinateSystemAxis(Map, String, AxisDirection, Unit)}</li>
-     *   <li>{@link #createParametricCS(Map, CoordinateSystemAxis)}</li>
-     *   <li>{@link #createParametricDatum(Map)}</li>
-     * </ol></div>
-     *
-     * The default implementation creates a {@link DefaultParametricCRS} instance.
-     *
-     * @param  properties Name and other properties to give to the new object.
-     * @param  datum      The parametric datum to use in created CRS.
-     * @param  cs         The parametric coordinate system for the created CRS.
-     * @throws FactoryException if the object creation failed.
-     *
-     * @see DefaultParametricCRS#DefaultParametricCRS(Map, ParametricDatum, ParametricCS)
-     * @see GeodeticAuthorityFactory#createParametricCRS(String)
-     */
-    @Override
-    public ParametricCRS createParametricCRS(final Map<String,?> properties,
-            final ParametricDatum datum, final ParametricCS cs) throws FactoryException
-    {
-        final DefaultParametricCRS crs;
-        try {
-            crs = new DefaultParametricCRS(complete(properties), datum, cs);
-        } catch (IllegalArgumentException exception) {
-            throw new InvalidGeodeticParameterException(exception);
-        }
-        return unique("createParametricCRS", crs);
-    }
-    
-    /**
-     * Creates a parametric coordinate system.
-     * This coordinate system can be used only with parametric CRS.
-     *
-     * <div class="note"><b>Dependencies:</b>
-     * the components needed by this method can be created by the following methods:
-     * <ol>
-     *   <li>{@link #createCoordinateSystemAxis(Map, String, AxisDirection, Unit)}</li>
-     * </ol></div>
-     *
-     * The default implementation creates a {@link DefaultParametricCS} instance.
-     *
-     * @param  properties Name and other properties to give to the new object.
-     * @param  axis The single axis.
-     * @throws FactoryException if the object creation failed.
-     *
-     * @see DefaultParametricCS#DefaultParametricCS(Map, CoordinateSystemAxis)
-     * @see GeodeticAuthorityFactory#createParametricCS(String)
-     */
-    @Override
-    public ParametricCS createParametricCS(Map<String, ?> properties, CoordinateSystemAxis axis) throws FactoryException {
-        final DefaultParametricCS cs;
-        try {
-            cs = new DefaultParametricCS(complete(properties), axis);
-        } catch (IllegalArgumentException exception) {
-            throw new InvalidGeodeticParameterException(exception);
-        }
-        return unique("createParametricCS", cs);
-    }
-
-    /**
-     * Creates a parametric datum.
-     * The default implementation creates a {@link DefaultParametricDatum} instance.
-     *
-     * @param  properties Name and other properties to give to the new object.
-     * @throws FactoryException if the object creation failed.
-     *
-     * @see DefaultParametricDatum#DefaultParametricDatum(Map)
-     * @see GeodeticAuthorityFactory#createParametricDatum(String)
-     */
-    @Override
-    public ParametricDatum createParametricDatum(final Map<String,?> properties)
-            throws FactoryException
-    {
-        final DefaultParametricDatum datum;
-        try {
-            datum = new DefaultParametricDatum(complete(properties));
-        } catch (IllegalArgumentException exception) {
-            throw new InvalidGeodeticParameterException(exception);
-        }
-        return unique("createTemporalDatum", datum);
-    }
-
 }

Modified: sis/branches/JDK8/core/sis-referencing/src/main/java/org/apache/sis/referencing/factory/sql/EPSGDataAccess.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK8/core/sis-referencing/src/main/java/org/apache/sis/referencing/factory/sql/EPSGDataAccess.java?rev=1737251&r1=1737250&r2=1737251&view=diff
==============================================================================
--- sis/branches/JDK8/core/sis-referencing/src/main/java/org/apache/sis/referencing/factory/sql/EPSGDataAccess.java [UTF-8] (original)
+++ sis/branches/JDK8/core/sis-referencing/src/main/java/org/apache/sis/referencing/factory/sql/EPSGDataAccess.java [UTF-8] Thu Mar 31 15:43:00 2016
@@ -1522,6 +1522,16 @@ addURIs:    for (int i=0; ; i++) {
                         break;
                     }
                     /* ----------------------------------------------------------------------
+                     *   PARAMETRIC CRS
+                     * ---------------------------------------------------------------------- */
+                    case "parametric": {
+                        final ParametricCS    cs    = owner.createParametricCS   (getString(code, result, 8));
+                        final ParametricDatum datum = owner.createParametricDatum(getString(code, result, 9));
+                        crs = crsFactory.createParametricCRS(createProperties("Coordinate Reference System",
+                                name, epsg, area, scope, remarks, deprecated), datum, cs);
+                        break;
+                    }
+                    /* ----------------------------------------------------------------------
                      *   UNKNOWN CRS
                      * ---------------------------------------------------------------------- */
                     default: {
@@ -1666,6 +1676,10 @@ addURIs:    for (int i=0; ; i++) {
                         datum = datumFactory.createEngineeringDatum(properties);
                         break;
                     }
+                    case "parametric": {
+                        datum = datumFactory.createParametricDatum(properties);
+                        break;
+                    }
                     default: {
                         throw new FactoryDataException(error().getString(Errors.Keys.UnknownType_1, type));
                     }
@@ -2115,6 +2129,12 @@ addURIs:    for (int i=0; ; i++) {
                         }
                         break;
                     }
+                    case "parametric": {
+                        switch (dimension) {
+                            case 1: cs = csFactory.createParametricCS(properties, axes[0]); break;
+                        }
+                        break;
+                    }
                     case "linear": {
                         switch (dimension) {
                             case 1: cs = csFactory.createLinearCS(properties, axes[0]); break;

Modified: sis/branches/JDK8/core/sis-referencing/src/test/java/org/apache/sis/io/wkt/WKTParserTest.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK8/core/sis-referencing/src/test/java/org/apache/sis/io/wkt/WKTParserTest.java?rev=1737251&r1=1737250&r2=1737251&view=diff
==============================================================================
--- sis/branches/JDK8/core/sis-referencing/src/test/java/org/apache/sis/io/wkt/WKTParserTest.java [UTF-8] (original)
+++ sis/branches/JDK8/core/sis-referencing/src/test/java/org/apache/sis/io/wkt/WKTParserTest.java [UTF-8] Thu Mar 31 15:43:00 2016
@@ -38,7 +38,7 @@ import static org.junit.Assert.*;
  *
  * @author  Martin Desruisseaux (IRD, Geomatys)
  * @since   0.6
- * @version 0.6
+ * @version 0.7
  * @module
  */
 @RunWith(JUnit4.class)
@@ -352,6 +352,28 @@ public final strictfp class WKTParserTes
     }
 
     /**
+     * Completes the GeoAPI tests with a check of axis name.
+     * The WKT parsed by this test is (except for quote characters):
+     *
+     * {@preformat wkt
+     *   PARAMETRICCRS[“WMO standard atmosphere layer 0”,
+     *     PDATUM[“Mean Sea Level”,ANCHOR[“1013.25 hPa at 15°C”]],
+     *     CS[parametric,1],
+     *     AXIS[“pressure (hPa)”,up],
+     *     PARAMETRICUNIT[“hPa”,100.0]]
+     * }
+     *
+     * @throws FactoryException if an error occurred during the WKT parsing.
+     */
+    @Test
+    @Override
+    public void testParametric() throws FactoryException {
+        super.testParametric();
+        final CoordinateSystem cs = object.getCoordinateSystem();
+        assertEquals("name", "pressure", cs.getAxis(0).getName().getCode());
+    }
+
+    /**
      * Completes the GeoAPI tests with a check of axis names.
      * The WKT parsed by this test is (except for quote characters):
      *
@@ -557,18 +579,18 @@ public final strictfp class WKTParserTes
      *
      * {@preformat wkt
      *  COMPOUNDCRS[“GPS position and time”,
-     *     GEODCRS[“WGS 84”,
-     *       DATUM[“World Geodetic System 1984”,
-     *         ELLIPSOID[“WGS 84”,6378137,298.257223563]],
-     *       CS[ellipsoidal,2],
-     *         AXIS[“(lat)”,north,ORDER[1]],
-     *         AXIS[“(lon)”,east,ORDER[2]],
-     *         ANGLEUNIT[“degree”,0.0174532925199433]],
-     *     TIMECRS[“GPS Time”,
-     *       TIMEDATUM[“Time origin”,TIMEORIGIN[1980-01-01]],
-     *       CS[temporal,1],
-     *         AXIS[“time (T)”,future],
-     *         TIMEUNIT[“day”,86400]]]
+     *    GEODCRS[“WGS 84”,
+     *      DATUM[“World Geodetic System 1984”,
+     *        ELLIPSOID[“WGS 84”,6378137,298.257223563]],
+     *      CS[ellipsoidal,2],
+     *        AXIS[“(lat)”,north,ORDER[1]],
+     *        AXIS[“(lon)”,east,ORDER[2]],
+     *        ANGLEUNIT[“degree”,0.0174532925199433]],
+     *    TIMECRS[“GPS Time”,
+     *      TIMEDATUM[“Time origin”,TIMEORIGIN[1980-01-01]],
+     *      CS[temporal,1],
+     *        AXIS[“time (T)”,future],
+     *        TIMEUNIT[“day”,86400]]]
      * }
      *
      * @throws FactoryException if an error occurred during the WKT parsing.
@@ -582,4 +604,38 @@ public final strictfp class WKTParserTes
         assertEquals("name", AxisNames.GEODETIC_LONGITUDE, cs.getAxis(1).getName().getCode());
         assertEquals("name", AxisNames.TIME,               cs.getAxis(2).getName().getCode());
     }
+
+    /**
+     * Completes the GeoAPI tests with a check of axis names.
+     * The WKT parsed by this test is (except for quote characters):
+     *
+     * {@preformat wkt
+     *  COMPOUNDCRS[“ICAO layer 0”,
+     *    GEODETICCRS[“WGS 84”,
+     *      DATUM[“World Geodetic System 1984”,
+     *        ELLIPSOID[“WGS 84”,6378137,298.257223563,
+     *          LENGTHUNIT[“metre”,1.0]]],
+     *      CS[ellipsoidal,2],
+     *        AXIS[“latitude”,north,ORDER[1]],
+     *        AXIS[“longitude”,east,ORDER[2]],
+     *        ANGLEUNIT[“degree”,0.0174532925199433]],
+     *    PARAMETRICCRS[“WMO standard atmosphere”,
+     *      PARAMETRICDATUM[“Mean Sea Level”,
+     *        ANCHOR[“Mean Sea Level = 1013.25 hPa”]],
+     *          CS[parametric,1],
+     *            AXIS[“pressure (P)”,unspecified],
+     *            PARAMETRICUNIT[“hPa”,100]]]
+     * }
+     *
+     * @throws FactoryException if an error occurred during the WKT parsing.
+     */
+    @Test
+    @Override
+    public void testCompoundWithParametric() throws FactoryException {
+        super.testCompoundWithParametric();
+        final CoordinateSystem cs = object.getCoordinateSystem();
+        assertEquals("name", AxisNames.GEODETIC_LATITUDE,  cs.getAxis(0).getName().getCode());
+        assertEquals("name", AxisNames.GEODETIC_LONGITUDE, cs.getAxis(1).getName().getCode());
+        assertEquals("name", "pressure",                   cs.getAxis(2).getName().getCode());
+    }
 }




Mime
View raw message