From 99bf6a9251526eb53c8ee08222c2ca471d5a1775 Mon Sep 17 00:00:00 2001 From: Grigory Pomadchin Date: Sun, 23 Mar 2025 10:59:30 -0400 Subject: [PATCH 1/2] LCC ProjectInverse readjustment, BasicCoordinateTransform.transform fix --- HOWTORELEASE.txt | 2 +- .../locationtech/proj4j/BasicCoordinateTransform.java | 3 ++- .../proj4j/proj/LambertConformalConicProjection.java | 8 +++++--- .../locationtech/proj4j/CoordinateTransformTest.java | 10 ++++++++++ 4 files changed, 18 insertions(+), 5 deletions(-) diff --git a/HOWTORELEASE.txt b/HOWTORELEASE.txt index 1af7c69..eceac88 100644 --- a/HOWTORELEASE.txt +++ b/HOWTORELEASE.txt @@ -67,7 +67,7 @@ General Notes Cheat sheet: - All commands are can be described via the following template: - mvn -P{eclipse | central} {-Dmaven.test.skip=true | } {-pl | } {install, deploy, ...} + mvn -P{eclipse | central} {-Dmaven.test.skip=true | } {-pl | } {install, deploy, ...} {-Dmaven.install.skip={false|true}} The description of the Sonatype publish process: - Snaphots: diff --git a/core/src/main/java/org/locationtech/proj4j/BasicCoordinateTransform.java b/core/src/main/java/org/locationtech/proj4j/BasicCoordinateTransform.java index 0d5eccd..6f2c567 100755 --- a/core/src/main/java/org/locationtech/proj4j/BasicCoordinateTransform.java +++ b/core/src/main/java/org/locationtech/proj4j/BasicCoordinateTransform.java @@ -155,8 +155,9 @@ public ProjCoordinate transform(ProjCoordinate src, ProjCoordinate tgt) srcCRS.getProjection().getPrimeMeridian().toGreenwich(tgt); + // 'fix' commented out, see https://github.com/locationtech/proj4j/issues/116 // fixes bug where computed Z value sticks around - tgt.clearZ(); + // tgt.clearZ(); if (doDatumTransform) { datumTransform(tgt); diff --git a/core/src/main/java/org/locationtech/proj4j/proj/LambertConformalConicProjection.java b/core/src/main/java/org/locationtech/proj4j/proj/LambertConformalConicProjection.java index 807d0d6..9c9f004 100644 --- a/core/src/main/java/org/locationtech/proj4j/proj/LambertConformalConicProjection.java +++ b/core/src/main/java/org/locationtech/proj4j/proj/LambertConformalConicProjection.java @@ -68,9 +68,11 @@ public ProjCoordinate project(double x, double y, ProjCoordinate out) { } public ProjCoordinate projectInverse(double x, double y, ProjCoordinate out) { + // https://github.com/OSGeo/PROJ/blob/9.6/src/projections/lcc.cpp#L49-L53 x /= scaleFactor; y /= scaleFactor; - double rho = ProjectionMath.distance(x, y = rho0 - y); + y = rho0 - y; + double rho = ProjectionMath.distance(x, y); if (rho != 0) { if (n < 0.0) { rho = -rho; @@ -78,9 +80,9 @@ public ProjCoordinate projectInverse(double x, double y, ProjCoordinate out) { y = -y; } if (spherical) - out.y = 2.0 * Math.atan(Math.pow(c / rho, 1.0/n)) - ProjectionMath.HALFPI; + out.y = 2.0 * Math.atan(Math.pow(c / rho, 1.0 / n)) - ProjectionMath.HALFPI; else - out.y = ProjectionMath.phi2(Math.pow(rho / c, 1.0/n), e); + out.y = ProjectionMath.phi2(Math.pow(rho / c, 1.0 / n), e); out.x = Math.atan2(x, y) / n; } else { out.x = 0.0; diff --git a/core/src/test/java/org/locationtech/proj4j/CoordinateTransformTest.java b/core/src/test/java/org/locationtech/proj4j/CoordinateTransformTest.java index 2e8d5a2..74fc197 100755 --- a/core/src/test/java/org/locationtech/proj4j/CoordinateTransformTest.java +++ b/core/src/test/java/org/locationtech/proj4j/CoordinateTransformTest.java @@ -290,4 +290,14 @@ public void testEPSG_27250() { "+proj=tmerc +lat_0=-36.87986527777778 +lon_0=174.7643393611111 +k=0.9999 +x_0=300000 +y_0=700000 +datum=nzgd49 +units=m +towgs84=59.47,-5.04,187.44,0.47,-0.1,1.024,-4.5993 +nadgrids=nzgd2kgrid0005.gsb +no_defs", 301062.2010778899, 210376.65974323952, 0.001); } + + // https://github.com/locationtech/proj4j/issues/116 + @Test + public void testEPSG_2994() { + checkTransform( + "EPSG:2994", new ProjCoordinate(635788, 850485, 81), + "+proj=geocent +datum=WGS84", + new ProjCoordinate(-2505627.3608, -3847384.25836, 4412472.6628), + 0.001); + } } From ab4f129fb98239156715971da6bd8055ea73e2a4 Mon Sep 17 00:00:00 2001 From: Grigory Pomadchin Date: Sun, 23 Mar 2025 11:08:56 -0400 Subject: [PATCH 2/2] CHANGELOG.md update --- CHANGELOG.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 6ff5c02..edf4f93 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,12 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +### Fixed +- LCC ProjectInverse adjustment, BasicCoordinateTransform.transform cleanup [#117](https://github.com/locationtech/proj4j/pull/117) + +### Added +- GeoAPI wrappers for PROJ4J [#115](https://github.com/locationtech/proj4j/pull/115) + ## [1.3.0] - 2023-05-30 ### Added