Java的几何库

nan*_*nda 33 java geometry

是否有可用于Java的几何库?我正在寻找解决方案来获得两个几何对象之间的交叉点.

rbu*_*hum 32

JTS是您最好的免费开源选项.您在JTS中寻找的方法就在这里

就商业选项而言,您拥有ESRI的Java JNI版本的ArcObjects库,它具有非常强大的几何库.ESRI库中的接口称为ITopologicalOperator

如果您要做的只是几何操作,JTS是您的最佳选择 - 它是一个出色的库,它有许多不同语言的端口.另一方面,如果您正在寻找具有复杂符号系统的整个GIS系统,支持GIS工作流程和多用户编辑,打印等,那么我将开始查看ESRI库.

  • Missed Kendrics链接:新网址:http://tsusiatsoftware.net/jts/main.html (3认同)
  • 来自Esri的免费选项:https://github.com/Esri/geometry-api-java (3认同)

Ada*_*ski 6

您应该查看它的包java.awt.geom,它是JDK的一部分.

特别是检查java.awt.geom.Area类,它允许您在两个Shapes 之间执行交叉操作.

编辑

寻找交叉点是不平凡的,据我所知,因为你需要应用不同的算法,这取决于您要分析的形状.例如,对于两个圆之间的交点的算法给出这里,而算法计算两个Bezier曲线之间的intrsection是完全不同的(在这里).

编辑2

一个建议:您可以查看PathIterator类,它将形状路径的描述作为一系列段返回.特别是检查FlatteningPathIterator,它会将任何曲线折叠成多条直线.一旦你的路径已经被减少到直线,计算交点将是简单的...虽然显然这是在案件的近似您的形状包含曲线.


Win*_*der 6

对于非GIS目的,我可能会建议使用javaGeom库.它使用大多数人从学校知道的欧几里德几何抽象.这个项目最近没有活动,但我发现它结构合理,易于使用.他们说它支持布尔操作,但从未测试过它们的工作情况.有一个功能丰富的测试应用程序,名为Euclid,由同一作者开发.您可以尝试使用它,但前提是您确定它会为您工作.

http://sourceforge.net/projects/geom-java/