Есть ли какая-либо библиотека геометрии, доступная для Java? Я ищу решение, чтобы получить точку пересечения между двумя объектами геометрии.
Библиотека геометрии для Java
Ответ 1
JTS - ваш лучший бесплатный вариант с открытым исходным кодом. Метод, который вы ищете в JTS, здесь
Что касается коммерческих опций, у вас есть ESRI Java JNI версия их библиотеки ArcObjects, которая имеет очень надежную библиотеку геометрии. Интерфейс в ESRI-библиотеке называется ITopologicalOperator
Если все, что вы пытаетесь сделать, это геометрические операции, JTS - ваш лучший вариант - это отличная библиотека, которая имеет много портов для разных языков. Если, с другой стороны, вы ищете целую систему ГИС, которая выполняет сложную символику, поддерживает рабочие процессы ГИС и многопользовательское редактирование, печать и т.д., Я бы начал изучать библиотеки ESRI.
Ответ 2
Пакет, который вы должны посмотреть на него java.awt.geom
, который является частью JDK.
В частности, проверьте класс java.awt.geom.Area
, который позволяет выполнять операции пересечения между двумя Shape
s.
ИЗМЕНИТЬ
Нахождение точек пересечения нетривиально, насколько я знаю, поскольку вам нужно применять другой алгоритм в зависимости от форм, которые вы анализируете. Например, алгоритм пересечения между двумя кругами задается здесь, тогда как алгоритм вычисления интракции между двумя кривыми Безье совершенно другой (здесь).
РЕДАКТИРОВАТЬ 2
Одно предложение: вы можете изучить класс PathIterator
, который возвращает описание пути формы в виде последовательности сегментов. В частности, проверьте FlatteningPathIterator
, который разрушит любые кривые на несколько прямых линий. Как только ваш путь будет сведен к прямым линиям, вычисление точек пересечения будет простым... хотя, очевидно, это приближение в тех случаях, когда ваша фигура содержит кривые.
Ответ 3
Для целей, отличных от ГИС, я могу предложить библиотеку javaGeom. Он использует евклидовую абстракцию геометрии, которую большинство людей знает из школы. В этом проекте нет недавней активности, но я нахожу ее хорошо структурированной и простой в использовании. Говорят, что он поддерживает логические операции, но никогда не тестировал, насколько хорошо они работают. Существует довольно многофункциональное тестовое приложение под названием Euclid, которое разработано одним и тем же автором. Вы можете попытаться использовать его, но только если вы уверены, что он сработает для вас.
Ответ 4
Я обнаружил, что JTS изменила руки или изменила исходные сайты или что-то в этом роде. Более новую версию можно найти здесь: http://maven.geotoolkit.org/com/vividsolutions/jts/1.10/
Изменить: это может быть его новая домашняя страница: http://tsusiatsoftware.net/jts/main.html
Ответ 5
JTS - Java Topology Suite - лучший.
http://www.vividsolutions.com/jts/jtshome.htm
Он бесплатный, быстрый, надежный и может обрабатывать вырожденные пересечения.
Ответ 6
http://edndoc.esri.com/arcobjects/9.2/Java/java/library_reference/Geometry/Geometry_overview.htm
Попробуйте эту ссылку, эта ссылка содержит полную информацию о библиотеке geomentry.....