Geometry library for Java

Is there any geometry library available for Java? I'm looking for solution to get an intersection point(s) between two geometry objects.

Answers


JTS is your best free open source option. The method you are looking for in JTS is here

As far as commercial options, you have ESRI's Java JNI version of their ArcObjects library which has a very robust Geometry Library. The interface on ESRI's library is called ITopologicalOperator

If all you are trying to do is Geometric operations, JTS is your best option - it is an excellent library which has many ports to different languages. If, on the other hand, you are looking for an entire GIS system that does complex symbology, supports GIS workflows and multiuser editing, printing, etc etc, then I would start looking at the ESRI libraries.


The package you should look at it java.awt.geom, which is part of the JDK.

In particular check out the java.awt.geom.Area class, which allows you to perform intersection operations between two Shapes.

EDIT

Finding the intersection points is non-trivial as far as I know, as you need to apply a different algorithm depending on the shapes you're analysing. For example, the algorithm for the intersection between two circles is given here, whereas the algorithm for calculating the intrsection between two Bezier curves is completely different (here).

EDIT 2

One suggestion: You could look into the PathIterator class, which returns a description of a shape's path as a sequence of segments. In particular check out FlatteningPathIterator, which will collapse any curves into multiple straight lines. Once your path has been reduced to straight lines, calculating the intersection points will be simple ... although obviously this is an approximation in cases where your shape contains curves.


For non-GIS purposes I may suggest javaGeom library. It uses the Euclidean abstraction of geometry which most of the people know from school. There's no recent activity on this project, but I find it well structured and easy to use. They say it supports boolean operations, but never tested how well they work. There is a pretty feature-rich testing application named Euclid, which is developed from the same author. You can try to use it, but only if you are sure it's gonna work for you.

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


I found that JTS has changed hands, or changed home sites, or something. A newer version can be found here: http://maven.geotoolkit.org/com/vividsolutions/jts/1.10/

Edit: This might be its new home page: http://tsusiatsoftware.net/jts/main.html


JTS - Java Topology Suite - is the best.

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

It is free, fast, robust, and can handle degenerate intersections.


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

Try this link this link contains full details about geomentry library.....


Need Your Help

Does .NET have an equivalent to Java's .properties files?

java .net properties-file

To jog everyone's memory, Java has these files with an extension of ".properties", which are basically an ASCII text file full of key-value pairs. The framework has some really easy ways to suck that

Working around MySQL error "Deadlock found when trying to get lock; try restarting transaction"

mysql deadlock database-deadlocks

I have a MySQL table with about 5,000,000 rows that are being constantly updated in small ways by parallel Perl processes connecting via DBI. The table has about 10 columns and several indexes.