Javaで使用できるジオメトリライブラリはありますか? 2つのジオメトリオブジェクト間の交点を取得するソリューションを探しています。
[〜#〜] jts [〜#〜] は、最高の無料オープンソースオプションです。 JTSで探している方法は here です。
商用オプションに関しては、非常に堅牢なジオメトリライブラリを持つArcObjectsライブラリの ESRIのJava JNIバージョン があります。ESRIのライブラリのインターフェイスは---と呼ばれます ITopologicalOperator
あなたがしようとしているすべてが幾何学的な操作であるなら、JTSはあなたの最良のオプションです-それは異なる言語への多くのポートを持つ優れたライブラリです。一方、複雑なシンボル体系を実行し、GISワークフローやマルチユーザー編集、印刷などをサポートするGISシステム全体を探している場合は、ESRIライブラリを調べ始めます。
GIS以外の目的のために、javaGeomライブラリをお勧めします。ほとんどの人々が学校で知っている幾何学のユークリッド抽象化を使用しています。このプロジェクトには最近の活動はありませんが、うまく構成されていて使いやすいと思います。彼らはそれがブール演算をサポートすると言いますが、それらがどれだけうまく機能するかテストしたことはありません。同じ作者から開発された、Euclidというかなり機能豊富なテストアプリケーションがあります。あなたはそれを使ってみることができますが、それがあなたのためにうまくいくと確信している場合に限ります。
あなたがそれを見るべきパッケージJava.awt.geom
、これはJDKの一部です。
特に Java.awt.geom.Area
クラス。2つのShape
s間の交差演算を実行できます。
[〜#〜]編集[〜#〜]
分析している形状に応じて異なるアルゴリズムを適用する必要があるため、交差点を見つけることは私が知る限り重要ではありません。たとえば、2つの円の交点のアルゴリズムは here ですが、2つのベジェ曲線間の交差を計算するアルゴリズムは完全に異なります( here )。
EDIT 2
1つの提案:PathIterator
クラスを調べることができます。これは、シェイプのパスの説明を一連のセグメントとして返します。特に、FlatteningPathIterator
を確認してください。これにより、曲線が複数の直線に折りたたまれます。パスが直線に縮小されると、交点の計算は簡単になります...これは、形状に曲線が含まれている場合の概算です。
JTSが手を変えたり、ホームサイトを変えたりしたことがわかりました。新しいバージョンはここにあります: http://maven.geotoolkit.org/com/vividsolutions/jts/1.10/
編集:これは新しいホームページの可能性があります: http://tsusiatsoftware.net/jts/main.html
http://edndoc.esri.com/arcobjects/9.2/Java/java/library_reference/Geometry/Geometry_overview.htm
このリンクを試してみてくださいこのリンクには、地理ライブラリに関する詳細が含まれています。