Java-коммерческая реализация R-дерева?
Мне нужна коммерческая реклама (Apache License, LGPL, Mozilla Public License и т.д.) R-tree реализация на Java, чтобы замените geonames веб-сервис для часовых поясов, как предлагается в вопросе "определить часовой пояс с широты/долгота без использования веб-сервисов, таких как Geonames.org". У меня найдено some вокруг, но мне было интересно, оценил ли кто-то или использовал их на практике.
Ответы
Ответ 1
Ответ 2
Прежде всего, позвольте мне указать, что если вы будете искать ближайший город из данных координат, это может быть не в том же часовом поясе! То, что вам действительно нужно, на мой взгляд, - это информация об этой административной принадлежности - минимум будет страной, но в некоторых случаях это должно быть даже больше, то есть состояние. Эта информация может быть получена с помощью API Карт Google, а затем скорректирована с более подробной информацией TZ.
существует бесплатная альтернатива GeoNames - EarthTools. Есть некоторые ограничения для самой службы (количество запросов и т.д.), Но все же это хорошо, проверено и работает для меня отлично.
Во-вторых, есть бесплатная альтернатива GeoNames - EarthTools. Есть некоторые ограничения для самой службы (количество запросов и т.д.), Но все же это хорошо, проверено и работает для меня отлично.
В-третьих, если вы хотите импортировать данные в БД, большинство текущих реализаций БД предоставляют геопространственные индексы, которые вы можете использовать. Если вам нужна эта информация, встроенная в ваше приложение, вы можете использовать H2Database (встроенный Java DB) с H2Spatial дополнение - хотя я пробовал это и я не могу рекомендовать его полностью. Neo4j имеют отличную реализацию пространственного индекса
Дополнительно Вы можете использовать Solr для GeoSpatial search. Это хорошо, быстро и легко реализовать. Я на самом деле находится в середине процесса переноса моих запросов БД на Solr...
Наконец, но не в последнюю очередь, ниже вы найдете некоторые из тех, которые я тестировал некоторое время назад:
- JSI - LGPL
- GeoTools - LGPL, излишний, даст вам гораздо больше, чем вам нужно... но это здорово!
Возможно, еще немного, но те, которые я тестировал до сих пор...
Ответ 3
Простой Java-класс RTree, созданный мной:
https://github.com/hadmir/rtree/blob/master/RTree.java
Все объекты хранятся внутри двух массивов int [], поэтому очень легко сохранить (в файл). Кроме того, факт, что добавление новых прямоугольников не создает никаких объектов, означает, что вы можете вставлять миллионы прямоугольников в RTree, а JVM не будет гореть в пламени. Это полезно для геопроектов, где количество объектов обычно велико.
Сохраняются только 2D-прямоугольники (поэтому для сложного объекта вам нужно найти ограничивающий прямоугольник). Query возвращает все прямоугольники (IDs rects), пересекающиеся или перекрывающиеся с "прямоугольником запроса".