You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sis.apache.org by de...@apache.org on 2020/04/09 16:56:34 UTC
[sis] branch geoapi-4.0 updated (6f8ff41 -> cac009d)
This is an automated email from the ASF dual-hosted git repository.
desruisseaux pushed a change to branch geoapi-4.0
in repository https://gitbox.apache.org/repos/asf/sis.git.
from 6f8ff41 Fix some anomalies observed when zooming or panning the map for a time long enough that some rendering happen during the gesture. This commit fixes some problems but not all of them; more investigations are needed.
new a33b746 Replace http links by https and minor documentation fixes.
new f6c88a1 Add missing parameters in the internal `toString()` representation of some map projections.
new cac009d Simplify the handling of transforms by updating a single Affine instance instead than adding/removing instances in the ObservableList.
The 3 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails. The revisions
listed as "add" were already present in the repository and have only
been added to this reference.
Summary of changes:
.../java/org/apache/sis/gui/map/MapCanvas.java | 113 ++++++++++-----------
.../apache/sis/internal/metadata/AxisNames.java | 4 +-
.../gazetteer/GeohashReferenceSystem.java | 2 +-
.../apache/sis/internal/referencing/Formulas.java | 2 +-
.../referencing/provider/Interpolation1D.java | 2 +-
.../internal/referencing/provider/Mollweide.java | 2 +-
.../java/org/apache/sis/io/wkt/Transliterator.java | 6 +-
.../java/org/apache/sis/io/wkt/package-info.java | 2 +-
.../apache/sis/referencing/cs/AxesConvention.java | 2 +-
.../org/apache/sis/referencing/cs/AxisFilter.java | 2 +-
.../sis/referencing/datum/BursaWolfParameters.java | 4 +-
.../sis/referencing/datum/DefaultEllipsoid.java | 7 --
.../operation/DefaultConicProjection.java | 2 +-
.../operation/DefaultCylindricalProjection.java | 2 +-
.../operation/DefaultPlanarProjection.java | 2 +-
.../referencing/operation/matrix/package-info.java | 2 +-
.../operation/projection/AlbersEqualArea.java | 2 +-
.../operation/projection/AzimuthalEquidistant.java | 73 ++++++++-----
.../projection/LambertConicConformal.java | 2 +-
.../referencing/operation/projection/Mercator.java | 2 +-
.../projection/ModifiedAzimuthalEquidistant.java | 11 +-
.../operation/projection/Mollweide.java | 4 +-
.../operation/projection/NormalizedProjection.java | 2 +-
.../operation/projection/ObliqueStereographic.java | 2 +-
.../operation/projection/Orthographic.java | 41 ++++----
.../operation/projection/SatelliteTracking.java | 21 ++++
.../operation/projection/Sinusoidal.java | 2 +-
.../operation/projection/package-info.java | 2 +-
.../operation/transform/LinearTransform.java | 2 +-
.../org/apache/sis/referencing/CommonCRSTest.java | 2 +-
.../apache/sis/referencing/cs/HardCodedAxes.java | 4 +-
.../org/apache/sis/internal/util/DoubleDouble.java | 2 +-
.../java/org/apache/sis/internal/util/X364.java | 2 +-
.../main/java/org/apache/sis/math/Statistics.java | 4 +-
.../java/org/apache/sis/measure/NumberRange.java | 4 +-
.../main/java/org/apache/sis/measure/Range.java | 4 +-
.../java/org/apache/sis/measure/RangeFormat.java | 4 +-
.../java/org/apache/sis/measure/UnitDimension.java | 2 +-
.../java/org/apache/sis/math/StatisticsTest.java | 2 +-
39 files changed, 190 insertions(+), 162 deletions(-)
[sis] 01/03: Replace http links by https and minor documentation
fixes.
Posted by de...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
desruisseaux pushed a commit to branch geoapi-4.0
in repository https://gitbox.apache.org/repos/asf/sis.git
commit a33b746bd073ecb946699b35544873caca9b1887
Author: Martin Desruisseaux <ma...@geomatys.com>
AuthorDate: Thu Apr 9 14:38:55 2020 +0200
Replace http links by https and minor documentation fixes.
---
.../apache/sis/internal/metadata/AxisNames.java | 4 +--
.../gazetteer/GeohashReferenceSystem.java | 2 +-
.../apache/sis/internal/referencing/Formulas.java | 2 +-
.../referencing/provider/Interpolation1D.java | 2 +-
.../internal/referencing/provider/Mollweide.java | 2 +-
.../java/org/apache/sis/io/wkt/Transliterator.java | 6 ++---
.../java/org/apache/sis/io/wkt/package-info.java | 2 +-
.../apache/sis/referencing/cs/AxesConvention.java | 2 +-
.../org/apache/sis/referencing/cs/AxisFilter.java | 2 +-
.../sis/referencing/datum/BursaWolfParameters.java | 4 +--
.../operation/DefaultConicProjection.java | 2 +-
.../operation/DefaultCylindricalProjection.java | 2 +-
.../operation/DefaultPlanarProjection.java | 2 +-
.../referencing/operation/matrix/package-info.java | 2 +-
.../operation/projection/AlbersEqualArea.java | 2 +-
.../operation/projection/AzimuthalEquidistant.java | 29 +++++++++++++++++++---
.../projection/LambertConicConformal.java | 2 +-
.../referencing/operation/projection/Mercator.java | 2 +-
.../projection/ModifiedAzimuthalEquidistant.java | 11 ++------
.../operation/projection/Mollweide.java | 4 +--
.../operation/projection/NormalizedProjection.java | 2 +-
.../operation/projection/ObliqueStereographic.java | 2 +-
.../operation/projection/Orthographic.java | 4 +--
.../operation/projection/Sinusoidal.java | 2 +-
.../operation/projection/package-info.java | 2 +-
.../operation/transform/LinearTransform.java | 2 +-
.../org/apache/sis/referencing/CommonCRSTest.java | 2 +-
.../apache/sis/referencing/cs/HardCodedAxes.java | 4 +--
.../org/apache/sis/internal/util/DoubleDouble.java | 2 +-
.../java/org/apache/sis/internal/util/X364.java | 2 +-
.../main/java/org/apache/sis/math/Statistics.java | 4 +--
.../java/org/apache/sis/measure/NumberRange.java | 4 +--
.../main/java/org/apache/sis/measure/Range.java | 4 +--
.../java/org/apache/sis/measure/RangeFormat.java | 4 +--
.../java/org/apache/sis/measure/UnitDimension.java | 2 +-
.../java/org/apache/sis/math/StatisticsTest.java | 2 +-
36 files changed, 73 insertions(+), 57 deletions(-)
diff --git a/core/sis-metadata/src/main/java/org/apache/sis/internal/metadata/AxisNames.java b/core/sis-metadata/src/main/java/org/apache/sis/internal/metadata/AxisNames.java
index 2adcf16..7cde0f0 100644
--- a/core/sis-metadata/src/main/java/org/apache/sis/internal/metadata/AxisNames.java
+++ b/core/sis-metadata/src/main/java/org/apache/sis/internal/metadata/AxisNames.java
@@ -72,8 +72,8 @@ public final class AxisNames {
* <p>Axis name <cite>"Geocentric longitude"</cite> can also be used.
* In astronomy, <cite>"Planetocentric longitude"</cite> is sometime used.</p>
*
- * @see <a href="http://en.wikipedia.org/wiki/Spherical_coordinate_system">Spherical coordinate system on Wikipedia</a>
- * @see <a href="http://mathworld.wolfram.com/SphericalCoordinates.html">Spherical coordinate system on MathWorld</a>
+ * @see <a href="https://en.wikipedia.org/wiki/Spherical_coordinate_system">Spherical coordinate system on Wikipedia</a>
+ * @see <a href="https://mathworld.wolfram.com/SphericalCoordinates.html">Spherical coordinate system on MathWorld</a>
*/
public static final String SPHERICAL_LONGITUDE = "Spherical longitude";
diff --git a/core/sis-referencing-by-identifiers/src/main/java/org/apache/sis/referencing/gazetteer/GeohashReferenceSystem.java b/core/sis-referencing-by-identifiers/src/main/java/org/apache/sis/referencing/gazetteer/GeohashReferenceSystem.java
index 5d3d781..b2b1e48 100644
--- a/core/sis-referencing-by-identifiers/src/main/java/org/apache/sis/referencing/gazetteer/GeohashReferenceSystem.java
+++ b/core/sis-referencing-by-identifiers/src/main/java/org/apache/sis/referencing/gazetteer/GeohashReferenceSystem.java
@@ -53,7 +53,7 @@ import org.opengis.referencing.gazetteer.LocationType;
* @author Martin Desruisseaux (Geomatys)
* @version 0.8
*
- * @see <a href="http://en.wikipedia.org/wiki/Geohash">Geohash on Wikipedia</a>
+ * @see <a href="https://en.wikipedia.org/wiki/Geohash">Geohash on Wikipedia</a>
*
* @since 0.8
* @module
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/Formulas.java b/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/Formulas.java
index f0012a5..ee258e4 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/Formulas.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/Formulas.java
@@ -80,7 +80,7 @@ public final class Formulas extends Static {
* From Wikipedia, <cite>"In astronomy, a Julian year (symbol: <b>a</b>) is a unit of measurement of time
* defined as exactly 365.25 days of 86,400 SI seconds each."</cite>.
*
- * @see <a href="http://en.wikipedia.org/wiki/Julian_year_%28astronomy%29">Wikipedia: Julian year (astronomy)</a>
+ * @see <a href="https://en.wikipedia.org/wiki/Julian_year_%28astronomy%29">Wikipedia: Julian year (astronomy)</a>
*/
public static final long JULIAN_YEAR_LENGTH = 31557600000L;
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/provider/Interpolation1D.java b/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/provider/Interpolation1D.java
index f7b8cc1..fe0942b 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/provider/Interpolation1D.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/provider/Interpolation1D.java
@@ -49,7 +49,7 @@ public final class Interpolation1D extends AbstractProvider {
* This parameter is optional and often omitted.
*
* @see <a href="https://en.wikipedia.org/wiki/Image_%28mathematics%29#Inverse_image">Preimage on Wikipedia</a>
- * @see <a href="http://mathworld.wolfram.com/Preimage.html">Preimage on MathWord</a>
+ * @see <a href="https://mathworld.wolfram.com/Preimage.html">Preimage on MathWord</a>
*/
private static final ParameterDescriptor<double[]> PREIMAGE;
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/provider/Mollweide.java b/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/provider/Mollweide.java
index ca2abb2..57446c0 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/provider/Mollweide.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/provider/Mollweide.java
@@ -32,7 +32,7 @@ import org.apache.sis.referencing.operation.projection.NormalizedProjection;
* @author Martin Desruisseaux (Geomatys)
* @version 1.0
*
- * @see <a href="http://mathworld.wolfram.com/MollweideProjection.html">Mathworld formulas</a>
+ * @see <a href="https://mathworld.wolfram.com/MollweideProjection.html">Mathworld formulas</a>
* @see <a href="http://geotiff.maptools.org/proj_list/mollweide.html">GeoTIFF parameters for Mollweide</a>
*
* @since 1.0
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/io/wkt/Transliterator.java b/core/sis-referencing/src/main/java/org/apache/sis/io/wkt/Transliterator.java
index 79073ac..48eee53 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/io/wkt/Transliterator.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/io/wkt/Transliterator.java
@@ -69,8 +69,8 @@ import org.apache.sis.util.Characters;
* </ul>
*
* <div class="note"><b>Note:</b> at least two conventions exist about the meaning of (<var>r</var>, θ, φ) in a
- * spherical coordinate system (see <a href="http://en.wikipedia.org/wiki/Spherical_coordinate_system">Wikipedia</a>
- * or <a href="http://mathworld.wolfram.com/SphericalCoordinates.html">MathWorld</a> for more information).
+ * spherical coordinate system (see <a href="https://en.wikipedia.org/wiki/Spherical_coordinate_system">Wikipedia</a>
+ * or <a href="https://mathworld.wolfram.com/SphericalCoordinates.html">MathWorld</a> for more information).
* When using the <em>mathematics</em> convention, θ is the azimuthal angle in the
* equatorial plane (roughly equivalent to longitude λ) while φ is an angle measured from a pole (also known as
* colatitude). But when using the <em>physics</em> convention, the meaning of θ and φ are interchanged.
@@ -321,7 +321,7 @@ public abstract class Transliterator implements Serializable {
* {@linkplain org.apache.sis.referencing.cs.DefaultEllipsoidalCS ellipsoidal CS}.</li>
* <li>φ or φ′ or φ<sub>c</sub> or Ω → <var>U</var> if used in a
* {@linkplain org.apache.sis.referencing.cs.DefaultSphericalCS spherical CS}, regardless of whether the
- * coordinate system follows <a href="http://en.wikipedia.org/wiki/Spherical_coordinate_system">physics,
+ * coordinate system follows <a href="https://en.wikipedia.org/wiki/Spherical_coordinate_system">physics,
* mathematics or other conventions</a>.</li>
* <li>θ → <var>V</var> if used in a {@linkplain org.apache.sis.referencing.cs.DefaultSphericalCS spherical CS} (regardless of above-cited coordinate system convention).</li>
* <li>θ → <var>U</var> if used in a polar CS.</li>
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/io/wkt/package-info.java b/core/sis-referencing/src/main/java/org/apache/sis/io/wkt/package-info.java
index 7907ba6..0893f14 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/io/wkt/package-info.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/io/wkt/package-info.java
@@ -63,7 +63,7 @@
* <h2>Geometry WKT</h2>
* The {@link org.apache.sis.geometry.GeneralEnvelope} and {@link org.apache.sis.geometry.GeneralDirectPosition} classes
* provide their own, limited, WKT parsing and formatting services for the {@code BOX} and {@code POINT} elements.
- * A description for this WKT format can be found on <a href="http://en.wikipedia.org/wiki/Well-known_text">Wikipedia</a>.
+ * A description for this WKT format can be found on <a href="https://en.wikipedia.org/wiki/Well-known_text">Wikipedia</a>.
*
* <h2>Where to find WKT examples</h2>
* An excellent source of well-formed WKT is the online <cite>EPSG Geodetic Parameter Registry</cite>.
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/referencing/cs/AxesConvention.java b/core/sis-referencing/src/main/java/org/apache/sis/referencing/cs/AxesConvention.java
index c110764..cb866ea 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/referencing/cs/AxesConvention.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/referencing/cs/AxesConvention.java
@@ -257,7 +257,7 @@ public enum AxesConvention implements AxisFilter {
* </table></div>
*
* @see org.apache.sis.referencing.cs.CoordinateSystems#angle(AxisDirection, AxisDirection)
- * @see <a href="http://en.wikipedia.org/wiki/Right_hand_rule">Right-hand rule on Wikipedia</a>
+ * @see <a href="https://en.wikipedia.org/wiki/Right_hand_rule">Right-hand rule on Wikipedia</a>
*/
RIGHT_HANDED,
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/referencing/cs/AxisFilter.java b/core/sis-referencing/src/main/java/org/apache/sis/referencing/cs/AxisFilter.java
index f68f30d..01bf6af 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/referencing/cs/AxisFilter.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/referencing/cs/AxisFilter.java
@@ -29,7 +29,7 @@ import javax.measure.Unit;
*
* <div class="note"><b>Terminology note</b>
* the word <cite>“filter”</cite> is understood here as <cite>“a computer program or subroutine to process a stream,
- * producing another stream”</cite> (<a href="http://en.wikipedia.org/wiki/Filter_%28software%29">Wikipedia</a>).
+ * producing another stream”</cite> (<a href="https://en.wikipedia.org/wiki/Filter_%28software%29">Wikipedia</a>).
* </div>
*
* <p>Note that filtering one or more axes may result in a change of coordinate system type.
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/referencing/datum/BursaWolfParameters.java b/core/sis-referencing/src/main/java/org/apache/sis/referencing/datum/BursaWolfParameters.java
index 6d276ad..622a4d8 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/referencing/datum/BursaWolfParameters.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/referencing/datum/BursaWolfParameters.java
@@ -126,7 +126,7 @@ import java.util.Objects;
* @version 0.7
*
* @see DefaultGeodeticDatum#getBursaWolfParameters()
- * @see <a href="http://en.wikipedia.org/wiki/Helmert_transformation">Wikipedia: Helmert transformation</a>
+ * @see <a href="https://en.wikipedia.org/wiki/Helmert_transformation">Wikipedia: Helmert transformation</a>
*
* @since 0.4
* @module
@@ -514,7 +514,7 @@ public class BursaWolfParameters extends FormattableObject implements Cloneable,
* <ul>
* <li>The matrix shall be {@linkplain org.apache.sis.referencing.operation.matrix.MatrixSIS#isAffine() affine}.</li>
* <li>The sub-matrix defined by {@code matrix} without the last row and last column shall be
- * <a href="http://en.wikipedia.org/wiki/Skew-symmetric_matrix">skew-symmetric</a> (a.k.a. antisymmetric).</li>
+ * <a href="https://en.wikipedia.org/wiki/Skew-symmetric_matrix">skew-symmetric</a> (a.k.a. antisymmetric).</li>
* </ul>
*
* @param matrix the matrix from which to get Bursa-Wolf parameters.
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/DefaultConicProjection.java b/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/DefaultConicProjection.java
index d7f2b7f..2f9e4db 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/DefaultConicProjection.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/DefaultConicProjection.java
@@ -36,7 +36,7 @@ import org.opengis.referencing.crs.ProjectedCRS;
* @version 0.6
*
* @see org.apache.sis.referencing.crs.DefaultProjectedCRS
- * @see <a href="http://mathworld.wolfram.com/ConicProjection.html">Conic projection on MathWorld</a>
+ * @see <a href="https://mathworld.wolfram.com/ConicProjection.html">Conic projection on MathWorld</a>
*
* @since 0.6
* @module
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/DefaultCylindricalProjection.java b/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/DefaultCylindricalProjection.java
index b339b72..60220ce 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/DefaultCylindricalProjection.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/DefaultCylindricalProjection.java
@@ -36,7 +36,7 @@ import org.opengis.referencing.crs.ProjectedCRS;
* @version 0.6
*
* @see org.apache.sis.referencing.crs.DefaultProjectedCRS
- * @see <a href="http://mathworld.wolfram.com/CylindricalProjection.html">Cylindrical projection on MathWorld</a>
+ * @see <a href="https://mathworld.wolfram.com/CylindricalProjection.html">Cylindrical projection on MathWorld</a>
*
* @since 0.6
* @module
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/DefaultPlanarProjection.java b/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/DefaultPlanarProjection.java
index a17ecca..4865710 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/DefaultPlanarProjection.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/DefaultPlanarProjection.java
@@ -36,7 +36,7 @@ import org.opengis.referencing.crs.ProjectedCRS;
* @version 0.6
*
* @see org.apache.sis.referencing.crs.DefaultProjectedCRS
- * @see <a href="http://mathworld.wolfram.com/AzimuthalProjection.html">Azimuthal projection on MathWorld</a>
+ * @see <a href="https://mathworld.wolfram.com/AzimuthalProjection.html">Azimuthal projection on MathWorld</a>
*
* @since 0.6
* @module
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/matrix/package-info.java b/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/matrix/package-info.java
index db87112..23ced6d 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/matrix/package-info.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/matrix/package-info.java
@@ -56,7 +56,7 @@
* identity transform.
*
* <p>The current implementation uses
- * <a href="http://en.wikipedia.org/wiki/Double-double_%28arithmetic%29#Double-double_arithmetic">double-double
+ * <a href="https://en.wikipedia.org/wiki/Double-double_%28arithmetic%29#Double-double_arithmetic">double-double
* arithmetic</a>. However this may change in any future SIS version.</p>
*
* <h2>Related projects</h2>
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/projection/AlbersEqualArea.java b/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/projection/AlbersEqualArea.java
index c9aa589..4dc97c3 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/projection/AlbersEqualArea.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/projection/AlbersEqualArea.java
@@ -42,7 +42,7 @@ import static org.apache.sis.internal.referencing.provider.AlbersEqualArea.*;
* See the following references for an overview:
* <ul>
* <li><a href="https://en.wikipedia.org/wiki/Albers_projection">Albers projection on Wikipedia</a></li>
- * <li><a href="http://mathworld.wolfram.com/AlbersEqual-AreaConicProjection.html">Albers Equal-Area Conic projection on MathWorld</a></li>
+ * <li><a href="https://mathworld.wolfram.com/AlbersEqual-AreaConicProjection.html">Albers Equal-Area Conic projection on MathWorld</a></li>
* </ul>
*
* <p>The {@code "standard_parallel_2"} parameter is optional and will be given the same value as
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/projection/AzimuthalEquidistant.java b/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/projection/AzimuthalEquidistant.java
index 6bd1b4a..c4123bd 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/projection/AzimuthalEquidistant.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/projection/AzimuthalEquidistant.java
@@ -33,14 +33,37 @@ import static org.apache.sis.internal.referencing.provider.ModifiedAzimuthalEqui
* This projection method has no EPSG code.
* See the following references for an overview:
* <ul>
- * <li><a href="https://en.wikipedia.org/wiki/Azimuthal_equidistant_projection">Azimuthal equidistant projection</a></li>
- * <li><a href="https://mathworld.wolfram.com/AzimuthalEquidistantProjection.html">Azimuthal Equidistant Projection</a></li>
+ * <li><a href="https://en.wikipedia.org/wiki/Azimuthal_equidistant_projection">Azimuthal equidistant projection on Wikipedia</a></li>
+ * <li><a href="https://mathworld.wolfram.com/AzimuthalEquidistantProjection.html">Azimuthal Equidistant Projection on MathWorld</a></li>
* </ul>
*
* Current implementation supports only the spherical case.
- * For ellipsoidal formulas, the {@link ModifiedAzimuthalEquidistant} provides an approximation
+ * For ellipsoidal formulas, the {@link ModifiedAzimuthalEquidistant} class provides an approximation
* valid under 800 kilometres of the projection centre.
*
+ * <div class="note"><b>Note of projection variants:</b>
+ * formulas for this map projection have been published by Snyder (1987) in the following forms:
+ * <ul>
+ * <li><cite>Azimuthal Equidistant projection for the sphere.</cite>
+ * This form has no EPSG code. It is implemented in Apache SIS as "Azimuthal Equidistant (Spherical)".</li>
+ * <li><cite>Polar aspect of ellipsoidal Azimuthal Equidistant.</cite>
+ * This form has no EPSG code. It is not yet implemented in Apache SIS.</li>
+ * <li><cite>Oblique and equatorial aspects of ellipsoidal Azimuthal Equidistant:</cite>
+ * <ul>
+ * <li><cite>Nearly rigorous sets of formulas.</cite>
+ * The EPSG name is "Modified Azimuthal Equidistant" (EPSG:9832).
+ * This projection is implemented by {@link ModifiedAzimuthalEquidistant}.</li>
+ * <li><cite>Approximate sets of formulas.</cite>
+ * The EPSG name is "Guam projection" (EPSG:9831).
+ * This projection is not yet implemented in Apache SIS.</li>
+ * </ul>
+ * </li>
+ * </ul>
+ *
+ * This base class is aimed to provide the general case valid for all distances;
+ * the fact that current version uses spherical formulas should be considered as an implementation limitation
+ * that may change in future version. Subclasses are specialization for more restricted areas.</div>
+ *
* @author Martin Desruisseaux (Geomatys)
* @version 1.1
*
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/projection/LambertConicConformal.java b/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/projection/LambertConicConformal.java
index 91209c3..6dbaf4c 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/projection/LambertConicConformal.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/projection/LambertConicConformal.java
@@ -48,7 +48,7 @@ import static org.apache.sis.math.MathFunctions.isPositive;
* See the following references for an overview:
* <ul>
* <li><a href="https://en.wikipedia.org/wiki/Lambert_conformal_conic_projection">Lambert Conformal Conic projection on Wikipedia</a></li>
- * <li><a href="http://mathworld.wolfram.com/LambertConformalConicProjection.html">Lambert Conformal Conic projection on MathWorld</a></li>
+ * <li><a href="https://mathworld.wolfram.com/LambertConformalConicProjection.html">Lambert Conformal Conic projection on MathWorld</a></li>
* </ul>
*
* <h2>Description</h2>
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/projection/Mercator.java b/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/projection/Mercator.java
index 2c260e1..67105f6 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/projection/Mercator.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/projection/Mercator.java
@@ -47,7 +47,7 @@ import static org.apache.sis.math.MathFunctions.isPositive;
* See the following references for an overview:
* <ul>
* <li><a href="https://en.wikipedia.org/wiki/Mercator_projection">Mercator projection on Wikipedia</a></li>
- * <li><a href="http://mathworld.wolfram.com/MercatorProjection.html">Mercator projection on MathWorld</a></li>
+ * <li><a href="https://mathworld.wolfram.com/MercatorProjection.html">Mercator projection on MathWorld</a></li>
* </ul>
*
* <h2>Description</h2>
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/projection/ModifiedAzimuthalEquidistant.java b/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/projection/ModifiedAzimuthalEquidistant.java
index 5e26b4c..811eb49 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/projection/ModifiedAzimuthalEquidistant.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/projection/ModifiedAzimuthalEquidistant.java
@@ -31,15 +31,8 @@ import static org.apache.sis.internal.referencing.provider.ModifiedAzimuthalEqui
/**
* <cite>Modified Azimuthal Equidistant</cite> projection (EPSG:9832).
- * See the following references for an overview:
- * <ul>
- * <li><a href="https://en.wikipedia.org/wiki/Azimuthal_equidistant_projection">Azimuthal equidistant projection</a></li>
- * <li><a href="https://mathworld.wolfram.com/AzimuthalEquidistantProjection.html">Azimuthal Equidistant Projection</a></li>
- * </ul>
- *
- * <h2>Description</h2>
- * An approximation of the oblique form of the <cite>Azimuthal Equidistant</cite> projection.
- * For relatively short distances (e.g. under 800 kilometres) this modification introduces no significant error.
+ * This is an approximation of the oblique form of the <cite>Azimuthal Equidistant</cite> projection.
+ * For distances under 800 kilometres this modification introduces no significant error.
*
* @author Martin Desruisseaux (Geomatys)
* @version 1.1
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/projection/Mollweide.java b/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/projection/Mollweide.java
index fd5353f..872a4b6 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/projection/Mollweide.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/projection/Mollweide.java
@@ -39,7 +39,7 @@ import static org.apache.sis.internal.referencing.provider.Mollweide.*;
* See the following references for an overview:
* <ul>
* <li><a href="https://en.wikipedia.org/wiki/Mollweide_projection">Mollweide projection on Wikipedia</a></li>
- * <li><a href="http://mathworld.wolfram.com/MollweideProjection.html">Mollweide projection on MathWorld</a></li>
+ * <li><a href="https://mathworld.wolfram.com/MollweideProjection.html">Mollweide projection on MathWorld</a></li>
* </ul>
*
* @todo This projection is not {@link org.apache.sis.math.FunctionProperty#SURJECTIVE surjective}.
@@ -95,7 +95,7 @@ public class Mollweide extends NormalizedProjection {
/**
* Converts the specified (λ,φ) coordinate and stores the (<var>x</var>,<var>y</var>) result in {@code dstPts}.
- * The units of measurement are implementation-specific (see subclass javadoc).
+ * The units of measurement are implementation-specific (see super-class javadoc).
*
* @return the matrix of the projection derivative at the given source position,
* or {@code null} if the {@code derivate} argument is {@code false}.
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/projection/NormalizedProjection.java b/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/projection/NormalizedProjection.java
index 92cc422..36a6fb4 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/projection/NormalizedProjection.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/projection/NormalizedProjection.java
@@ -129,7 +129,7 @@ import static java.lang.Math.*;
* @version 1.1
*
* @see ContextualParameters
- * @see <a href="http://mathworld.wolfram.com/MapProjection.html">Map projections on MathWorld</a>
+ * @see <a href="https://mathworld.wolfram.com/MapProjection.html">Map projections on MathWorld</a>
*
* @since 0.6
* @module
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/projection/ObliqueStereographic.java b/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/projection/ObliqueStereographic.java
index d443612..60c4f51 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/projection/ObliqueStereographic.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/projection/ObliqueStereographic.java
@@ -41,7 +41,7 @@ import static org.apache.sis.internal.referencing.provider.ObliqueStereographic.
* See the following references for an overview:
* <ul>
* <li><a href="https://en.wikipedia.org/wiki/Stereographic_projection">Stereographic projection or Wikipedia</a></li>
- * <li><a href="http://mathworld.wolfram.com/StereographicProjection.html">Stereographic projection or MathWorld</a></li>
+ * <li><a href="https://mathworld.wolfram.com/StereographicProjection.html">Stereographic projection or MathWorld</a></li>
* </ul>
*
* <h2>Description</h2>
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/projection/Orthographic.java b/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/projection/Orthographic.java
index 87b9705..1b77965 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/projection/Orthographic.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/projection/Orthographic.java
@@ -37,7 +37,7 @@ import static org.apache.sis.internal.referencing.provider.Orthographic.*;
* See the following references for an overview:
* <ul>
* <li><a href="https://en.wikipedia.org/wiki/Orthographic_projection_in_cartography">Orthographic projection on Wikipedia</a></li>
- * <li><a href="http://mathworld.wolfram.com/OrthographicProjection.html">Orthographic projection on MathWorld</a></li>
+ * <li><a href="https://mathworld.wolfram.com/OrthographicProjection.html">Orthographic projection on MathWorld</a></li>
* </ul>
*
* <h2>Description</h2>
@@ -126,7 +126,7 @@ public class Orthographic extends NormalizedProjection {
/**
* Converts the specified (λ,φ) coordinate and stores the (<var>x</var>,<var>y</var>) result in {@code dstPts}.
- * The units of measurement are implementation-specific (see subclass javadoc).
+ * The units of measurement are implementation-specific (see super-class javadoc).
*
* @return the matrix of the projection derivative at the given source position,
* or {@code null} if the {@code derivate} argument is {@code false}.
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/projection/Sinusoidal.java b/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/projection/Sinusoidal.java
index a3895ee..78697e3 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/projection/Sinusoidal.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/projection/Sinusoidal.java
@@ -37,7 +37,7 @@ import static org.apache.sis.internal.referencing.provider.Sinusoidal.*;
* See the following references for an overview:
* <ul>
* <li><a href="https://en.wikipedia.org/wiki/Sinusoidal_projection">Sinusoidal projection on Wikipedia</a></li>
- * <li><a href="http://mathworld.wolfram.com/SinusoidalProjection.html">Sinusoidal projection on MathWorld</a></li>
+ * <li><a href="https://mathworld.wolfram.com/SinusoidalProjection.html">Sinusoidal projection on MathWorld</a></li>
* </ul>
*
* @author Martin Desruisseaux (Geomatys)
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/projection/package-info.java b/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/projection/package-info.java
index 189180d..255d2c5 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/projection/package-info.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/projection/package-info.java
@@ -161,7 +161,7 @@
* @author Matthieu Bastianelli (Geomatys)
* @version 1.1
*
- * @see <a href="http://mathworld.wolfram.com/MapProjection.html">Map projections on MathWorld</a>
+ * @see <a href="https://mathworld.wolfram.com/MapProjection.html">Map projections on MathWorld</a>
*
* @since 0.6
* @module
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/transform/LinearTransform.java b/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/transform/LinearTransform.java
index 3776331..a936947 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/transform/LinearTransform.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/transform/LinearTransform.java
@@ -67,7 +67,7 @@ import org.opengis.referencing.operation.NoninvertibleTransformException;
* @see org.apache.sis.referencing.operation.transform.MathTransforms#linear(Matrix)
* @see org.apache.sis.referencing.operation.builder.LinearTransformBuilder
* @see java.awt.geom.AffineTransform
- * @see <a href="http://mathworld.wolfram.com/AffineTransformation.html">Affine transformation on MathWorld</a>
+ * @see <a href="https://mathworld.wolfram.com/AffineTransformation.html">Affine transformation on MathWorld</a>
*
* @since 0.4
* @module
diff --git a/core/sis-referencing/src/test/java/org/apache/sis/referencing/CommonCRSTest.java b/core/sis-referencing/src/test/java/org/apache/sis/referencing/CommonCRSTest.java
index 61e7029..d0e31e6 100644
--- a/core/sis-referencing/src/test/java/org/apache/sis/referencing/CommonCRSTest.java
+++ b/core/sis-referencing/src/test/java/org/apache/sis/referencing/CommonCRSTest.java
@@ -250,7 +250,7 @@ public final strictfp class CommonCRSTest extends TestCase {
/**
* Verifies the epoch values of temporal enumeration compared to the Julian epoch.
*
- * @see <a href="http://en.wikipedia.org/wiki/Julian_day">Wikipedia: Julian day</a>
+ * @see <a href="https://en.wikipedia.org/wiki/Julian_day">Wikipedia: Julian day</a>
*/
@Test
public void testTemporal() {
diff --git a/core/sis-referencing/src/test/java/org/apache/sis/referencing/cs/HardCodedAxes.java b/core/sis-referencing/src/test/java/org/apache/sis/referencing/cs/HardCodedAxes.java
index aa8c636..ac65e53 100644
--- a/core/sis-referencing/src/test/java/org/apache/sis/referencing/cs/HardCodedAxes.java
+++ b/core/sis-referencing/src/test/java/org/apache/sis/referencing/cs/HardCodedAxes.java
@@ -217,8 +217,8 @@ public final strictfp class HardCodedAxes {
* @see #GEODETIC_LONGITUDE
* @see #SPHERICAL_LATITUDE
*
- * @see <a href="http://en.wikipedia.org/wiki/Spherical_coordinate_system">Spherical coordinate system on Wikipedia</a>
- * @see <a href="http://mathworld.wolfram.com/SphericalCoordinates.html">Spherical coordinate system on MathWorld</a>
+ * @see <a href="https://en.wikipedia.org/wiki/Spherical_coordinate_system">Spherical coordinate system on Wikipedia</a>
+ * @see <a href="https://mathworld.wolfram.com/SphericalCoordinates.html">Spherical coordinate system on MathWorld</a>
*/
public static final DefaultCoordinateSystemAxis SPHERICAL_LONGITUDE = create(AxisNames.SPHERICAL_LONGITUDE, "θ",
AxisDirection.EAST, Units.DEGREE, -180, 180, RangeMeaning.WRAPAROUND);
diff --git a/core/sis-utility/src/main/java/org/apache/sis/internal/util/DoubleDouble.java b/core/sis-utility/src/main/java/org/apache/sis/internal/util/DoubleDouble.java
index b30d0cd..992ec6d 100644
--- a/core/sis-utility/src/main/java/org/apache/sis/internal/util/DoubleDouble.java
+++ b/core/sis-utility/src/main/java/org/apache/sis/internal/util/DoubleDouble.java
@@ -58,7 +58,7 @@ import org.apache.sis.math.DecimalFunctions;
* @author Martin Desruisseaux (Geomatys)
* @version 1.1
*
- * @see <a href="http://en.wikipedia.org/wiki/Double-double_%28arithmetic%29#Double-double_arithmetic">Wikipedia: Double-double arithmetic</a>
+ * @see <a href="https://en.wikipedia.org/wiki/Double-double_%28arithmetic%29#Double-double_arithmetic">Wikipedia: Double-double arithmetic</a>
*
* @since 0.4
* @module
diff --git a/core/sis-utility/src/main/java/org/apache/sis/internal/util/X364.java b/core/sis-utility/src/main/java/org/apache/sis/internal/util/X364.java
index e90bc2e..57a48c3 100644
--- a/core/sis-utility/src/main/java/org/apache/sis/internal/util/X364.java
+++ b/core/sis-utility/src/main/java/org/apache/sis/internal/util/X364.java
@@ -34,7 +34,7 @@ import org.apache.sis.util.resources.Errors;
* @author Martin Desruisseaux (IRD, Geomatys)
* @version 0.7
*
- * @see <a href="http://en.wikipedia.org/wiki/ANSI_escape_code">Wikipedia: ANSI escape codes</a>
+ * @see <a href="https://en.wikipedia.org/wiki/ANSI_escape_code">Wikipedia: ANSI escape codes</a>
* @see org.apache.sis.io.wkt.Colors
*
* @since 0.3
diff --git a/core/sis-utility/src/main/java/org/apache/sis/math/Statistics.java b/core/sis-utility/src/main/java/org/apache/sis/math/Statistics.java
index bd5c14b..d33e9db 100644
--- a/core/sis-utility/src/main/java/org/apache/sis/math/Statistics.java
+++ b/core/sis-utility/src/main/java/org/apache/sis/math/Statistics.java
@@ -50,7 +50,7 @@ import static java.lang.Double.doubleToLongBits;
* <code>differences().{@linkplain #scale(double) scale}(1/Δx)</code>.</p>
*
* <p>Statistics are computed on the fly using the
- * <a href="http://en.wikipedia.org/wiki/Kahan_summation_algorithm">Kahan summation algorithm</a>
+ * <a href="https://en.wikipedia.org/wiki/Kahan_summation_algorithm">Kahan summation algorithm</a>
* for reducing the numerical errors; the sample values are never stored in memory.</p>
*
* <p>An instance of {@code Statistics} is initially empty: the {@linkplain #count() count} of
@@ -448,7 +448,7 @@ public class Statistics implements DoubleConsumer, LongConsumer, Cloneable, Seri
* methods have a uniform distribution, then the returned value should be close to
* <code>sqrt({@linkplain #span() span}² / 12)</code>. If they have a
* Gaussian distribution (which is the most common case), then the returned value
- * is related to the <a href="http://en.wikipedia.org/wiki/Error_function">error
+ * is related to the <a href="https://en.wikipedia.org/wiki/Error_function">error
* function</a>.
*
* <p>As a reminder, the table below gives the probability for a sample value to be
diff --git a/core/sis-utility/src/main/java/org/apache/sis/measure/NumberRange.java b/core/sis-utility/src/main/java/org/apache/sis/measure/NumberRange.java
index c5d4989..08a8e4e 100644
--- a/core/sis-utility/src/main/java/org/apache/sis/measure/NumberRange.java
+++ b/core/sis-utility/src/main/java/org/apache/sis/measure/NumberRange.java
@@ -57,7 +57,7 @@ import org.apache.sis.util.collection.WeakHashSet;
*
* <h2>Relationship with standards</h2>
* {@code NumberRange} is the SIS class closest to the
- * <a href="http://en.wikipedia.org/wiki/Interval_%28mathematics%29">mathematical definition of interval</a>.
+ * <a href="https://en.wikipedia.org/wiki/Interval_%28mathematics%29">mathematical definition of interval</a>.
* It is closely related, while not identical, to the ISO 19123 (<cite>Coverage geometry and functions</cite>)
* definition of "ranges". At the difference of the parent {@link Range} class, which can be used only with
* {@linkplain org.opengis.coverage.DiscreteCoverage discrete coverages}, the {@code NumberRange} class can
@@ -85,7 +85,7 @@ import org.apache.sis.util.collection.WeakHashSet;
*
* @see RangeFormat
* @see org.apache.sis.util.collection.RangeSet
- * @see <a href="http://en.wikipedia.org/wiki/Interval_%28mathematics%29">Wikipedia: Interval</a>
+ * @see <a href="https://en.wikipedia.org/wiki/Interval_%28mathematics%29">Wikipedia: Interval</a>
*
* @since 0.3
* @module
diff --git a/core/sis-utility/src/main/java/org/apache/sis/measure/Range.java b/core/sis-utility/src/main/java/org/apache/sis/measure/Range.java
index e192dcb..14d22f1 100644
--- a/core/sis-utility/src/main/java/org/apache/sis/measure/Range.java
+++ b/core/sis-utility/src/main/java/org/apache/sis/measure/Range.java
@@ -659,7 +659,7 @@ public class Range<E extends Comparable<? super E>> implements CheckedContainer<
/**
* Returns a unlocalized string representation of this range. This method complies to the format
- * described in the <a href="http://en.wikipedia.org/wiki/ISO_31-11">ISO 31-11</a> standard,
+ * described in the <a href="https://en.wikipedia.org/wiki/ISO_31-11">ISO 31-11</a> standard,
* except that the minimal and maximal values are separated by the "{@code …}" character
* instead than coma. More specifically, the string representation is defined as below:
*
@@ -677,7 +677,7 @@ public class Range<E extends Comparable<? super E>> implements CheckedContainer<
* is appended to the above string representation except for empty ranges.
*
* @see RangeFormat
- * @see <a href="http://en.wikipedia.org/wiki/ISO_31-11">Wikipedia: ISO 31-11</a>
+ * @see <a href="https://en.wikipedia.org/wiki/ISO_31-11">Wikipedia: ISO 31-11</a>
*/
@Override
public String toString() {
diff --git a/core/sis-utility/src/main/java/org/apache/sis/measure/RangeFormat.java b/core/sis-utility/src/main/java/org/apache/sis/measure/RangeFormat.java
index 09f41a7..b2a51f7 100644
--- a/core/sis-utility/src/main/java/org/apache/sis/measure/RangeFormat.java
+++ b/core/sis-utility/src/main/java/org/apache/sis/measure/RangeFormat.java
@@ -45,7 +45,7 @@ import org.apache.sis.internal.util.Numerics;
/**
* Parses and formats {@link Range} instances according the given locale.
- * This class complies to the format described in the <a href="http://en.wikipedia.org/wiki/ISO_31-11">ISO 31-11</a>
+ * This class complies to the format described in the <a href="https://en.wikipedia.org/wiki/ISO_31-11">ISO 31-11</a>
* standard, except that the minimal and maximal values are separated by the "{@code …}" character
* instead than coma. More specifically, the format is defined as below:
*
@@ -97,7 +97,7 @@ import org.apache.sis.internal.util.Numerics;
* @version 1.0
*
* @see Range#toString()
- * @see <a href="http://en.wikipedia.org/wiki/ISO_31-11">Wikipedia: ISO 31-11</a>
+ * @see <a href="https://en.wikipedia.org/wiki/ISO_31-11">Wikipedia: ISO 31-11</a>
*
* @since 0.3
* @module
diff --git a/core/sis-utility/src/main/java/org/apache/sis/measure/UnitDimension.java b/core/sis-utility/src/main/java/org/apache/sis/measure/UnitDimension.java
index e0ad719..7767533 100644
--- a/core/sis-utility/src/main/java/org/apache/sis/measure/UnitDimension.java
+++ b/core/sis-utility/src/main/java/org/apache/sis/measure/UnitDimension.java
@@ -48,7 +48,7 @@ import org.apache.sis.internal.util.CollectionsExt;
*
* <ul>
* <li>Voltage noise density measured per √(Hz).</li>
- * <li><a href="http://en.wikipedia.org/wiki/Specific_detectivity">Specific detectivity</a>
+ * <li><a href="https://en.wikipedia.org/wiki/Specific_detectivity">Specific detectivity</a>
* as T^2.5 / (M⋅L) dimension.</li>
* </ul>
*
diff --git a/core/sis-utility/src/test/java/org/apache/sis/math/StatisticsTest.java b/core/sis-utility/src/test/java/org/apache/sis/math/StatisticsTest.java
index a3ce1e4..0cf2ab7 100644
--- a/core/sis-utility/src/test/java/org/apache/sis/math/StatisticsTest.java
+++ b/core/sis-utility/src/test/java/org/apache/sis/math/StatisticsTest.java
@@ -141,7 +141,7 @@ public final strictfp class StatisticsTest extends TestCase {
/**
* Tests the statistics starting with a number big enough to make the code fails if we were
- * not using the <a href="http://en.wikipedia.org/wiki/Kahan_summation_algorithm">Kahan
+ * not using the <a href="https://en.wikipedia.org/wiki/Kahan_summation_algorithm">Kahan
* summation algorithm</a>.
*/
@Test
[sis] 03/03: Simplify the handling of transforms by updating a
single Affine instance instead than adding/removing instances in the
ObservableList.
Posted by de...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
desruisseaux pushed a commit to branch geoapi-4.0
in repository https://gitbox.apache.org/repos/asf/sis.git
commit cac009db811dbac6c27803cd3c4e12da9b464c22
Author: Martin Desruisseaux <ma...@geomatys.com>
AuthorDate: Thu Apr 9 18:23:58 2020 +0200
Simplify the handling of transforms by updating a single Affine instance instead than adding/removing instances in the ObservableList.
---
.../java/org/apache/sis/gui/map/MapCanvas.java | 113 ++++++++++-----------
1 file changed, 52 insertions(+), 61 deletions(-)
diff --git a/application/sis-javafx/src/main/java/org/apache/sis/gui/map/MapCanvas.java b/application/sis-javafx/src/main/java/org/apache/sis/gui/map/MapCanvas.java
index 6f6c5f1..695495e 100644
--- a/application/sis-javafx/src/main/java/org/apache/sis/gui/map/MapCanvas.java
+++ b/application/sis-javafx/src/main/java/org/apache/sis/gui/map/MapCanvas.java
@@ -34,13 +34,12 @@ import javafx.scene.image.WritableImage;
import javafx.scene.layout.Pane;
import javafx.scene.shape.Rectangle;
import javafx.scene.transform.Affine;
-import javafx.scene.transform.Transform;
+import javafx.scene.transform.NonInvertibleTransformException;
import javafx.scene.input.MouseEvent;
import javafx.scene.input.ScrollEvent;
import javafx.scene.Cursor;
import javafx.event.EventType;
import javafx.beans.Observable;
-import javafx.collections.ObservableList;
import javafx.concurrent.Task;
import javafx.util.Callback;
import org.opengis.geometry.Envelope;
@@ -50,7 +49,9 @@ import org.apache.sis.referencing.operation.transform.MathTransforms;
import org.apache.sis.referencing.operation.transform.LinearTransform;
import org.apache.sis.geometry.Envelope2D;
import org.apache.sis.util.ArgumentChecks;
+import org.apache.sis.util.logging.Logging;
import org.apache.sis.internal.util.Numerics;
+import org.apache.sis.internal.system.Modules;
import org.apache.sis.internal.coverage.j2d.ColorModelFactory;
import org.apache.sis.internal.gui.BackgroundThreads;
import org.apache.sis.internal.gui.ExceptionReporter;
@@ -168,12 +169,19 @@ public abstract class MapCanvas extends PlanarCanvas {
private boolean invalidObjectiveToDisplay;
/**
- * Whether a zoom, pan or rotation has been added to {@link #view} since last time the image has been painted.
- * If {@code true}, then the last element in {@link Pane#getTransforms()} list contains transformation applied
- * by JavaFX while we are waiting for the {@link #repaint()} to complete. After the repaint event completed,
- * the new image replaces the JavaFX transformation.
+ * The zooms, pans and rotations applied on {@link #view} since last time the image has been painted.
+ * This is the identity transform except during the short time between a gesture (zoom, pan, <i>etc.</i>)
+ * and the completion of new {@link #repaint()}. This is used for giving immediate feedbacks to the user
+ * while waiting for the new image to be ready.
*/
- private boolean isViewTransformed;
+ private final Affine transform;
+
+ /**
+ * The {@link #transform} values at the time the {@link #repaint()} method has been invoked.
+ * This is a change applied on {@link #objectiveToDisplay} but not yet visible in the image.
+ * After the image has been updated, this transform is reset to identity.
+ */
+ private final Affine changeInProgress;
/**
* Cursor position at the time pan event started.
@@ -190,6 +198,8 @@ public abstract class MapCanvas extends PlanarCanvas {
*/
public MapCanvas(final Locale locale) {
super(locale);
+ transform = new Affine();
+ changeInProgress = new Affine();
view = new Pane() {
@Override protected void layoutChildren() {
super.layoutChildren();
@@ -200,11 +210,12 @@ public abstract class MapCanvas extends PlanarCanvas {
};
image = new ImageView();
image.setPreserveRatio(true);
+ view.getChildren().add(image);
+ view.getTransforms().add(transform);
view.setOnScroll(this::onScroll);
view.setOnMousePressed(this::onDrag);
view.setOnMouseDragged(this::onDrag);
view.setOnMouseReleased(this::onDrag);
- view.getChildren().add(image);
/*
* Do not set a preferred size, otherwise `repaint()` is invoked twice: once with the preferred size
* and once with the actual size of the parent window. Actually the `repaint()` method appears to be
@@ -235,7 +246,6 @@ public abstract class MapCanvas extends PlanarCanvas {
* This is interpreted as a translation applied in pixel units on the map.
*/
private void onDrag(final MouseEvent event) {
- event.consume();
final double x = event.getX();
final double y = event.getY();
final EventType<? extends MouseEvent> type = event.getEventType();
@@ -247,10 +257,10 @@ public abstract class MapCanvas extends PlanarCanvas {
if (type != MouseEvent.MOUSE_DRAGGED) {
view.setCursor(isRendering ? Cursor.WAIT : Cursor.CROSSHAIR);
}
- final Affine transform = getTransform(true);
transform.appendTranslation(x - xPanStart, y - yPanStart);
- repaintIfMoved(transform);
+ repaintIfMoved();
}
+ event.consume();
}
/**
@@ -262,47 +272,20 @@ public abstract class MapCanvas extends PlanarCanvas {
// Do not interpret scroll events on touch pad as a zoom.
return;
}
- event.consume();
final double delta = event.getDeltaY();
double zoom = Math.abs(delta) / MOUSE_WHEEL_ZOOM + 1;
if (delta < 0) {
zoom = 1/zoom;
}
- final Affine transform = getTransform(true);
transform.appendScale(zoom, zoom, event.getX(), event.getY());
- repaintIfMoved(transform);
- }
-
- /**
- * The zoom, translation or rotation to apply on the content. This is the identity transform except during
- * the short time between a gesture (zoom, pan, <i>etc.</i>) and the completion of new {@link #repaint()}.
- * This is used for giving immediate feedback to the user while waiting for the new image to be ready.
- *
- * @param create whether to create the transform if not present.
- * @return the transform, or {@code null} if none and {@code create} is {@code false}.
- */
- private Affine getTransform(final boolean create) {
- /*
- * This list may have more than one element if user continues zooming
- * or panning while a repaint event is working in background thread.
- */
- final ObservableList<Transform> transforms = view.getTransforms();
- final Affine at;
- if (isViewTransformed) {
- at = (Affine) transforms.get(transforms.size() - 1);
- } else if (create) {
- at = new Affine();
- isViewTransformed = transforms.add(at);
- } else {
- at = null;
- }
- return at;
+ repaintIfMoved();
+ event.consume();
}
/**
* Repaints the view if the given transform is not identity.
*/
- private void repaintIfMoved(final Affine transform) {
+ private void repaintIfMoved() {
if (!transform.isIdentity()) {
contentChangeCount++;
repaint();
@@ -491,7 +474,7 @@ public abstract class MapCanvas extends PlanarCanvas {
tr = MathTransforms.identity(BIDIMENSIONAL);
}
setObjectiveToDisplay(tr);
- view.getTransforms().clear();
+ transform.setToIdentity();
}
} catch (RenderException ex) {
errorOccurred(ex);
@@ -502,17 +485,17 @@ public abstract class MapCanvas extends PlanarCanvas {
* replaced that temporary transform by a "permanent" adjustment of the `objectiveToDisplay`
* transform. It allows SIS to get new data for the new visible area and resolution.
*/
- final Affine transform = getTransform(false);
- if (transform != null) {
+ assert changeInProgress.isIdentity() : changeInProgress;
+ changeInProgress.setToTransform(transform);
+ if (!transform.isIdentity()) {
transformDisplayCoordinates(new AffineTransform(
transform.getMxx(), transform.getMyx(),
transform.getMxy(), transform.getMyy(),
transform.getTx(), transform.getTy()));
- isViewTransformed = false;
}
/*
- * Invoke `createRenderer()` only after we finished above configuration, because that method may take
- * a snapshot of current canvas state in preparation for use in background threads.
+ * Invoke `createRenderer()` only after we finished above configuration, because that method
+ * may take a snapshot of current canvas state in preparation for use in background threads.
*/
final Renderer context = createRenderer();
if (context == null || !context.initialize(view)) {
@@ -596,14 +579,14 @@ public abstract class MapCanvas extends PlanarCanvas {
buffer = drawTo;
bufferWrapper = wrapper;
bufferConfiguration = configuration;
- imageUpdated(transform);
+ imageUpdated();
if (contentsChanged()) {
repaint();
}
}
- @Override protected void failed() {imageUpdated(transform); super.failed();}
- @Override protected void cancelled() {imageUpdated(transform); super.cancelled();}
+ @Override protected void failed() {super.failed(); imageUpdated();}
+ @Override protected void cancelled() {super.cancelled(); imageUpdated();}
};
} else {
/*
@@ -672,14 +655,14 @@ public abstract class MapCanvas extends PlanarCanvas {
} finally {
drawTo.flush();
}
- imageUpdated(transform);
+ imageUpdated();
if (contentsLost || contentsChanged()) {
repaint();
}
}
- @Override protected void failed() {imageUpdated(transform); super.failed();}
- @Override protected void cancelled() {imageUpdated(transform); super.cancelled();}
+ @Override protected void failed() {super.failed(); imageUpdated();}
+ @Override protected void cancelled() {super.cancelled(); imageUpdated();}
/**
* Invoked by {@link PixelBuffer#updateBuffer(Callback)} for updating the {@link #buffer} content.
@@ -706,19 +689,26 @@ public abstract class MapCanvas extends PlanarCanvas {
/**
* Invoked after the background thread created by {@link #repaint()} finished to update image content.
- * The {@code applied} argument is the JavaFX transform at the time the repaint event was trigged and
+ * The {@link #changeInProgress} is the JavaFX transform at the time the repaint event was trigged and
* which is now integrated in the image. That transform will be removed from {@link #view} transforms.
- * It may be {@code null} if no zoom, rotation or pan gesture has been applied since last rendering.
- *
- * @param applied the JavaFX transform which has been applied on the updated image, or {@code null}.
+ * It may be identity if no zoom, rotation or pan gesture has been applied since last rendering.
*/
- private void imageUpdated(final Affine applied) {
+ private void imageUpdated() {
isRendering = false;
view.setCursor(Cursor.CROSSHAIR);
- if (view.getTransforms().remove(applied)) {
- final Point2D p = applied.transform(xPanStart, yPanStart);
+ if (!changeInProgress.isIdentity()) {
+ final Point2D p = changeInProgress.transform(xPanStart, yPanStart);
xPanStart = p.getX();
yPanStart = p.getY();
+ try {
+ changeInProgress.invert();
+ transform.prepend(changeInProgress);
+ } catch (NonInvertibleTransformException e) {
+ // Should not happen. If happens anyway, discard the gestures that happenned after `repaint()` call.
+ Logging.unexpectedException(Logging.getLogger(Modules.APPLICATION), MapCanvas.class, "imageUpdated", e);
+ transform.setToIdentity();
+ }
+ changeInProgress.setToIdentity();
}
}
@@ -732,7 +722,8 @@ public abstract class MapCanvas extends PlanarCanvas {
bufferWrapper = null;
doubleBuffer = null;
bufferConfiguration = null;
- view.getTransforms().clear();
+ transform.setToIdentity();
+ changeInProgress.setToIdentity();
}
/**
[sis] 02/03: Add missing parameters in the internal `toString()`
representation of some map projections.
Posted by de...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
desruisseaux pushed a commit to branch geoapi-4.0
in repository https://gitbox.apache.org/repos/asf/sis.git
commit f6c88a18924385d67fe867e9932c4f741874da13
Author: Martin Desruisseaux <ma...@geomatys.com>
AuthorDate: Thu Apr 9 14:59:01 2020 +0200
Add missing parameters in the internal `toString()` representation of some map projections.
---
.../sis/referencing/datum/DefaultEllipsoid.java | 7 ----
.../operation/projection/AzimuthalEquidistant.java | 44 +++++++++++-----------
.../operation/projection/Orthographic.java | 37 ++++++++++--------
.../operation/projection/SatelliteTracking.java | 21 +++++++++++
4 files changed, 65 insertions(+), 44 deletions(-)
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/referencing/datum/DefaultEllipsoid.java b/core/sis-referencing/src/main/java/org/apache/sis/referencing/datum/DefaultEllipsoid.java
index e272c20..9337dd0 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/referencing/datum/DefaultEllipsoid.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/referencing/datum/DefaultEllipsoid.java
@@ -124,13 +124,6 @@ public class DefaultEllipsoid extends AbstractIdentifiedObject implements Ellips
private static final long serialVersionUID = -1149451543954764081L;
/**
- * Tolerance threshold for comparing floating point numbers.
- *
- * @see Numerics#COMPARISON_THRESHOLD
- */
- private static final double COMPARISON_THRESHOLD = 1E-10;
-
- /**
* The equatorial radius. This field should be considered as final.
* It is modified only by JAXB at unmarshalling time.
*
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/projection/AzimuthalEquidistant.java b/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/projection/AzimuthalEquidistant.java
index c4123bd..987ac81 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/projection/AzimuthalEquidistant.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/projection/AzimuthalEquidistant.java
@@ -125,6 +125,28 @@ public class AzimuthalEquidistant extends NormalizedProjection {
}
/**
+ * Returns the names of additional internal parameters which need to be taken in account when
+ * comparing two {@code AzimuthalEquidistant} projections or formatting them in debug mode.
+ *
+ * <p>We could report any of the internal parameters. But since they are all derived from φ₀ and
+ * the {@linkplain #eccentricity eccentricity} and since the eccentricity is already reported by
+ * the super-class, we report only φ₀ as a representative of the internal parameters.</p>
+ */
+ @Override
+ final String[] getInternalParameterNames() {
+ return new String[] {"φ₀"};
+ }
+
+ /**
+ * Returns the values of additional internal parameters which need to be taken in account when
+ * comparing two {@code AzimuthalEquidistant} projections or formatting them in debug mode.
+ */
+ @Override
+ final double[] getInternalParameterValues() {
+ return new double[] {(cosφ0 < PI/4) ? acos(cosφ0) : asin(sinφ0)};
+ }
+
+ /**
* Converts the specified (λ,φ) coordinate and stores the (<var>x</var>,<var>y</var>) result in {@code dstPts}.
*
* @param srcPts source point coordinate, as (<var>longitude</var>, <var>latitude</var>) in radians.
@@ -200,26 +222,4 @@ public class AzimuthalEquidistant extends NormalizedProjection {
dstPts[dstOff ] = atan2(x*sinD, (cosφ0*cosD*D - sinφ0*sinD*y));
dstPts[dstOff+1] = asin(cosD*sinφ0 + sinD*cosφ0*y/D);
}
-
- /**
- * Returns the names of additional internal parameters which need to be taken in account when
- * comparing two {@code AzimuthalEquidistant} projections or formatting them in debug mode.
- *
- * <p>We could report any of the internal parameters. But since they are all derived from φ₀ and
- * the {@linkplain #eccentricity eccentricity} and since the eccentricity is already reported by
- * the super-class, we report only φ₀ as a representative of the internal parameters.</p>
- */
- @Override
- final String[] getInternalParameterNames() {
- return new String[] {"φ₀"};
- }
-
- /**
- * Returns the values of additional internal parameters which need to be taken in account when
- * comparing two {@code ObliqueStereographic} projections or formatting them in debug mode.
- */
- @Override
- final double[] getInternalParameterValues() {
- return new double[] {(cosφ0 < PI/4) ? acos(cosφ0) : asin(sinφ0)};
- }
}
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/projection/Orthographic.java b/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/projection/Orthographic.java
index 1b77965..ad0a9b8 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/projection/Orthographic.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/projection/Orthographic.java
@@ -17,7 +17,6 @@
package org.apache.sis.referencing.operation.projection;
import java.util.EnumMap;
-import org.apache.sis.internal.util.Numerics;
import org.opengis.referencing.operation.Matrix;
import org.opengis.referencing.operation.OperationMethod;
import org.opengis.parameter.ParameterDescriptor;
@@ -25,7 +24,6 @@ import org.apache.sis.parameter.Parameters;
import org.apache.sis.referencing.operation.matrix.Matrix2;
import org.apache.sis.referencing.operation.matrix.MatrixSIS;
import org.apache.sis.referencing.operation.transform.ContextualParameters;
-import org.apache.sis.util.ComparisonMode;
import org.apache.sis.util.Workaround;
import static java.lang.Math.*;
@@ -125,6 +123,28 @@ public class Orthographic extends NormalizedProjection {
}
/**
+ * Returns the names of additional internal parameters which need to be taken in account when
+ * comparing two {@code Orthographic} projections or formatting them in debug mode.
+ *
+ * <p>We could report any of the internal parameters. But since they are all derived from φ₀ and
+ * the {@linkplain #eccentricity eccentricity} and since the eccentricity is already reported by
+ * the super-class, we report only φ₀ as a representative of the internal parameters.</p>
+ */
+ @Override
+ final String[] getInternalParameterNames() {
+ return new String[] {"φ₀"};
+ }
+
+ /**
+ * Returns the values of additional internal parameters which need to be taken in account when
+ * comparing two {@code Orthographic} projections or formatting them in debug mode.
+ */
+ @Override
+ final double[] getInternalParameterValues() {
+ return new double[] {(cosφ0 < PI/4) ? acos(cosφ0) : asin(sinφ0)};
+ }
+
+ /**
* Converts the specified (λ,φ) coordinate and stores the (<var>x</var>,<var>y</var>) result in {@code dstPts}.
* The units of measurement are implementation-specific (see super-class javadoc).
*
@@ -245,17 +265,4 @@ public class Orthographic extends NormalizedProjection {
dstPts[dstOff] = IEEEremainder(dstPts[dstOff], PI);
}
}
-
- /**
- * Compares the given object with this transform for equivalence.
- */
- @Override
- public boolean equals(final Object object, final ComparisonMode mode) {
- if (super.equals(object, mode)) {
- final Orthographic that = (Orthographic) object;
- return Numerics.epsilonEqual(sinφ0, that.sinφ0, mode) &&
- Numerics.epsilonEqual(cosφ0, that.cosφ0, mode);
- }
- return false;
- }
}
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/projection/SatelliteTracking.java b/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/projection/SatelliteTracking.java
index 430e92f..b37513c 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/projection/SatelliteTracking.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/projection/SatelliteTracking.java
@@ -226,6 +226,27 @@ public class SatelliteTracking extends NormalizedProjection {
}
/**
+ * Returns the names of additional internal parameters which need to be taken in account when
+ * comparing two {@code SatelliteTracking} projections or formatting them in debug mode.
+ */
+ @Override
+ final String[] getInternalParameterNames() {
+ return new String[] {"i", "P₂∕P₁"};
+ }
+
+ /**
+ * Returns the values of additional internal parameters which need to be taken in account when
+ * comparing two {@code SatelliteTracking} projections or formatting them in debug mode.
+ */
+ @Override
+ final double[] getInternalParameterValues() {
+ return new double[] {
+ (cos_i < PI/4) ? acos(cos_i) : asin(sin_i),
+ p2_on_p1
+ };
+ }
+
+ /**
* Computes the F₁ or F₂ coefficient using Snyder equation 28-9. Note that this is the same equation
* than F₁′ in above cylindrical case, but with the addition of arc-tangent. This value is constant
* after construction time.