Подтвердить что ты не робот

Библиотека геометрии для Java

Есть ли какая-либо библиотека геометрии, доступная для Java? Я ищу решение, чтобы получить точку пересечения между двумя объектами геометрии.

4b9b3361

Ответ 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, которое разработано одним и тем же автором. Вы можете попытаться использовать его, но только если вы уверены, что он сработает для вас.

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

Ответ 5

JTS - Java Topology Suite - лучший.

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

Он бесплатный, быстрый, надежный и может обрабатывать вырожденные пересечения.