This is an automated email from the ASF dual-hosted git repository.
desruisseaux pushed a change to branch master
in repository https://gitbox.apache.org/repos/asf/sis.git.
from 1181fec Merge branch 'geoapi-3.1'.
add f8161e1 Skeleton of GeodeticCalculator, not yet functional. The idea
is taken from Geotk, but all formulas have been discarted and methods are
rewritten. The initial version will use only spherical formulas published on
Wikipedia. The formulas to use for the ellipsoidal versions will be determined
later. More discussion on https://issues.apache.org/jira/browse/SIS-386
add a77e130 Complete (for now) GeodeticCalculator with spherical
formulas. Ellipsoidal formulas will need to be considered later.
add 23fbd3d Deprecate DistanceUtils, replaced by GeodeticCalculator.
Current version implements only spherical formulas, but DistanceUtils was using
spherical formulas too. This commit resolves
https://issues.apache.org/jira/browse/SIS-385 The use of ellipsoidal formulas
instead than spherical will be a separated issue.
add d375961 Add tests for GeodeticCalculator.
add 76befaa Add Bézier curve calculation from two end-points, the
mid-point and derivatives at end-point. This will be used as an approximation
of geodesic path.
add a585d7f Simplify the Bezier cubic curve to quadratic curve or
straight line when possible. This is especially important in the case of the
straight line for avoiding a division by zero.
add 776b64f Rename "fitCubicCurve" as "bezier" since the returned curve
is not necessarily cubic. Also remove the method from public API because its
API may change again based on experience.
add 11a4781 Separated GeodeticCalculator.setDirection(double, double) in
two methods: setStartingAzimuth(double) and setGeodesicDistance(double). The
name of the previous method was vague, and it happens frequently in practice
that we want to update only one of those two properties.
add c16edc2 Approximate geodesic path by Bézier curve:
https://issues.apache.org/jira/browse/SIS-454 Current implémentation builds a
single linear, quadratic or cubic Bézier curve. It should be improved in a
future version by building a chain of Bézier curves.
add 00feca6 Add a package for visualization tools used for debugging
purpose. For now only show a java.awt.Shape. More may be added in the future.
add 6e8bbee When building a geodesic path, may need to add or remove 360°
to the target longitude depending on the heading.
add 321d86b Fix the case of straight line at equator and add more tests.
add 9a15749 Initial (and incomplete) implementation of loxodromic
distance using spherical formulas.
add d455bf6 Rename expOfNorthing as expΨ for stretching the relationship
with isometric latitude.
add cbcfab2 Replace the innacurate values hard-coded in
`testOnParallel45()` by a dependency to Charles Karney's GeographicLib. That
library - https://geographiclib.sourceforge.io/ (MIT/X11 license) is taken as a
reference implementation.
add a1d9fa9 Fix wrong CRS reported reported by getPositionCRS() and
getGeographicCRS().
add f3f9bc3 Fix wrong coordinate reference system used for transforming
the points returned by GeodeticCalculator.
add 3f5a29f Provide a way to compute the number of fraction digits to
show based on the desired accuracy.
add 1021593 Better formatting of GeodeticCalculator, using the default
accuracy (currently 1 cm).
add af89c09 Test GeodeticCalculator against the data set provided by
Charles Karney (2010): Test set for geodesics [Data set] -
http://doi.org/10.5281/zenodo.32156 We have to use a tolerance threshold of 1%
of expected distance for now, because we do not yet implement ellipsoidal
formulas.
add cd6a0b4 Fix typo and improve message.
add 1fc1ebc GeodesicCalculator.toGeodesicPath2D() should build a chain of
Bézier curves when a single one is not sufficient for the desired precision.
add 3d2a248 Better map for determining if a cubic Bézier curve is an
acceptable approximation of the geodesic path. Previous implementation assumed
that point at t=1/4 on the Bézier curve was located at 1/4 of geodesic path.
This is not true, because the t parameter in Bézier equations does not vary at
the same speed than distance. The relationship between `t` and distance is too
complicated for the needs of this method (it requires numerical integration and
iterative method since t [...]
add 09fa9bf Try harder to avoid unreasonably long chain of Bézier curves.
First implementation of createCircularRegion2D(…), not yet working because of
infinite derivative values.
add 0f797b8 Replace α₀ and α₄ ratios by (dx₀,dy₀) and (dx₄,dy₄) vector
components in order to avoid divison by zero.
add f217fed Change method order. No significant code change except the
setStartPoint(double, double) and setEndPoint(double, double) methods which are
more lenient on latitude values.
add 1ead312 Replace α₁ and α₂ angles in GeodeticCalculator by dφ₁/dλ₁ and
dφ₂/dλ₂ vector components. This is the complement of previous commit that
applied similar change in Bezier class. It resolves issues with infinities,
which fix GeodeticCalculator.createCircularRegion2D(…).
add 831f789 Add link to SIS-455. This issue is not going to be fixed now.
add 17cdbf7 Rename GeodeticCalculator.setStart/EndPoint(double, double)
as setStart/EndGeographicPoint(double, double).
add 803ee36 Merge branch 'geoapi-4.0' into geoapi-3.1. This include the
addition of GeodesicCalculator.
new 655afc0 Merge branch 'geoapi-3.1'. Contains addition of
GeodeticCalculator.
The 1 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:
.../org/apache/sis/console/TransformCommand.java | 2 +-
.../org/apache/sis/openoffice/Transformer.java | 2 +-
.../org/apache/sis/services/LocationServlet.java | 27 +-
.../sis/referencing/gazetteer/LocationFormat.java | 2 +-
.../sis/referencing/gazetteer/SimpleLocation.java | 2 +-
core/sis-referencing/pom.xml | 5 +
.../org/apache/sis/distance/DistanceUtils.java | 13 +-
.../org/apache/sis/distance/LatLonPointRadius.java | 64 +-
.../org/apache/sis/geometry/CoordinateFormat.java | 199 ++++-
.../java/org/apache/sis/geometry/Shapes2D.java | 2 +-
.../apache/sis/internal/referencing/Formulas.java | 43 +-
.../referencing/GeodeticObjectBuilder.java | 57 ++
.../internal/referencing/PositionTransformer.java | 268 ++++++
.../internal/referencing/ReferencingUtilities.java | 106 ++-
.../apache/sis/internal/referencing/Resources.java | 10 +
.../sis/internal/referencing/Resources.properties | 2 +
.../internal/referencing/Resources_fr.properties | 2 +
.../internal/referencing/ServicesForMetadata.java | 4 +-
.../sis/internal/referencing/j2d/Bezier.java | 469 ++++++++++
.../internal/referencing/j2d/ShapeUtilities.java | 15 +-
.../main/java/org/apache/sis/referencing/CRS.java | 4 +-
.../apache/sis/referencing/GeodeticCalculator.java | 973 +++++++++++++++++++++
.../factory/GeodeticAuthorityFactory.java | 8 +-
.../operation/projection/ConformalProjection.java | 51 +-
.../projection/LambertConicConformal.java | 23 +-
.../referencing/operation/projection/Mercator.java | 6 +-
.../operation/projection/ObliqueMercator.java | 10 +-
.../operation/projection/PolarStereographic.java | 6 +-
.../apache/sis/geometry/CoordinateFormatTest.java | 15 +
.../referencing/ReferencingUtilitiesTest.java | 6 +-
.../referencing/j2d/ShapeUtilitiesExt.java | 150 ++++
.../referencing/j2d/ShapeUtilitiesTest.java | 81 +-
.../referencing/j2d/ShapeUtilitiesViewer.java | 47 +-
.../sis/referencing/GeodeticCalculatorTest.java | 472 ++++++++++
.../projection/ConformalProjectionTest.java | 72 +-
.../projection/MercatorMethodComparison.java | 10 +-
.../sis/test/suite/ReferencingTestSuite.java | 3 +-
.../org/apache/sis/test/widget/ShapeViewer.java | 90 ++
.../apache/sis/test/widget/SwingAssertions.java | 80 ++
.../org/apache/sis/test/widget/VisualCheck.java | 81 ++
.../org/apache/sis/test/widget/package-info.java} | 33 +-
.../apache/sis/internal/system/DataDirectory.java | 18 +-
.../org/apache/sis/internal/util/Numerics.java | 15 +
.../java/org/apache/sis/measure/AngleFormat.java | 73 +-
.../org/apache/sis/util/resources/Vocabulary.java | 20 +
.../sis/util/resources/Vocabulary.properties | 4 +
.../sis/util/resources/Vocabulary_fr.properties | 4 +
.../org/apache/sis/measure/AngleFormatTest.java | 22 +-
.../src/test/java/org/apache/sis/test/Assert.java | 43 -
.../java/org/apache/sis/test/OptionalTestData.java | 126 +++
ide-project/NetBeans/nbproject/genfiles.properties | 2 +-
ide-project/NetBeans/nbproject/project.properties | 2 +
ide-project/NetBeans/nbproject/project.xml | 3 +
pom.xml | 6 +
.../java/org/apache/sis/index/tree/QuadTree.java | 30 +-
55 files changed, 3616 insertions(+), 267 deletions(-)
create mode 100644
core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/PositionTransformer.java
create mode 100644
core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/j2d/Bezier.java
create mode 100644
core/sis-referencing/src/main/java/org/apache/sis/referencing/GeodeticCalculator.java
create mode 100644
core/sis-referencing/src/test/java/org/apache/sis/internal/referencing/j2d/ShapeUtilitiesExt.java
create mode 100644
core/sis-referencing/src/test/java/org/apache/sis/referencing/GeodeticCalculatorTest.java
create mode 100644
core/sis-referencing/src/test/java/org/apache/sis/test/widget/ShapeViewer.java
create mode 100644
core/sis-referencing/src/test/java/org/apache/sis/test/widget/SwingAssertions.java
create mode 100644
core/sis-referencing/src/test/java/org/apache/sis/test/widget/VisualCheck.java
copy
core/{sis-build-helper/src/main/java/org/apache/sis/internal/book/BookException.java
=> sis-referencing/src/test/java/org/apache/sis/test/widget/package-info.java}
(53%)
create mode 100644
core/sis-utility/src/test/java/org/apache/sis/test/OptionalTestData.java