Нужна отдельная библиотека Java для выполнения пространственных вычислений на широте / долготе данных
Я ищу библиотеку Java, которая способна выполнять пространственные вычисления на наборах данных широты и долготы. Вот некоторые из функций, которые я ищу:
- Рассчитайте расстояние между двумя точками
- Определите, находится ли точка в простом замкнутом многоугольнике, где многоугольник определяется упорядоченным списком точек
- Определить, пересекает ли линия между точкой "A" и точкой "B" простой замкнутый многоугольник, где многоугольник определяется упорядоченным списком точек
- Определить, находится ли точка "A" в пределах определенного радиуса точки "B"
Что я НЕ ищу:
- Мне не нужна библиотека, которая зависит от геопространственного компонента базы данных, такого как Oracle Spatial, и не может функционировать независимо.
- Я не хочу библиотеку, целью которой является создание графики / карт / и т. Д. Я создаю модуль анализа для существующего приложения, и конечной целью является не создание красивых картинок.
- Я не хочу библиотеку для поиска больших объемов пространственных данных. Если это также произойдет, это нормально, но я не собираюсь использовать эту функцию.
В конечном итоге организация планирует приобрести лицензию на Oracle Spatial (поэтому на этом этапе будет охватываться пространственный поиск), но сейчас мне нужно реализовать функции анализа, о которых я упоминал выше, для небольших наборов данных, не полагаясь на предоставленную базой данных пространственную информацию. служба поддержки.
5 ответов
Я считаю, что GeoTools удовлетворит ваши требования. Обратите внимание, что у него есть средства для создания графики / карт, но их можно довольно легко оставить неиспользованными.
Появилась новая библиотека Spatial4J, которая, кажется, полностью удовлетворяет ваши потребности, поддерживает различные пространства и формы.
Spatial4j - это универсальная пространственная / геопространственная библиотека Java с открытым исходным кодом, лицензированная ASL (...)
Я не использовал это до сих пор, но README
Закончено, репозиторий довольно популярен, и он доступен в репозитории maven. Я искал такую пространственную библиотеку, когда в итоге оказался и на репо, и на этом вопросе.
Simplelatlng предоставляет более простой API для этого:
Я использовал Java-класс STRtree для индексации по широте и удаленности запросов https://locationtech.github.io/jts/javadoc/org/locationtech/jts/index/strtree/STRtree.html
Несмотря на ваше желание избежать библиотеки, которая используется для рисования карт, я бы порекомендовал OpenMap. Пакет com.bbn.openmap.geo этой библиотеки выполняет большинство, если не все, что вы просите.