Tôi đang gặp vấn đề liên quan đến phép biến đổi tọa độ được yêu thích với sự trợ giúp của GeoTools: Tôi muốn chuyển đổi tập hợp tọa độ từ Gauss-Kruger (vùng 5, EPSG 31469) vào các tọa độ WGS84 thông thường (EPSG 4326).Biến đổi tọa độ không chính xác Gauss-Kruger - WGS84 sử dụng GeoTools
Tôi đã xây dựng một mã số với một ví dụ đơn giản (chỉ cần một cặp tọa độ để thử):
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
Kết quả sau khi gỡ lỗi như sau: 48,791886921764345, 17,16525096311777
Khi tôi sau đó kiểm tra WGS84 của tôi thu được (chỉ cần nhấn chúng vào Google Maps) Tôi kết thúc một nơi nào đó ở Cộng hòa Séc gần Áo mặc dù cặp tọa độ này phải ở đâu đó ở phía đông nước Đức (chắc chắn, tôi đã kiểm tra nó bằng một số bộ giải mã html):
---> phải là kết quả: 51.0609167, 13.6900142.
Tôi không thể tưởng tượng bất kỳ lý do nào xảy ra lỗi này. GeoTools nhận cả CRS mong muốn (tôi đính kèm một trích xuất từ phản hồi trong bảng điều khiển java)
Có ai có thể giải thích điều này không? Tôi đánh giá cao sự giúp đỡ nào!
Nhiều Greets, Sebastian
**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]]]
Điều này làm tôi phát điên lên ở đây. Strange đủ 'CRS.decode (" EPSG: 4326 ")' sử dụng bằng cách nào đó một định hướng trục khác với 'DefaultGeographicCRS.WGS84' có thể là một lỗi? – Karussell
Ồ, không liên quan gì đến Geotools: "Vì vậy, nếu bạn thấy một số dữ liệu trong" EPSG: 4326 ", bạn không biết nó có nằm trong thứ tự x/y hay theo thứ tự y/x hay không." Xem phần "thứ tự trục" tại đây http://docs.geotools.org/latest/userguide/tutorial/geometry/geometrycrs.html – Karussell