java - 如何从点创建多边形 (Spatial4j)

标签 java polygon spatial shapes

我想用Java做一些几何计算,发现Spatial4j应该适合我的需要。

我希望能够计算诸如两个多边形是否重叠或者它们的边界框是什么之类的东西。

我的想法是我需要从一系列点创建一个多边形。

为此,我用以下代码进行了测试:

Point point1 = shapeFactory.pointXY(0, 0);
Point point2 = shapeFactory.pointXY(5, 1);
Point point3 = shapeFactory.pointXY(3, 3);
Point point4 = shapeFactory.pointXY(0, 1);
List<Point> points = new ArrayList<>();
points.addAll(Arrays.asList(point1, point2, point3, point4));

所以,我现在有我的观点了。我如何从这些点创建一个多边形(或任何形状)?

我认为 shapeFactory.polygon() 会为我创建一个多边形,但这会引发 UnsupportedOperationException。有什么帮助吗?

最佳答案

好吧,看来Spatial4j没有连接点,所以它不是一个填充的形状。相反,我依靠 JTS 的 Spatial4j 实现,这成功了。 (Spatial4j的多边形未实现)。

JtsSpatialContextFactory jtsSpatialContextFactory = new JtsSpatialContextFactory();
JtsSpatialContext jtsSpatialContext = jtsSpatialContextFactory.newSpatialContext();
JtsShapeFactory jtsShapeFactory = jtsSpatialContext.getShapeFactory();
ShapeFactory.PolygonBuilder polygonBuilder = jtsShapeFactory.polygon();
// note due to it being a builder one needs to chain the points.
Shape shape1 = polygonBuilder.pointXY(4, 0).pointXY(3, 3).pointXY(1, 4).pointXY(0, 0).pointXY(4, 0).build(); 

现在执行例如 shape.getArea() 返回表面积。 还可以通过执行 jtsShapeFactory.getGeometryFrom(shape)Shape 创建一个 Geometry,然后返回一个 Geometry >.

注意:即使在调用build()之后,也要注意执行polygonBuilder.pointXY()。它仍然会将这些点附加到构建之前链接到构建器的任何内容。

关于java - 如何从点创建多边形 (Spatial4j),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55256092/

相关文章:

java - Akka Remote - 消息未传递(Java)

css - 如何制作带 Angular css 框?

opengl - 为什么 GL_FRONT 和 GL_BACK 在 opengl 3.2 以后被弃用

r - R 中的空间面板回归 : non conformable spatial weights?

r - 在ggplot2 map /geom_polygon中仅绘制外边界

java - 有没有办法在单击按钮时不发送整个 Web 表单?

java - Socket 程序中的错误,发送空白消息并且每条消息之前都有一些奇怪的符号

vb.net - 将自相交多边形拆分为非自相交多边形

php - 将空间数据插入MySQL数据库

java - WAR 文件的 Azure 部署显示空白页面