Методы геохэш полигона?

11

GeoHash - отличный метод для кодирования широты и долготы точки в строку. Это сжато, благодаря использованию цифр + букв, и точность можно настроить, добавив символы в конце.

Я ищу эквивалентный метод для кодирования полигонов, а не точек. Я видел два способа сделать это:

  • geohash все точки многоугольника, затем объединить их, а затем сжать полученную строку, используя классические алгоритмы сжатия текста.
  • ссылаться на все геошашки, включенные в многоугольник. Это метод RecursivePrefixTree - см. Http://www.opensourceconnections.com/2014/04/11/indexing-polygons-in-lucene-with-accuracy/ .

Я хотел бы, чтобы код мог манипулировать людьми, т.е. Ручное копирование не только на машинах в качестве индекса.

Изменить: см. Также обсуждение (на французском языке) на http://seenthis.net/messages/269838 .

Сильвен Лесаж
источник
Добро пожаловать в GIS SE, вы готовы использовать любую библиотеку python / geo?
artwork21
Ясно да. Но вопрос больше в понятиях и алгоритмах, чем в реализациях.
Сильвен Лесаж

Ответы:

6

Посмотрите на Georaptor . Создает сжатый набор геохешей, т. Е. Комбинацию геохешей на разных уровнях.

Эшвин Наир
источник
Обратите внимание, что ElasticSearch использует ту же стратегию для индексации полигонов : astic.co/guide/en/elasticsearch/reference/current/…
Sylvain Lesage
2

Самая надежная реализация находится в библиотеке геометрии s2 с ее реализацией Polygon Cover. Использует S2CellIds, улучшение GeoHashes, в качестве своей единицы.

tmcw
источник
1

С недавним выпуском Google Открытого кода местоположения , был хороший вопрос о Geohash. К сожалению, я не видел что-то о полигонах Geohash.

Поскольку вы ищете различные реализации для решений, похожих на Geohash, посмотрите сравнение различных алгоритмов и решений Google по адресу https://github.com/google/open-location-code/blob/master/docs/comparison.adoc.

Это явно для очков, но это может помочь вам для вашего многоугольника Geohash "квест".

ThomasG77
источник
1

Очень простой реализацией было бы выполнение BFS, заполняющей полигон геохэшами. Тогда вы можете рекурсивно разбивать края на более высокую точность.

введите описание изображения здесь

Вот пример Пример BFS

Carlos
источник
0

Функция PostGIS ST_GeoHash возвращает GeoHash на основе типа входной геометрии. Конечно, любая геометрия, кроме точки, приведет к снижению точности.

Shree
источник