Java的几何库

时间:2010-01-22 08:36:41

标签: java geometry

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

6 个答案:

答案 0 :(得分:31)

JTS是您最好的免费开源选项。您在JTS中寻找的方法是here

就商业选项而言,您有ESRI's Java JNI version的ArcObjects库,它具有非常强大的几何库。 ESRI库中的接口称为ITopologicalOperator

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

答案 1 :(得分:6)

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

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

修改

据我所知,找到交叉点并非易事,因为您需要根据您正在分析的形状应用不同的算法。例如,两个圆之间交叉的算法给出here,而计算两个贝塞尔曲线之间的内部的算法是完全不同的(here)。

编辑2

一个建议:你可以查看PathIterator类,它将形状路径的描述作为一系列段返回。特别检查FlatteningPathIterator,它会将任何曲线折叠成多条直线。一旦你的路径缩小为直线,计算交点将很简单......虽然这显然是你的形状包含曲线的情况下的近似值。

答案 2 :(得分:6)

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

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

答案 3 :(得分:4)

我发现JTS易手,或改变了家庭网站,或其他什么。可以在此处找到更新的版本:http://maven.geotoolkit.org/com/vividsolutions/jts/1.10/

编辑:这可能是新的主页:http://tsusiatsoftware.net/jts/main.html

答案 4 :(得分:2)

JTS - Java拓扑套件 - 是最好的。

http://www.vividsolutions.com/jts/jtshome.htm

它是免费的,快速的,强大的,并且可以处理退化的十字路口。

答案 5 :(得分:0)

http://edndoc.esri.com/arcobjects/9.2/Java/java/library_reference/Geometry/Geometry_overview.htm

尝试此链接此链接包含有关geomentry库的详细信息.....