GeoHash - отличный метод для кодирования широты и долготы точки в строку. Это сжато, благодаря использованию цифр + букв, и точность можно настроить, добавив символы в конце.
Я ищу эквивалентный метод для кодирования полигонов, а не точек. Я видел два способа сделать это:
- geohash все точки многоугольника, затем объединить их, а затем сжать полученную строку, используя классические алгоритмы сжатия текста.
- ссылаться на все геошашки, включенные в многоугольник. Это метод RecursivePrefixTree - см. Http://www.opensourceconnections.com/2014/04/11/indexing-polygons-in-lucene-with-accuracy/ .
Я хотел бы, чтобы код мог манипулировать людьми, т.е. Ручное копирование не только на машинах в качестве индекса.
Изменить: см. Также обсуждение (на французском языке) на http://seenthis.net/messages/269838 .
polygon
latitude-longitude
compression
geohash
Сильвен Лесаж
источник
источник
Ответы:
Посмотрите на Georaptor . Создает сжатый набор геохешей, т. Е. Комбинацию геохешей на разных уровнях.
источник
Самая надежная реализация находится в библиотеке геометрии s2 с ее реализацией Polygon Cover. Использует S2CellIds, улучшение GeoHashes, в качестве своей единицы.
источник
С недавним выпуском Google Открытого кода местоположения , был хороший вопрос о Geohash. К сожалению, я не видел что-то о полигонах Geohash.
Поскольку вы ищете различные реализации для решений, похожих на Geohash, посмотрите сравнение различных алгоритмов и решений Google по адресу https://github.com/google/open-location-code/blob/master/docs/comparison.adoc.
Это явно для очков, но это может помочь вам для вашего многоугольника Geohash "квест".
источник
Очень простой реализацией было бы выполнение BFS, заполняющей полигон геохэшами. Тогда вы можете рекурсивно разбивать края на более высокую точность.
Вот пример Пример BFS
источник
Функция PostGIS ST_GeoHash возвращает GeoHash на основе типа входной геометрии. Конечно, любая геометрия, кроме точки, приведет к снижению точности.
источник