【发布时间】:2021-08-30 01:00:50
【问题描述】:
我正在尝试使用 java geotools api 和 opengis 库将澳大利亚一些地块的几何坐标参考系统转换为另一个。即 WSG84 (EPSG:4326) 至 GDA2020 / MGA zone 50 (EPSG:7850),或 WSG84 (EPSG:4326) 至 GDA2020 / PCG2020 (EPSG:8031)。到目前为止,转换后的坐标与它假设的原始坐标有一些偏差。现在我的要求是执行本文中解释的 Conformal + Distortion 转换更准确 - https://www.icsm.gov.au/datum/gda-transformation-products-and-tools/transformation-grids
但是我不太确定我需要对当前代码进行哪些更改才能执行上述操作。我做了一些谷歌查找一些代码示例,但找不到我想要的。任何帮助将不胜感激。
Query query = new Query();
DataStore dataStore = getDataStore();
FeatureSource<SimpleFeatureType, SimpleFeature> source = dataStore.getFeatureSource(featureTypeName);
query.setFilter(ECQL.toFilter("land_id='" + landID + "'"));
FeatureCollection collection = source.getFeatures(query);
FeatureIterator iterator = collection.features();
CoordinateReferenceSystem sourceCRS = collection.getSchema().getCoordinateReferenceSystem(); // WSG 84
List<Geometry> geometryList = new ArrayList<Geometry>();
CoordinateReferenceSystem targetCRS = getCRS(targetEPSGCode); // GDA2020 / MGA zone 50
while (iterator.hasNext())
{
Feature feature = (Feature) iterator.next();
GeometryAttribute geom = feature.getDefaultGeometryProperty();
Object geomVal = geom.getValue();
if (geomVal instanceof Geometry)
{
MathTransform mathTransform = CRS.findMathTransform(sourceCRS, targetCRS);
Geometry transformedGeometry = JTS.transform((Geometry) geomVal, mathTransform);
geometryList.add(transformedGeometry);
}
}
// Use geometryList for further stuff
【问题讨论】:
标签: java coordinate-systems coordinate-transformation geotools