Нужна отдельная библиотека Java для выполнения пространственных вычислений на широте / долготе данных

Я ищу библиотеку Java, которая способна выполнять пространственные вычисления на наборах данных широты и долготы. Вот некоторые из функций, которые я ищу:

  • Рассчитайте расстояние между двумя точками
  • Определите, находится ли точка в простом замкнутом многоугольнике, где многоугольник определяется упорядоченным списком точек
  • Определить, пересекает ли линия между точкой "A" и точкой "B" простой замкнутый многоугольник, где многоугольник определяется упорядоченным списком точек
  • Определить, находится ли точка "A" в пределах определенного радиуса точки "B"

Что я НЕ ищу:

  • Мне не нужна библиотека, которая зависит от геопространственного компонента базы данных, такого как Oracle Spatial, и не может функционировать независимо.
  • Я не хочу библиотеку, целью которой является создание графики / карт / и т. Д. Я создаю модуль анализа для существующего приложения, и конечной целью является не создание красивых картинок.
  • Я не хочу библиотеку для поиска больших объемов пространственных данных. Если это также произойдет, это нормально, но я не собираюсь использовать эту функцию.

В конечном итоге организация планирует приобрести лицензию на Oracle Spatial (поэтому на этом этапе будет охватываться пространственный поиск), но сейчас мне нужно реализовать функции анализа, о которых я упоминал выше, для небольших наборов данных, не полагаясь на предоставленную базой данных пространственную информацию. служба поддержки.

5 ответов

Решение

Я считаю, что GeoTools удовлетворит ваши требования. Обратите внимание, что у него есть средства для создания графики / карт, но их можно довольно легко оставить неиспользованными.

Появилась новая библиотека Spatial4J, которая, кажется, полностью удовлетворяет ваши потребности, поддерживает различные пространства и формы.

Spatial4j - это универсальная пространственная / геопространственная библиотека Java с открытым исходным кодом, лицензированная ASL (...)

Я не использовал это до сих пор, но README Закончено, репозиторий довольно популярен, и он доступен в репозитории maven. Я искал такую ​​пространственную библиотеку, когда в итоге оказался и на репо, и на этом вопросе.

Simplelatlng предоставляет более простой API для этого:

https://code.google.com/p/simplelatlng/wiki/GettingStarted

Я использовал Java-класс STRtree для индексации по широте и удаленности запросов https://locationtech.github.io/jts/javadoc/org/locationtech/jts/index/strtree/STRtree.html

Несмотря на ваше желание избежать библиотеки, которая используется для рисования карт, я бы порекомендовал OpenMap. Пакет com.bbn.openmap.geo этой библиотеки выполняет большинство, если не все, что вы просите.

Другие вопросы по тегам