web-dev-qa-db-fra.com

Bibliothèque de géométrie pour Java

Existe-t-il une bibliothèque de géométrie disponible pour Java? Je recherche une solution pour obtenir un point d'intersection entre deux objets géométriques.

34
nanda

JTS est votre meilleure option open source gratuite. La méthode que vous recherchez dans JTS est ici

En ce qui concerne les options commerciales, vous avez ESRI Java JNI version de leur bibliothèque ArcObjects qui a une bibliothèque de géométrie très robuste. L'interface sur la bibliothèque d'ESRI s'appelle ITopologicalOperator

Si tout ce que vous essayez de faire est des opérations géométriques, JTS est votre meilleure option - c'est une excellente bibliothèque qui possède de nombreux ports vers différentes langues. Si, d'autre part, vous recherchez un système SIG complet qui fait une symbologie complexe, prend en charge les flux de travail SIG et l'édition, l'impression, etc., multi-utilisateurs, alors je commencerais à regarder les bibliothèques ESRI.

33
rburhum

À des fins non SIG, je peux suggérer la bibliothèque javaGeom . Il utilise l'abstraction euclidienne de la géométrie que la plupart des gens connaissent à l'école. Il n'y a pas d'activité récente sur ce projet, mais je le trouve bien structuré et facile à utiliser. Ils disent qu'il prend en charge les opérations booléennes, mais n'ont jamais testé leur efficacité. Il existe une application de test assez riche en fonctionnalités nommée Euclid, qui est développée par le même auteur. Vous pouvez essayer de l'utiliser, mais seulement si vous êtes sûr que cela fonctionnera pour vous.

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

6
WindRider

Le paquet que vous devriez regarder Java.awt.geom, qui fait partie du JDK.

Consultez en particulier les Java.awt.geom.Area classe, qui vous permet d'effectuer des opérations d'intersection entre deux Shapes.

[~ # ~] modifier [~ # ~]

Pour autant que je sache, trouver les points d'intersection n'est pas trivial, car vous devez appliquer un algorithme différent en fonction des formes que vous analysez. Par exemple, l'algorithme pour l'intersection entre deux cercles est donné ici , alors que l'algorithme de calcul de l'intrection entre deux courbes de Bézier est complètement différent ( ici ).

EDIT 2

Une suggestion: vous pouvez examiner la classe PathIterator, qui renvoie une description du chemin d'une forme sous la forme d'une séquence de segments. En particulier, consultez FlatteningPathIterator, qui réduira toutes les courbes en plusieurs lignes droites. Une fois que votre chemin a été réduit en lignes droites, le calcul des points d'intersection sera simple ... bien qu'il s'agisse évidemment d'une approximation dans les cas où votre forme contient des courbes.

5
Adamski

J'ai trouvé que JTS a changé de mains, ou changé de sites d'accueil, ou quelque chose. Une version plus récente peut être trouvée ici: http://maven.geotoolkit.org/com/vividsolutions/jts/1.10/

Edit: Cela pourrait être sa nouvelle page d'accueil: http://tsusiatsoftware.net/jts/main.html

4
Kendric Beachey

JTS - Java Topology Suite - est le meilleur.

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

Il est gratuit, rapide, robuste et peut gérer les intersections dégénérées.

2
codekaizen

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

Essayez ce lien ce lien contient tous les détails sur la bibliothèque de géomenterie .....

1
ratty