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 1d735321d1b052152f9fd6ccead4705fd0cc8c85 Author: Martin Desruisseaux <martin.desruisse...@geomatys.com> AuthorDate: Wed Sep 6 11:54:42 2023 +0200 Rename `DefaultEllipsoid.getRadius(double)` as `getGeocentricRadius(double)`. --- .../referencing/gazetteer/GeohashReferenceSystem.java | 8 ++++---- .../gazetteer/MilitaryGridReferenceSystem.java | 4 ++-- .../sis/referencing/datum/DefaultEllipsoid.java | 19 ++++++++++++++++--- .../org/apache/sis/referencing/util/Formulas.java | 6 ++++-- .../sis/referencing/datum/DefaultEllipsoidTest.java | 12 ++++++------ .../org/apache/sis/referencing/util/FormulasTest.java | 12 ++++++------ 6 files changed, 38 insertions(+), 23 deletions(-) diff --git a/endorsed/src/org.apache.sis.referencing.gazetteer/main/org/apache/sis/referencing/gazetteer/GeohashReferenceSystem.java b/endorsed/src/org.apache.sis.referencing.gazetteer/main/org/apache/sis/referencing/gazetteer/GeohashReferenceSystem.java index b449626cd0..d049f4c42d 100644 --- a/endorsed/src/org.apache.sis.referencing.gazetteer/main/org/apache/sis/referencing/gazetteer/GeohashReferenceSystem.java +++ b/endorsed/src/org.apache.sis.referencing.gazetteer/main/org/apache/sis/referencing/gazetteer/GeohashReferenceSystem.java @@ -322,9 +322,9 @@ public class GeohashReferenceSystem extends ReferencingByIdentifiers { if (position != null) try { position = toGeographic(position); double φ = Math.toRadians(position.getOrdinate(1)); - double a = Math.PI/2 * Formulas.getRadius(ellipsoid, φ); // Arc length of 90° using radius at φ. - double b = Math.cos(φ) * (2*a) / (1 << lonNumBits); // Precision along longitude axis. - a /= (1 << latNumBits); // Precision along latitude axis. + double a = Math.PI/2 * Formulas.geocentricRadius(ellipsoid, φ); // Arc length of 90° using radius at φ. + double b = Math.cos(φ) * (2*a) / (1 << lonNumBits); // Precision along longitude axis. + a /= (1 << latNumBits); // Precision along latitude axis. return Quantities.create(Math.max(a, b), unit); } catch (FactoryException | TransformException e) { recoverableException(Coder.class, "getPrecision", e); @@ -359,7 +359,7 @@ public class GeohashReferenceSystem extends ReferencingByIdentifiers { if (position != null) try { position = toGeographic(position); double φ = Math.toRadians(position.getOrdinate(1)); - numLat = Math.PI/2 * Formulas.getRadius(ellipsoid, φ) / p; + numLat = Math.PI/2 * Formulas.geocentricRadius(ellipsoid, φ) / p; numLon = Math.cos(φ) * (2*numLat); } catch (FactoryException | TransformException e) { recoverableException(Coder.class, "setPrecision", e); diff --git a/endorsed/src/org.apache.sis.referencing.gazetteer/main/org/apache/sis/referencing/gazetteer/MilitaryGridReferenceSystem.java b/endorsed/src/org.apache.sis.referencing.gazetteer/main/org/apache/sis/referencing/gazetteer/MilitaryGridReferenceSystem.java index 3266a2f602..723f16d979 100644 --- a/endorsed/src/org.apache.sis.referencing.gazetteer/main/org/apache/sis/referencing/gazetteer/MilitaryGridReferenceSystem.java +++ b/endorsed/src/org.apache.sis.referencing.gazetteer/main/org/apache/sis/referencing/gazetteer/MilitaryGridReferenceSystem.java @@ -552,7 +552,7 @@ public class MilitaryGridReferenceSystem extends ReferencingByIdentifiers { if (crs != null) try { final double φ = encoder(crs).getLatitude(this, position); final double φr = Math.toRadians(φ); - radius = Formulas.getRadius(ellipsoid, φr); + radius = Formulas.geocentricRadius(ellipsoid, φr); if (φ >= TransverseMercator.Zoner.SOUTH_BOUNDS && φ < TransverseMercator.Zoner.NORTH_BOUNDS) { @@ -1658,7 +1658,7 @@ public class MilitaryGridReferenceSystem extends ReferencingByIdentifiers { */ if (precision > 0) { final double φr = Math.toRadians(φ); - precision *= Formulas.getRadius(owner.getEllipsoid(), φr); // Convert precision to metres. + precision *= Formulas.geocentricRadius(owner.getEllipsoid(), φr); // Convert precision to metres. if (isUTM) precision *= Math.cos(φr); owner.setPrecision(precision); digits = owner.digits(); diff --git a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/datum/DefaultEllipsoid.java b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/datum/DefaultEllipsoid.java index 52541a511d..c4b89f4354 100644 --- a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/datum/DefaultEllipsoid.java +++ b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/datum/DefaultEllipsoid.java @@ -379,7 +379,7 @@ public class DefaultEllipsoid extends AbstractIdentifiedObject implements Ellips } /** - * Returns the radius at the given latitude. + * Returns the geocentric radius at the given latitude. * Special cases: * * <ul> @@ -389,12 +389,25 @@ public class DefaultEllipsoid extends AbstractIdentifiedObject implements Ellips * </ul> * * @param φ latitude in degrees, from -90° to +90° inclusive. - * @return radius at the given latitude. + * @return geocentric radius at latitude φ°. + * + * @since 1.4 + */ + public double getGeocentricRadius(final double φ) { + return Formulas.geocentricRadius(this, Math.toRadians(φ)); + } + + /** + * @deprecated Renamed {@link #getGeocentricRadius(double)}. + * + * @param φ latitude in degrees, from -90° to +90° inclusive. + * @return geocentric radius at the given latitude. * * @since 1.3 */ + @Deprecated public double getRadius(final double φ) { - return Formulas.getRadius(this, Math.toRadians(φ)); + return getGeocentricRadius(φ); } /** diff --git a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/util/Formulas.java b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/util/Formulas.java index 7eda517120..c3ab40276b 100644 --- a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/util/Formulas.java +++ b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/util/Formulas.java @@ -199,13 +199,15 @@ public final class Formulas extends Static { } /** - * Returns the radius at the given latitude. + * Returns the geocentric radius at the given latitude. * * @param ellipsoid the ellipsoid for which to compute the radius. * @param φ the latitude in radians where to compute the radius. * @return radius at latitude φ. + * + * @see <a href="https://en.wikipedia.org/wiki/Earth_radius#Geocentric_radius">Geocentric radius on Wikipedia</a> */ - public static double getRadius(final Ellipsoid ellipsoid, final double φ) { + public static double geocentricRadius(final Ellipsoid ellipsoid, final double φ) { final double a = ellipsoid.getSemiMajorAxis(); final double b = ellipsoid.getSemiMinorAxis(); double at = a * Math.cos(φ); at *= at; diff --git a/endorsed/src/org.apache.sis.referencing/test/org/apache/sis/referencing/datum/DefaultEllipsoidTest.java b/endorsed/src/org.apache.sis.referencing/test/org/apache/sis/referencing/datum/DefaultEllipsoidTest.java index 4f91f86782..b1e04762c5 100644 --- a/endorsed/src/org.apache.sis.referencing/test/org/apache/sis/referencing/datum/DefaultEllipsoidTest.java +++ b/endorsed/src/org.apache.sis.referencing/test/org/apache/sis/referencing/datum/DefaultEllipsoidTest.java @@ -113,15 +113,15 @@ public final class DefaultEllipsoidTest extends TestCase { } /** - * Tests {@link DefaultEllipsoid#getRadius(double)}. + * Tests {@link DefaultEllipsoid#getGeocentricRadius(double)}. */ @Test - public void testRadius() { + public void testGeocentricRadius() { final DefaultEllipsoid e = DefaultEllipsoid.castOrCopy(GeodeticDatumMock.WGS84.getEllipsoid()); - assertEquals(6378137, e.getRadius( 0), 0.5); - assertEquals(6372824, e.getRadius( 30), 0.5); - assertEquals(6356752, e.getRadius(+90), 0.5); - assertEquals(6356752, e.getRadius(-90), 0.5); + assertEquals(6378137, e.getGeocentricRadius( 0), 0.5); + assertEquals(6372824, e.getGeocentricRadius( 30), 0.5); + assertEquals(6356752, e.getGeocentricRadius(+90), 0.5); + assertEquals(6356752, e.getGeocentricRadius(-90), 0.5); } /** diff --git a/endorsed/src/org.apache.sis.referencing/test/org/apache/sis/referencing/util/FormulasTest.java b/endorsed/src/org.apache.sis.referencing/test/org/apache/sis/referencing/util/FormulasTest.java index a3fa2c76f6..00580d1375 100644 --- a/endorsed/src/org.apache.sis.referencing/test/org/apache/sis/referencing/util/FormulasTest.java +++ b/endorsed/src/org.apache.sis.referencing/test/org/apache/sis/referencing/util/FormulasTest.java @@ -131,14 +131,14 @@ public final class FormulasTest extends TestCase { } /** - * Tests {@link Formulas#getRadius(Ellipsoid, double)}. + * Tests {@link Formulas#geocentricRadius(Ellipsoid, double)}. */ @Test - public void testGetRadius() { + public void testGeocentricRadius() { final Ellipsoid e = HardCodedDatum.WGS84.getEllipsoid(); - assertEquals(e.getSemiMajorAxis(), Formulas.getRadius(e, 0), 0.01); - assertEquals(e.getSemiMinorAxis(), Formulas.getRadius(e, +Math.PI/2), 0.01); - assertEquals(e.getSemiMinorAxis(), Formulas.getRadius(e, -Math.PI/2), 0.01); - assertEquals(6372824, Formulas.getRadius(e, Math.toRadians(30)), 0.5); + assertEquals(e.getSemiMajorAxis(), Formulas.geocentricRadius(e, 0), 0.01); + assertEquals(e.getSemiMinorAxis(), Formulas.geocentricRadius(e, +Math.PI/2), 0.01); + assertEquals(e.getSemiMinorAxis(), Formulas.geocentricRadius(e, -Math.PI/2), 0.01); + assertEquals(6372824, Formulas.geocentricRadius(e, Math.toRadians(30)), 0.5); } }