From cd88fbc181437f6c7288317b4d9bb34c84e19386 Mon Sep 17 00:00:00 2001 From: Jia Yu Date: Fri, 24 Jul 2026 21:09:51 -0700 Subject: [PATCH] [GH-3161] Fix RT90 transform accuracy --- pom.xml | 2 +- .../apache/sedona/sql/CRSTransformProj4Test.scala | 14 ++++++++++++++ 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 9f6f2af8b7d..c1484b9f3e8 100644 --- a/pom.xml +++ b/pom.xml @@ -96,7 +96,7 @@ 2.5.0 1.52 2.9.2 - 0.1.2 + 0.1.3 provided diff --git a/spark/common/src/test/scala/org/apache/sedona/sql/CRSTransformProj4Test.scala b/spark/common/src/test/scala/org/apache/sedona/sql/CRSTransformProj4Test.scala index 1159ebc6adc..10bec670113 100644 --- a/spark/common/src/test/scala/org/apache/sedona/sql/CRSTransformProj4Test.scala +++ b/spark/common/src/test/scala/org/apache/sedona/sql/CRSTransformProj4Test.scala @@ -83,6 +83,20 @@ class CRSTransformProj4Test extends TestBaseScala { assertEquals(4180998.88, result.getCoordinate.y, COORD_TOLERANCE) } + it("should apply the RT90 datum shift for EPSG:3021 to EPSG:3006 (GH-3161)") { + val result = sparkSession + .sql("SELECT ST_Transform(ST_Point(1272691.622, 6404578.16), 'epsg:3021', 'epsg:3006')") + .first() + .getAs[Geometry](0) + + assertNotNull(result) + assertEquals(3006, result.getSRID) + // PostGIS reference reported in GH-3161. proj4sedona uses the proj4js + // RT90 Helmert parameters, so sub-metre differences from PROJ are expected. + assertEquals(320728.44351324334, result.getCoordinate.x, COORD_TOLERANCE) + assertEquals(6400228.104394391, result.getCoordinate.y, COORD_TOLERANCE) + } + it("should transform using PROJ string") { val projString = "+proj=merc +a=6378137 +b=6378137 +lat_ts=0 +lon_0=0 +x_0=0 +y_0=0 +k=1 +units=m +no_defs"