diff --git a/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/provider/AlbersEqualArea.java b/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/provider/AlbersEqualArea.java
index 10a6944..4ee8e02 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/provider/AlbersEqualArea.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/provider/AlbersEqualArea.java
@@ -94,6 +94,10 @@
      *   <tr><td> GeoTIFF: </td><td> StdParallel1 </td></tr>
      *   <tr><td> Proj4:   </td><td> lat_1 </td></tr>
      * </table>
+     * <b>Notes:</b>
+     * <ul>
+     *   <li>No default value</li>
+     * </ul>
      */
     public static final ParameterDescriptor<Double> STANDARD_PARALLEL_1;
 
@@ -111,6 +115,10 @@
      *   <tr><td> GeoTIFF: </td><td> StdParallel2 </td></tr>
      *   <tr><td> Proj4:   </td><td> lat_2 </td></tr>
      * </table>
+     * <b>Notes:</b>
+     * <ul>
+     *   <li>No default value</li>
+     * </ul>
      */
     public static final ParameterDescriptor<Double> STANDARD_PARALLEL_2;
 
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/provider/Equirectangular.java b/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/provider/Equirectangular.java
index 3e74abd..8469aec 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/provider/Equirectangular.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/provider/Equirectangular.java
@@ -102,6 +102,11 @@
      *   <tr><td> GeoTIFF: </td><td> StdParallel1 </td></tr>
      *   <tr><td> Proj4:   </td><td> lat_ts </td></tr>
      * </table>
+     * <b>Notes:</b>
+     * <ul>
+     *   <li>Value domain: (-90.0 … 90.0)°</li>
+     *   <li>No default value</li>
+     * </ul>
      */
     public static final ParameterDescriptor<Double> STANDARD_PARALLEL;
 
@@ -122,6 +127,12 @@
      *   <tr><td> GeoTIFF: </td><td> CenterLat </td></tr>
      *   <tr><td> Proj4:   </td><td> lat_0 </td></tr>
      * </table>
+     * <b>Notes:</b>
+     * <ul>
+     *   <li>Value restricted to 0</li>
+     *   <li>No default value</li>
+     *   <li>Optional</li>
+     * </ul>
      */
     static final ParameterDescriptor<Double> LATITUDE_OF_ORIGIN;
 
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/provider/FranceGeocentricInterpolation.java b/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/provider/FranceGeocentricInterpolation.java
index 4e6f4af..453fa3c 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/provider/FranceGeocentricInterpolation.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/provider/FranceGeocentricInterpolation.java
@@ -144,6 +144,10 @@
      *   <caption>Parameter names</caption>
      *   <tr><td> EPSG:    </td><td> Geocentric translation file </td></tr>
      * </table>
+     * <b>Notes:</b>
+     * <ul>
+     *   <li>Default value: {@code gr3df97a.txt}</li>
+     * </ul>
      */
     public static final ParameterDescriptor<Path> FILE;
 
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/provider/GeocentricAffine.java b/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/provider/GeocentricAffine.java
index 6329809..032ecd2 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/provider/GeocentricAffine.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/provider/GeocentricAffine.java
@@ -128,6 +128,11 @@
      *   <tr><td> EPSG:    </td><td> X-axis rotation </td></tr>
      *   <tr><td> OGC:     </td><td> ex </td></tr>
      * </table>
+     * <b>Notes:</b>
+     * <ul>
+     *   <li>Value domain: [-648000.0 … 648000.0]″</li>
+     *   <li>No default value</li>
+     * </ul>
      */
     static final ParameterDescriptor<Double> RX;
 
@@ -142,6 +147,11 @@
      *   <tr><td> EPSG:    </td><td> Y-axis rotation </td></tr>
      *   <tr><td> OGC:     </td><td> ey </td></tr>
      * </table>
+     * <b>Notes:</b>
+     * <ul>
+     *   <li>Value domain: [-648000.0 … 648000.0]″</li>
+     *   <li>No default value</li>
+     * </ul>
      */
     static final ParameterDescriptor<Double> RY;
 
@@ -156,6 +166,11 @@
      *   <tr><td> EPSG:    </td><td> Z-axis rotation </td></tr>
      *   <tr><td> OGC:     </td><td> ez </td></tr>
      * </table>
+     * <b>Notes:</b>
+     * <ul>
+     *   <li>Value domain: [-648000.0 … 648000.0]″</li>
+     *   <li>No default value</li>
+     * </ul>
      */
     static final ParameterDescriptor<Double> RZ;
 
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/provider/GeocentricAffineBetweenGeographic.java b/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/provider/GeocentricAffineBetweenGeographic.java
index f6cf1a2..5c9d580 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/provider/GeocentricAffineBetweenGeographic.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/provider/GeocentricAffineBetweenGeographic.java
@@ -70,6 +70,12 @@
      *   <caption>Parameter names</caption>
      *   <tr><td> OGC:     </td><td> dim </td></tr>
      * </table>
+     * <b>Notes:</b>
+     * <ul>
+     *   <li>Value domain: [2…3]</li>
+     *   <li>No default value</li>
+     *   <li>Optional</li>
+     * </ul>
      */
     public static final ParameterDescriptor<Integer> DIMENSION;
 
@@ -82,6 +88,11 @@
      *   <caption>Parameter names</caption>
      *   <tr><td> OGC:     </td><td> src_semi_major </td></tr>
      * </table>
+     * <b>Notes:</b>
+     * <ul>
+     *   <li>Value domain: (0.0 … ∞) m</li>
+     *   <li>No default value</li>
+     * </ul>
      */
     public static final ParameterDescriptor<Double> SRC_SEMI_MAJOR;
 
@@ -94,6 +105,11 @@
      *   <caption>Parameter names</caption>
      *   <tr><td> OGC:     </td><td> src_semi_minor </td></tr>
      * </table>
+     * <b>Notes:</b>
+     * <ul>
+     *   <li>Value domain: (0.0 … ∞) m</li>
+     *   <li>No default value</li>
+     * </ul>
      */
     public static final ParameterDescriptor<Double> SRC_SEMI_MINOR;
 
@@ -106,6 +122,11 @@
      *   <caption>Parameter names</caption>
      *   <tr><td> OGC:     </td><td> tgt_semi_major </td></tr>
      * </table>
+     * <b>Notes:</b>
+     * <ul>
+     *   <li>Value domain: (0.0 … ∞) m</li>
+     *   <li>No default value</li>
+     * </ul>
      */
     public static final ParameterDescriptor<Double> TGT_SEMI_MAJOR;
 
@@ -118,6 +139,11 @@
      *   <caption>Parameter names</caption>
      *   <tr><td> OGC:     </td><td> tgt_semi_minor </td></tr>
      * </table>
+     * <b>Notes:</b>
+     * <ul>
+     *   <li>Value domain: (0.0 … ∞) m</li>
+     *   <li>No default value</li>
+     * </ul>
      */
     public static final ParameterDescriptor<Double> TGT_SEMI_MINOR;
 
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/provider/GeographicToGeocentric.java b/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/provider/GeographicToGeocentric.java
index 26b1fb2..97c283e 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/provider/GeographicToGeocentric.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/provider/GeographicToGeocentric.java
@@ -76,6 +76,12 @@
      *   <caption>Parameter names</caption>
      *   <tr><td> SIS:     </td><td> dim </td></tr>
      * </table>
+     * <b>Notes:</b>
+     * <ul>
+     *   <li>Value domain: [2…3]</li>
+     *   <li>Default value: 3</li>
+     *   <li>Optional</li>
+     * </ul>
      */
     public static final ParameterDescriptor<Integer> DIMENSION;
 
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/provider/LambertConformal1SP.java b/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/provider/LambertConformal1SP.java
index c7db3c0..1c8f138 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/provider/LambertConformal1SP.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/provider/LambertConformal1SP.java
@@ -61,6 +61,10 @@
      *   <tr><td> GeoTIFF: </td><td> NatOriginLat </td></tr>
      *   <tr><td> Proj4:   </td><td> lat_0 </td></tr>
      * </table>
+     * <b>Notes:</b>
+     * <ul>
+     *   <li>No default value</li>
+     * </ul>
      */
     public static final ParameterDescriptor<Double> LATITUDE_OF_ORIGIN;
 
@@ -95,6 +99,11 @@
      *   <tr><td> GeoTIFF: </td><td> ScaleAtNatOrigin </td></tr>
      *   <tr><td> Proj4:   </td><td> k </td></tr>
      * </table>
+     * <b>Notes:</b>
+     * <ul>
+     *   <li>Value domain: (0.0 … ∞)</li>
+     *   <li>Default value: 1</li>
+     * </ul>
      */
     public static final ParameterDescriptor<Double> SCALE_FACTOR = Mercator1SP.SCALE_FACTOR;
 
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/provider/LambertConformal2SP.java b/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/provider/LambertConformal2SP.java
index 159fbac..2b7f8eb 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/provider/LambertConformal2SP.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/provider/LambertConformal2SP.java
@@ -97,6 +97,10 @@
      *   <tr><td> GeoTIFF: </td><td> StdParallel1 </td></tr>
      *   <tr><td> Proj4:   </td><td> lat_1 </td></tr>
      * </table>
+     * <b>Notes:</b>
+     * <ul>
+     *   <li>No default value</li>
+     * </ul>
      */
     public static final ParameterDescriptor<Double> STANDARD_PARALLEL_1;
 
@@ -114,6 +118,10 @@
      *   <tr><td> GeoTIFF: </td><td> StdParallel2 </td></tr>
      *   <tr><td> Proj4:   </td><td> lat_2 </td></tr>
      * </table>
+     * <b>Notes:</b>
+     * <ul>
+     *   <li>No default value</li>
+     * </ul>
      */
     public static final ParameterDescriptor<Double> STANDARD_PARALLEL_2;
 
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/provider/LambertConformalMichigan.java b/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/provider/LambertConformalMichigan.java
index 90d3ca6..8143960 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/provider/LambertConformalMichigan.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/provider/LambertConformalMichigan.java
@@ -52,6 +52,11 @@
      *   <caption>Parameter names</caption>
      *   <tr><td> EPSG:    </td><td> Ellipsoid scaling factor </td></tr>
      * </table>
+     * <b>Notes:</b>
+     * <ul>
+     *   <li>Value domain: (0.0 … ∞)</li>
+     *   <li>No default value</li>
+     * </ul>
      */
     public static final ParameterDescriptor<Double> SCALE_FACTOR;
 
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/provider/LambertCylindricalEqualArea.java b/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/provider/LambertCylindricalEqualArea.java
index 92e2a63..8cedc5d 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/provider/LambertCylindricalEqualArea.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/provider/LambertCylindricalEqualArea.java
@@ -58,6 +58,11 @@
      *   <tr><td> GeoTIFF: </td><td> StdParallel1 </td></tr>
      *   <tr><td> Proj4:   </td><td> lat_ts </td></tr>
      * </table>
+     * <b>Notes:</b>
+     * <ul>
+     *   <li>Value domain: (-90.0 … 90.0)°</li>
+     *   <li>No default value</li>
+     * </ul>
      */
     public static final ParameterDescriptor<Double> STANDARD_PARALLEL = Equirectangular.STANDARD_PARALLEL;
 
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/provider/MapProjection.java b/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/provider/MapProjection.java
index ee072ae..d1675b6 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/provider/MapProjection.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/provider/MapProjection.java
@@ -85,6 +85,11 @@
      *   <tr><td> GeoTIFF: </td><td> SemiMajorAxis </td></tr>
      *   <tr><td> Proj4:   </td><td> a </td></tr>
      * </table>
+     * <b>Notes:</b>
+     * <ul>
+     *   <li>Value domain: (0.0 … ∞) m</li>
+     *   <li>No default value</li>
+     * </ul>
      */
     public static final DefaultParameterDescriptor<Double> SEMI_MAJOR;
 
@@ -103,6 +108,11 @@
      *   <tr><td> GeoTIFF: </td><td> SemiMinorAxis </td></tr>
      *   <tr><td> Proj4:   </td><td> b </td></tr>
      * </table>
+     * <b>Notes:</b>
+     * <ul>
+     *   <li>Value domain: (0.0 … ∞) m</li>
+     *   <li>No default value</li>
+     * </ul>
      */
     public static final DefaultParameterDescriptor<Double> SEMI_MINOR;
 
@@ -115,6 +125,11 @@
      *   <caption>Parameter names</caption>
      *   <tr><td> SIS:     </td><td> eccentricity </td></tr>
      * </table>
+     * <b>Notes:</b>
+     * <ul>
+     *   <li>Value domain: [0.0 … 1.0]</li>
+     *   <li>No default value</li>
+     * </ul>
      */
     @Debug
     public static final DefaultParameterDescriptor<Double> ECCENTRICITY;
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/provider/Mercator1SP.java b/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/provider/Mercator1SP.java
index 70fe4d4..0552b71 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/provider/Mercator1SP.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/provider/Mercator1SP.java
@@ -59,6 +59,11 @@
      *   <tr><td> GeoTIFF: </td><td> NatOriginLat </td></tr>
      *   <tr><td> Proj4:   </td><td> lat_0 </td></tr>
      * </table>
+     * <b>Notes:</b>
+     * <ul>
+     *   <li>Value restricted to 0</li>
+     *   <li>No default value</li>
+     * </ul>
      */
     public static final ParameterDescriptor<Double> LATITUDE_OF_ORIGIN;
 
@@ -93,6 +98,11 @@
      *   <tr><td> GeoTIFF: </td><td> ScaleAtNatOrigin </td></tr>
      *   <tr><td> Proj4:   </td><td> k </td></tr>
      * </table>
+     * <b>Notes:</b>
+     * <ul>
+     *   <li>Value domain: (0.0 … ∞)</li>
+     *   <li>Default value: 1</li>
+     * </ul>
      */
     public static final ParameterDescriptor<Double> SCALE_FACTOR;
 
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/provider/Mercator2SP.java b/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/provider/Mercator2SP.java
index 48cfce7..9569b39 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/provider/Mercator2SP.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/provider/Mercator2SP.java
@@ -64,6 +64,11 @@
      *   <tr><td> GeoTIFF: </td><td> StdParallel1 </td></tr>
      *   <tr><td> Proj4:   </td><td> lat_ts </td></tr>
      * </table>
+     * <b>Notes:</b>
+     * <ul>
+     *   <li>Value domain: (-90.0 … 90.0)°</li>
+     *   <li>No default value</li>
+     * </ul>
      */
     public static final ParameterDescriptor<Double> STANDARD_PARALLEL = Equirectangular.STANDARD_PARALLEL;
 
@@ -83,6 +88,12 @@
      *   <tr><td> ESRI:    </td><td> Scale_Factor </td></tr>
      *   <tr><td> Proj4:   </td><td> k </td></tr>
      * </table>
+     * <b>Notes:</b>
+     * <ul>
+     *   <li>Value domain: (0.0 … ∞)</li>
+     *   <li>Default value: 1</li>
+     *   <li>Optional</li>
+     * </ul>
      */
     static final ParameterDescriptor<Double> SCALE_FACTOR;
 
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/provider/Molodensky.java b/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/provider/Molodensky.java
index 73cc0b0..7bb3083 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/provider/Molodensky.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/provider/Molodensky.java
@@ -83,6 +83,10 @@
      *   <caption>Parameter names</caption>
      *   <tr><td> EPSG:    </td><td> Semi-major axis length difference </td></tr>
      * </table>
+     * <b>Notes:</b>
+     * <ul>
+     *   <li>No default value</li>
+     * </ul>
      */
     public static final ParameterDescriptor<Double> AXIS_LENGTH_DIFFERENCE;
 
@@ -96,6 +100,11 @@
      *   <caption>Parameter names</caption>
      *   <tr><td> EPSG:    </td><td> Flattening difference </td></tr>
      * </table>
+     * <b>Notes:</b>
+     * <ul>
+     *   <li>Value domain: [-1.0 … 1.0]</li>
+     *   <li>No default value</li>
+     * </ul>
      */
     public static final ParameterDescriptor<Double> FLATTENING_DIFFERENCE;
 
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/provider/NADCON.java b/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/provider/NADCON.java
index a132655..67e9823 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/provider/NADCON.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/provider/NADCON.java
@@ -79,6 +79,10 @@
      *   <caption>Parameter names</caption>
      *   <tr><td> EPSG:    </td><td> Latitude difference file </td></tr>
      * </table>
+     * <b>Notes:</b>
+     * <ul>
+     *   <li>Default value: {@code conus.las}</li>
+     * </ul>
      */
     private static final ParameterDescriptor<Path> LATITUDE;
 
@@ -91,6 +95,10 @@
      *   <caption>Parameter names</caption>
      *   <tr><td> EPSG:    </td><td> Longitude difference file </td></tr>
      * </table>
+     * <b>Notes:</b>
+     * <ul>
+     *   <li>Default value: {@code conus.los}</li>
+     * </ul>
      */
     private static final ParameterDescriptor<Path> LONGITUDE;
 
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/provider/NTv2.java b/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/provider/NTv2.java
index 883a641..c65afec 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/provider/NTv2.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/provider/NTv2.java
@@ -81,6 +81,10 @@
      *   <caption>Parameter names</caption>
      *   <tr><td> EPSG:    </td><td> Latitude and longitude difference file </td></tr>
      * </table>
+     * <b>Notes:</b>
+     * <ul>
+     *   <li>No default value</li>
+     * </ul>
      */
     private static final ParameterDescriptor<Path> FILE;
 
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/provider/ObliqueMercator.java b/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/provider/ObliqueMercator.java
index bd1253b..3031495 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/provider/ObliqueMercator.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/provider/ObliqueMercator.java
@@ -67,6 +67,11 @@
      *   <tr><td> Proj4:   </td><td> lat_0 </td></tr>
      *   <tr><td> ESRI:    </td><td> Latitude_Of_Center </td></tr>
      * </table>
+     * <b>Notes:</b>
+     * <ul>
+     *   <li>Value domain: (-90.0 … 90.0)°</li>
+     *   <li>No default value</li>
+     * </ul>
      */
     public static final ParameterDescriptor<Double> LATITUDE_OF_CENTRE;
 
@@ -100,6 +105,11 @@
      *   <tr><td> GeoTIFF: </td><td> AzimuthAngle </td></tr>
      *   <tr><td> Proj4:   </td><td> alpha </td></tr>
      * </table>
+     * <b>Notes:</b>
+     * <ul>
+     *   <li>Value domain: [-360.0 … 360.0]°</li>
+     *   <li>No default value</li>
+     * </ul>
      */
     public static final ParameterDescriptor<Double> AZIMUTH;
 
@@ -116,6 +126,11 @@
      *   <tr><td> GeoTIFF: </td><td> RectifiedGridAngle </td></tr>
      *   <tr><td> Proj4:   </td><td> gamma </td></tr>
      * </table>
+     * <b>Notes:</b>
+     * <ul>
+     *   <li>Value domain: [-360.0 … 360.0]°</li>
+     *   <li>No default value</li>
+     * </ul>
      */
     public static final ParameterDescriptor<Double> RECTIFIED_GRID_ANGLE;
 
@@ -132,6 +147,11 @@
      *   <tr><td> GeoTIFF: </td><td> ScaleAtCenter </td></tr>
      *   <tr><td> Proj4:   </td><td> k </td></tr>
      * </table>
+     * <b>Notes:</b>
+     * <ul>
+     *   <li>Value domain: (0.0 … ∞)</li>
+     *   <li>Default value: 1</li>
+     * </ul>
      */
     public static final ParameterDescriptor<Double> SCALE_FACTOR;
 
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/provider/ObliqueStereographic.java b/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/provider/ObliqueStereographic.java
index c453bd6..d689450 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/provider/ObliqueStereographic.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/provider/ObliqueStereographic.java
@@ -92,6 +92,11 @@
      *   <tr><td> GeoTIFF: </td><td> ScaleAtNatOrigin </td></tr>
      *   <tr><td> Proj4:   </td><td> k </td></tr>
      * </table>
+     * <b>Notes:</b>
+     * <ul>
+     *   <li>Value domain: (0.0 … ∞)</li>
+     *   <li>Default value: 1</li>
+     * </ul>
      */
     public static final ParameterDescriptor<Double> SCALE_FACTOR = Mercator1SP.SCALE_FACTOR;    // Same as PolarStereographicA.
 
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/provider/PolarStereographicA.java b/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/provider/PolarStereographicA.java
index 44d60a7..db375a9 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/provider/PolarStereographicA.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/provider/PolarStereographicA.java
@@ -73,6 +73,10 @@
      *   <tr><td> GeoTIFF: </td><td> NatOriginLat </td></tr>
      *   <tr><td> Proj4:   </td><td> lat_0 </td></tr>
      * </table>
+     * <b>Notes:</b>
+     * <ul>
+     *   <li>No default value</li>
+     * </ul>
      */
     public static final ParameterDescriptor<Double> LATITUDE_OF_ORIGIN = LambertConformal1SP.LATITUDE_OF_ORIGIN;
 
@@ -107,6 +111,11 @@
      *   <tr><td> GeoTIFF: </td><td> ScaleAtNatOrigin </td></tr>
      *   <tr><td> Proj4:   </td><td> k </td></tr>
      * </table>
+     * <b>Notes:</b>
+     * <ul>
+     *   <li>Value domain: (0.0 … ∞)</li>
+     *   <li>Default value: 1</li>
+     * </ul>
      */
     public static final ParameterDescriptor<Double> SCALE_FACTOR = Mercator1SP.SCALE_FACTOR;
 
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/provider/PolarStereographicB.java b/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/provider/PolarStereographicB.java
index 689cc8c..50e47b0 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/provider/PolarStereographicB.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/provider/PolarStereographicB.java
@@ -77,6 +77,10 @@
      *   <tr><td> GeoTIFF: </td><td> StdParallel1 </td></tr>
      *   <tr><td> Proj4:   </td><td> lat_ts </td></tr>
      * </table>
+     * <b>Notes:</b>
+     * <ul>
+     *   <li>No default value</li>
+     * </ul>
      */
     public static final ParameterDescriptor<Double> STANDARD_PARALLEL;
 
@@ -96,6 +100,11 @@
      *   <tr><td> ESRI:    </td><td> Scale_Factor </td></tr>
      *   <tr><td> Proj4:   </td><td> k </td></tr>
      * </table>
+     * <b>Notes:</b>
+     * <ul>
+     *   <li>Value domain: (0.0 … ∞)</li>
+     *   <li>Default value: 1</li>
+     * </ul>
      */
     static final ParameterDescriptor<Double> SCALE_FACTOR;
 
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/provider/RegionalMercator.java b/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/provider/RegionalMercator.java
index d82a5a0..e2c39d0 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/provider/RegionalMercator.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/provider/RegionalMercator.java
@@ -63,6 +63,11 @@
      *   <tr><td> GeoTIFF: </td><td> FalseOriginLat </td></tr>
      *   <tr><td> Proj4:   </td><td> lat_0 </td></tr>
      * </table>
+     * <b>Notes:</b>
+     * <ul>
+     *   <li>Value domain: (-90.0 … 90.0)°</li>
+     *   <li>No default value</li>
+     * </ul>
      */
     public static final ParameterDescriptor<Double> LATITUDE_OF_FALSE_ORIGIN;
 
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/provider/SatelliteTracking.java b/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/provider/SatelliteTracking.java
index 4b53854..a6c4093 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/provider/SatelliteTracking.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/provider/SatelliteTracking.java
@@ -127,6 +127,11 @@
      *   <caption>Parameter names</caption>
      *   <tr><td> SIS:     </td><td> satellite_orbital_period </td></tr>
      * </table>
+     * <b>Notes:</b>
+     * <ul>
+     *   <li>Value domain: (0.0 … ∞) d</li>
+     *   <li>No default value</li>
+     * </ul>
      */
     public static final ParameterDescriptor<Double> SATELLITE_ORBITAL_PERIOD;
 
@@ -141,6 +146,11 @@
      *   <caption>Parameter names</caption>
      *   <tr><td> SIS:     </td><td> ascending_node_period </td></tr>
      * </table>
+     * <b>Notes:</b>
+     * <ul>
+     *   <li>Value domain: (0.0 … ∞) d</li>
+     *   <li>No default value</li>
+     * </ul>
      */
     public static final ParameterDescriptor<Double> ASCENDING_NODE_PERIOD;
 
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/provider/TransverseMercator.java b/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/provider/TransverseMercator.java
index 6b440b9..3be6f8b 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/provider/TransverseMercator.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/provider/TransverseMercator.java
@@ -104,6 +104,11 @@
      *   <tr><td> GeoTIFF: </td><td> ScaleAtNatOrigin </td></tr>
      *   <tr><td> Proj4:   </td><td> k </td></tr>
      * </table>
+     * <b>Notes:</b>
+     * <ul>
+     *   <li>Value domain: (0.0 … ∞)</li>
+     *   <li>Default value: 1</li>
+     * </ul>
      */
     public static final ParameterDescriptor<Double> SCALE_FACTOR;
 
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/provider/ZonedTransverseMercator.java b/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/provider/ZonedTransverseMercator.java
index b92d25b..facccde 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/provider/ZonedTransverseMercator.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/provider/ZonedTransverseMercator.java
@@ -55,6 +55,10 @@
      *   <caption>Parameter names</caption>
      *   <tr><td> EPSG:    </td><td> Initial longitude </td></tr>
      * </table>
+     * <b>Notes:</b>
+     * <ul>
+     *   <li>Default value: -180°</li>
+     * </ul>
      */
     public static final ParameterDescriptor<Double> INITIAL_LONGITUDE;
 
@@ -66,6 +70,11 @@
      *   <caption>Parameter names</caption>
      *   <tr><td> EPSG:    </td><td> Zone width </td></tr>
      * </table>
+     * <b>Notes:</b>
+     * <ul>
+     *   <li>Value domain: (0.0 … ∞)°</li>
+     *   <li>Default value: 6°</li>
+     * </ul>
      */
     public static final ParameterDescriptor<Double> ZONE_WIDTH;
 
diff --git a/core/sis-referencing/src/test/java/org/apache/sis/internal/referencing/provider/ParameterNameTableGenerator.java b/core/sis-referencing/src/test/java/org/apache/sis/internal/referencing/provider/ParameterNameTableGenerator.java
index 7dccd5c..6f8d309 100644
--- a/core/sis-referencing/src/test/java/org/apache/sis/internal/referencing/provider/ParameterNameTableGenerator.java
+++ b/core/sis-referencing/src/test/java/org/apache/sis/internal/referencing/provider/ParameterNameTableGenerator.java
@@ -26,18 +26,27 @@
 import java.nio.file.FileVisitResult;
 import java.nio.file.SimpleFileVisitor;
 import java.nio.file.attribute.BasicFileAttributes;
+import javax.measure.Unit;
 import org.opengis.util.GenericName;
 import org.opengis.metadata.Identifier;
-import org.opengis.parameter.ParameterDescriptor;
+import org.apache.sis.parameter.DefaultParameterDescriptor;
 import org.apache.sis.test.ProjectDirectories;
 import org.apache.sis.internal.jdk9.JDK9;
+import org.apache.sis.measure.Angle;
+import org.apache.sis.measure.Latitude;
+import org.apache.sis.measure.Longitude;
 import org.apache.sis.util.CharSequences;
+import org.apache.sis.util.StringBuilders;
+import org.apache.sis.measure.Range;
 
 import static org.junit.Assert.*;
 
 
 /**
  * Inserts comments with parameter names in the javadoc of parameters.
+ * This class needs to be run explicitly; it is not part of JUnit tests.
+ * After execution, files in the provider packages may be overwritten.
+ * Developer should execute {@code "git diff"} and inspect the changes.
  *
  * @author  Martin Desruisseaux (Geomatys)
  * @version 1.1
@@ -46,6 +55,16 @@
  */
 public final class ParameterNameTableGenerator extends SimpleFileVisitor<Path> {
     /**
+     * Value as the kind of object expected in {@link DefaultParameterDescriptor}.
+     */
+    private static final Double POSITIVE_ZERO = +0d,
+                                NEGATIVE_ZERO = -0d,
+                                MIN_LONGITUDE = Longitude.MIN_VALUE,
+                                MAX_LONGITUDE = Longitude.MAX_VALUE,
+                                MIN_LATITUDE  =  Latitude.MIN_VALUE,
+                                MAX_LATITUDE  =  Latitude.MAX_VALUE;
+
+    /**
      * The directory of Java source code to scan.
      */
     private final Path directory;
@@ -135,15 +154,15 @@
         for (int i=lines.size(); --i >= 0;) {
             final String line = lines.get(i);
             if (matcher.reset(line).matches()) {
-                final String name = matcher.group(1);
-                final ParameterDescriptor<?> descriptor;
+                final String fieldName = matcher.group(1);
+                final DefaultParameterDescriptor<?> descriptor;
                 try {
                     if (classe == null) {
                         classe = getClass(file);
                     }
-                    final Field field = classe.getDeclaredField(name);
+                    final Field field = classe.getDeclaredField(fieldName);
                     field.setAccessible(true);
-                    descriptor = (ParameterDescriptor<?>) field.get(null);
+                    descriptor = (DefaultParameterDescriptor<?>) field.get(null);
                 } catch (ReflectiveOperationException e) {
                     throw new AssertionError(e);
                 }
@@ -177,14 +196,90 @@
                 /*
                  * Format a HTML table in the comment with the name and aliases of each parameter.
                  */
-                write("<!-- Generated by ParameterNameTableGenerator -->", insertAt++);
-                write("<table class=\"sis\">", insertAt++);
-                write("  <caption>Parameter names</caption>", insertAt++);
-                write(descriptor.getName(), insertAt++);
+                write(insertAt++, "<!-- Generated by ParameterNameTableGenerator -->");
+                write(insertAt++, "<table class=\"sis\">");
+                write(insertAt++, "  <caption>Parameter names</caption>");
+                write(insertAt++, descriptor.getName());
                 for (final GenericName alias : descriptor.getAlias()) {
-                    write((Identifier) alias, insertAt++);
+                    write(insertAt++, (Identifier) alias);
                 }
-                write("</table>", insertAt);
+                write(insertAt++, "</table>");
+                /*
+                 * Format other information: default value, value domain, whether the value is mandatory, etc.
+                 * Default value of zero are omitted (i.e. unless otherwise specified, default values are zero
+                 * in the tables that we format). Range of values of [-90 … 90]° for latitude or [-180 … 180]°
+                 * for longitude are also omitted. In other words, we report only "unusual" things in the notes.
+                 */
+                Object  defaultValue = descriptor.getDefaultValue();
+                Range<?> valueDomain = descriptor.getValueDomain();
+                boolean  isOptional  = descriptor.getMinimumOccurs() == 0;
+                boolean  noDefault   = (defaultValue == null);
+                Object   minValue    = null;
+                Object   maxValue    = null;
+                if (valueDomain != null) {
+                    minValue = valueDomain.getMinValue();
+                    maxValue = valueDomain.getMaxValue();
+                    final boolean inclusive = valueDomain.isMinIncluded() && valueDomain.isMaxIncluded();
+                    if (fieldName.contains("LATITUDE") || fieldName.contains("PARALLEL")) {
+                        if (inclusive && MIN_LATITUDE.equals(minValue) && MAX_LATITUDE.equals(maxValue)) {
+                            valueDomain = null;
+                        }
+                    } else if (fieldName.contains("LONGITUDE") || fieldName.contains("MERIDIAN")) {
+                        if (inclusive && MIN_LONGITUDE.equals(minValue) && MAX_LONGITUDE.equals(maxValue)) {
+                            valueDomain = null;
+                        }
+                    } else if (minValue == null && maxValue == null) {
+                        valueDomain = null;
+                    }
+                }
+                if (POSITIVE_ZERO.equals(defaultValue)) {
+                    defaultValue = null;
+                }
+                if (defaultValue != null || valueDomain != null || isOptional || noDefault) {
+                    write(insertAt++, "<b>Notes:</b>");
+                    write(insertAt++, "<ul>");
+                    if (valueDomain != null) {
+                        final int p = buffer.length();
+                        buffer.append("   <li>");
+                        if ((minValue != null && minValue.equals(maxValue)) ||
+                            (NEGATIVE_ZERO.equals(minValue) && POSITIVE_ZERO.equals(maxValue)))
+                        {
+                            buffer.append("Value restricted to ").append(maxValue);
+                            StringBuilders.trimFractionalPart(buffer);
+                        } else {
+                            buffer.append("Value domain: ").append(valueDomain);
+                        }
+                        lines.add(insertAt++, buffer.append("</li>").toString());
+                        buffer.setLength(p);
+                    }
+                    if (defaultValue != null) {
+                        final int p = buffer.length();
+                        final boolean isText = !(defaultValue instanceof Number || defaultValue instanceof Angle);
+                        buffer.append("   <li>").append("Default value: ");
+                        if (isText) buffer.append("{@code ");
+                        buffer.append(defaultValue);
+                        if (isText) buffer.append('}');
+                        StringBuilders.trimFractionalPart(buffer);
+                        final Unit<?> unit = descriptor.getUnit();
+                        if (unit != null) {
+                            final String symbol = unit.getSymbol();
+                            if (!symbol.isEmpty()) {
+                                if (Character.isLetterOrDigit(symbol.charAt(0))) {
+                                    buffer.append(' ');
+                                }
+                                buffer.append(symbol);
+                            }
+                        }
+                        lines.add(insertAt++, buffer.append("</li>").toString());
+                        buffer.setLength(p);
+                    } else {
+                        write(insertAt++, "  <li>No default value</li>");
+                    }
+                    if (isOptional) {
+                        write(insertAt++, "  <li>Optional</li>");
+                    }
+                    write(insertAt++, "</ul>");
+                }
             }
         }
         /*
@@ -200,9 +295,11 @@
      * Appends the given line at the given position. This method writes the margin
      * (typically spaces followed by {@code '*'} and a single space) before the line.
      */
-    private void write(final String line, final int insertAt) {
+    private void write(final int insertAt, final String line) {
         final int p = buffer.length();
-        buffer.append(' ').append(line);
+        if (!line.isEmpty()) {
+            buffer.append(' ').append(line);
+        }
         lines.add(insertAt, buffer.toString());
         buffer.setLength(p);
     }
@@ -211,7 +308,7 @@
      * Appends the given authority and name at the given position. This method writes the margin
      * (typically spaces followed by {@code '*'} and a single space) before the line.
      */
-    private void write(final Identifier id, final int insertAt) {
+    private void write(final int insertAt, final Identifier id) {
         final int p = buffer.length();
         final String authority = id.getCodeSpace();
         buffer.append("   <tr><td> ").append(authority).append(':')
