It seems the axis are swapped (check CRS.AxisOrder is correct) .

also (not sure about this) I think you may get more accurate results for reprojections when using one of the database-based projection libs eg. gt-epsg-hsql and not the wkt/propery file based one.


On 09-07-2020 12:37, Julien Bluteau via GeoTools-GT2-Users wrote:
Hi all,

I am using geotools to convert coordinates for seismic data. I've never had any issue before but this week I had to convert data using EPSG 22192 and got wrong results (my data is supposed to be onshore Argentina and ended up close to the antartic).

Geotools does the following conversion (EPSG 22192 -> EPSG 4326)

x = 2572506.0    -> Lat = -57.53722563
y = 5757839.0    -> Lon = -38.73009392

The correct conversion (according to epsg.io http://epsg.io/transform#s_srs=22192&t_srs=4326&x=2572506.0000000&y=5757839.0000000 should be) Transform coordinates - GPS online convertor <http://epsg.io/transform#s_srs=22192&t_srs=4326&x=2572506.0000000&y=5757839.0000000> Transform your coordinates online easily with epsg.io Transform coordinates Online convertor for lat & long coordinates, geodetic datums and projected systems
epsg.io


Lat = -38.328903
Lon = -68.1718113

After digging through the source code I found that WKT are defined (at least) under https://raw.githubusercontent.com/geotools/geotools/master/modules/plugin/epsg-wkt/src/main/resources/org/geotools/referencing/epsg/wkt/epsg.properties

I then compared it to the definition on https://epsg.io/22192 and found different values.

Definition from Geotools:

  PROJCS["Campo Inchauspe / Argentina 2",
     GEOGCS["Campo Inchauspe",
         DATUM["Campo Inchauspe",
             SPHEROID["International 1924", 6378388.0, 297.0,
                 AUTHORITY["EPSG","7022"]],
             TOWGS84[-154.5,150.7,100.4,0.0,0.0,    0.0,0.0],
             AUTHORITY["EPSG","6221"]],
         PRIMEM["Greenwich",0.0,
             AUTHORITY["EPSG","8901"]],
         UNIT["degree",0.017453292519943295],
         AXIS["Geodetic longitude",EAST],
         AXIS["Geodetic latitude",NORTH],
         AUTHORITY["EPSG","4221"]],
     PROJECTION["Transverse_Mercator",
         AUTHORITY["EPSG","9807"]],
     PARAMETER["central_meridian", -69.0],
     PARAMETER["latitude_of_origin",-90.0],
     PARAMETER["scale_factor",1.0],
     PARAMETER["false_easting",2500000.0],
     PARAMETER["false_northing",0.0],
     UNIT["m",1.0],
     AXIS["Easting",EAST],
     AXIS["Northing",NORTH],
     AUTHORITY["EPSG","22192"]]

Definition from epsg.io:

PROJCS["Campo Inchauspe / Argentina 2",
     GEOGCS["Campo Inchauspe",
         DATUM["Campo_Inchauspe",
             SPHEROID["International 1924",6378388,297,
                 AUTHORITY["EPSG","7022"]],
             TOWGS84[-148,136,90,0,0,0,0],
             AUTHORITY["EPSG","6221"]],
         PRIMEM["Greenwich",0,
             AUTHORITY["EPSG","8901"]],
         UNIT["degree",0.0174532925199433,
             AUTHORITY["EPSG","9122"]],
         AUTHORITY["EPSG","4221"]],
     PROJECTION["Transverse_Mercator"],
     PARAMETER["latitude_of_origin",-90],
     PARAMETER["central_meridian",-69],
     PARAMETER["scale_factor",1],
     PARAMETER["false_easting",2500000],
     PARAMETER["false_northing",0],
     UNIT["metre",1,
         AUTHORITY["EPSG","9001"]],
     AUTHORITY["EPSG","22192"]]

I am not an expert in coordinate system. Would this difference be the cause of my issue? If so, how can I fix this (scala code that depends on geospark, a package that uses geotools)?

Is there anything in my code below (scala) that is wrong otherwise?

val sourceCRS = CRS.decode(s"EPSG:22192")
val targetCRS = CRS.decode(s"EPSG:4326")
val transform = CRS.findMathTransform(sourceCRS, targetCRS, true)

val cdp_x =2572506.0
val cdp_y = 5757839.0

val ptSrc = new DirectPosition2D(sourceCRS, cdp_x, cdp_y)
val ptDst = new DirectPosition2D()

transform.transform(ptSrc, ptDst)
println(ptDst.getCoordinate()(0))
println(ptDst.getCoordinate()(1))
Campo Inchauspe / Argentina 2 - EPSG:22192 <https://epsg.io/22192>
EPSG:22192 Projected coordinate system for Argentina - between 70°30'W and 67°30'W, onshore. Large and medium scale topographic mapping and engineering survey.
epsg.io

Thanks,
Julien Bluteau


_______________________________________________
GeoTools-GT2-Users mailing list
GeoTools-GT2-Users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/geotools-gt2-users




_______________________________________________
GeoTools-GT2-Users mailing list
GeoTools-GT2-Users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/geotools-gt2-users

Reply via email to