【发布时间】:2021-07-09 16:56:20
【问题描述】:
我在围绕对象(线)创建 geotools 缓冲区时遇到问题,所有对象似乎都是弯曲的,我认为这是因为 CRS 的差异在缓冲区上非常明显。我发现我可能需要设置我的应用正在使用的 CRS,我希望它是 EPSG:4326,但我不知道该怎么做。
阅读 geotools 指南我已经看到了如何通过转换知道之前使用的 CRS 的示例,但我只能获得 SRID 代码而不是 CRS。感谢任何帮助
在下面显示的代码中,我试图在一条线上构造缓冲区并获取缓冲区在不同半径上的坐标。它工作得很好,但在地图上似乎真的不均匀。我还尝试创建指定 SRID 的几何工厂,假设 int 代码与 CRS 中的相同,在不同工厂中显示坐标没有任何区别
GeometryFactory geometryFactory = new GeometryFactory(new PrecisionModel(), 4326);
GeometryFactory factory = JTSFactoryFinder.getGeometryFactory();
LineString lineString = geometryFactory.createLineString(mapCoords(pipeline));
for (double radius : radiuses){
Coordinate[] coordinates = lineString.buffer(radius).getCoordinates();
List<Point> points = mapPoints(coordinates);
radiusesPoints.add(points);
}
【问题讨论】:
-
我们需要查看您使用的代码吗?你是如何创建你的功能的?它们在什么投影中 - 缓冲区不适用于像 4326 这样的地理 CRS。
-
@IanTurton 我将我正在使用的代码添加到问题中,告诉我您是否需要更多信息,还将代码中的方法映射到将 geotools 坐标转换为本地创建的类点(它们是几乎相同,但仅针对 2D 具有最小化的功能)
-
我们需要查看
mapCoords(pipeline)的输出以了解实际发生的情况 - 但这不起作用,因为 JTS 不会使用您添加到工厂的 SRID。跨度> -
你可以只使用你的几何体