Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用GeoTools进行不正确的坐标变换Gauss Kruger-WGS84_Java_Geotools_Wgs84 - Fatal编程技术网

Java 使用GeoTools进行不正确的坐标变换Gauss Kruger-WGS84

Java 使用GeoTools进行不正确的坐标变换Gauss Kruger-WGS84,java,geotools,wgs84,Java,Geotools,Wgs84,在GeoTools的帮助下,我遇到了一个关于心爱的坐标转换的问题:我想将一组坐标从Gauss Kruger(5区,EPSG 31469)转换为普通WGS84坐标(EPSG 4326) 我用一个简单的例子构建了一个代码(只需尝试一对坐标): 调试后的结果如下:48.791886921764345、17.16525096311777 然后,当我检查获得的WGS84坐标(只需将它们输入谷歌地图)时,我最终在奥地利附近的捷克共和国的某个地方,尽管这对坐标应该在德国东部的某个地方(当然,我通过一些html

在GeoTools的帮助下,我遇到了一个关于心爱的坐标转换的问题:我想将一组坐标从Gauss Kruger(5区,EPSG 31469)转换为普通WGS84坐标(EPSG 4326)

我用一个简单的例子构建了一个代码(只需尝试一对坐标):

调试后的结果如下:48.791886921764345、17.16525096311777

然后,当我检查获得的WGS84坐标(只需将它们输入谷歌地图)时,我最终在奥地利附近的捷克共和国的某个地方,尽管这对坐标应该在德国东部的某个地方(当然,我通过一些html解码器检查了它):

--->结果应该是: 51.0609167、13.6900142

我无法想象为什么会发生这种失败。GeoTools获得了两个想要的CRS(我从java控制台附带了一个响应的摘录)

有人能解释这一点吗?我将感谢任何帮助

欢迎你,塞巴斯蒂安


当我试图用您的代码和最新的Geotools(8.0)重现问题时,我得到了正确的结果(13.690015717822922,51.06089012028224)。使用lon,lat交换,也就是说

坏结果(17.16525096311777,48.791886921764345)出现在我交换
coordX
coordY
时。这会让你进入也门沙漠而不是德累斯顿

可能您隐含地假设轴的顺序错误。可以说,将纬度置于经度之前违反了笛卡尔坐标将X置于Y之前的一般约定


虽然我无法重现您的问题,但中讨论轴排序的解决方法之一可能会对您有所帮助。

是的,这也让我发疯。奇怪的是,
CRS.decode(“EPSG:4326”)
使用了与
DefaultGeographicCRS.WGS84
不同的轴方向,可能是一个错误?哦,它与Geotools无关:“因此,如果你在“EPSG:4326”中看到一些数据,你不知道它是x/y顺序还是y/x顺序。”请参阅此处的“轴顺序”部分
double coordX = 5408301.53; 
double coordY = 5659230.5;
double[] punt = new double[2];

CoordinateReferenceSystem sourceCRS = CRS.decode("EPSG:31469");
CoordinateReferenceSystem targetCRS = CRS.decode("EPSG:4326");

MathTransform transform = CRS.findMathTransform(sourceCRS, targetCRS, true);

DirectPosition expPt = new GeneralDirectPosition(coordX, coordY);
expPt = transform.transform(expPt, null);
punt = expPt.getCoordinate();

System.out.println(punt[0] + ", " + punt[1]); //lon, lat
**sourceCRS:**
PROJCS["DHDN / 3-degree Gauss-Kruger zone 5",
    GEOGCS["DHDN", 
    DATUM["Deutsches Hauptdreiecksnetz", 
      SPHEROID["Bessel 1841", 6377397.155, 299.1528128, AUTHORITY["EPSG","7004"]], 
      TOWGS84[612.4, 77.0, 440.2, -0.054, 0.057, -2.797, 2.55], 
      AUTHORITY["EPSG","6314"]], 
    PRIMEM["Greenwich", 0.0, AUTHORITY["EPSG","8901"]], 
    UNIT["degree", 0.017453292519943295], 
    AXIS["Geodetic latitude", NORTH], 
    AXIS["Geodetic longitude", EAST], 
    AUTHORITY["EPSG","4314"]], 
  PROJECTION["Transverse_Mercator", AUTHORITY["EPSG","9807"]], 
  PARAMETER["central_meridian", 15.0], 
  PARAMETER["latitude_of_origin", 0.0], 
  PARAMETER["scale_factor", 1.0], 
  PARAMETER["false_easting", 5500000.0], 
  PARAMETER["false_northing", 0.0], 
  UNIT["m", 1.0], 
  AXIS["Northing", NORTH], 
  AXIS["Easting", EAST], 
  AUTHORITY["EPSG","31469"]]

**targetCRS:**
GEOGCS["WGS 84", 
  DATUM["World Geodetic System 1984", 
    SPHEROID["WGS 84", 6378137.0, 298.257223563, AUTHORITY["EPSG","7030"]], 
    AUTHORITY["EPSG","6326"]], 
  PRIMEM["Greenwich", 0.0, AUTHORITY["EPSG","8901"]], 
  UNIT["degree", 0.017453292519943295], 
  AXIS["Geodetic latitude", NORTH], 
  AXIS["Geodetic longitude", EAST], 
  AUTHORITY["EPSG","4326"]]
CONCAT_MT[PARAM_MT["Affine", 
    PARAMETER["num_row", 3], 
    PARAMETER["num_col", 3], 
    PARAMETER["elt_0_0", 0.0], 
    PARAMETER["elt_0_1", 1.0], 
    PARAMETER["elt_1_0", 1.0], 
    PARAMETER["elt_1_1", 0.0]], 
  INVERSE_MT[PARAM_MT["Transverse_Mercator", 
      PARAMETER["semi_major", 6377397.155], 
      PARAMETER["semi_minor", 6356078.962818189], 
      PARAMETER["central_meridian", 15.0], 
      PARAMETER["latitude_of_origin", 0.0], 
      PARAMETER["scale_factor", 1.0], 
      PARAMETER["false_easting", 5500000.0], 
      PARAMETER["false_northing", 0.0]]], 
  PARAM_MT["Ellipsoid_To_Geocentric", 
    PARAMETER["dim", 2], 
    PARAMETER["semi_major", 6377397.155], 
    PARAMETER["semi_minor", 6356078.962818189]], 
  PARAM_MT["Position Vector transformation (geog2D domain)", 
    PARAMETER["dx", 612.4], 
    PARAMETER["dy", 77.0], 
    PARAMETER["dz", 440.2], 
    PARAMETER["ex", -0.054], 
    PARAMETER["ey", 0.057], 
    PARAMETER["ez", -2.797], 
    PARAMETER["ppm", 2.5500000000455714]], 
  PARAM_MT["Geocentric_To_Ellipsoid", 
    PARAMETER["dim", 2], 
    PARAMETER["semi_major", 6378137.0], 
    PARAMETER["semi_minor", 6356752.314245179]], 
  PARAM_MT["Affine", 
    PARAMETER["num_row", 3], 
    PARAMETER["num_col", 3], 
    PARAMETER["elt_0_0", 0.0], 
    PARAMETER["elt_0_1", 1.0], 
    PARAMETER["elt_1_0", 1.0], 
    PARAMETER["elt_1_1", 0.0]]]