GeoHash to doskonała metoda kodowania szerokości i długości geograficznej punktu w ciągu. Jest zwięzły, dzięki użyciu cyfr + liter, a precyzję można dostroić, dodając znaki na końcu.
Szukam równoważnej metody do kodowania wielokątów, a nie punktów. Widziałem dwa sposoby, aby to zrobić:
- geohash wszystkie punkty wielokąta, a następnie połącz je, a następnie skompresuj powstały ciąg przy użyciu klasycznych algorytmów kompresji tekstu.
- odwołuje się do wszystkich geohashów zawartych w wielokącie. Jest to metoda RecursivePrefixTree - patrz http://www.opensourceconnections.com/2014/04/11/indexing-polygons-in-lucene-w--ccuracy/ .
Chciałbym, aby kod mógł być modyfikowany przez ludzi, tj. ręcznie kopiowane, nie tylko przez maszyny jako indeks.
Edycja: patrz także dyskusja (w języku francuskim) na stronie http://seenthis.net/messages/269838 .
polygon
latitude-longitude
compression
geohash
Sylvain Lesage
źródło
źródło
Odpowiedzi:
Spójrz na Georaptor . Tworzy skompresowany zestaw geohashów, tj. Kombinację geohashów na różnych poziomach.
źródło
Najbardziej niezawodna implementacja znajduje się w bibliotece geometrii s2 z implementacją Polygon Cover. Używa S2CellIds, ulepszenia GeoHashsa, jako swojej jednostki.
źródło
W ostatnim wydaniu Google Open Code Code pojawiło się dobre pytanie dotyczące Geohash. Niestety nie widziałem nic o wielokątach Geohash.
Gdy szukasz różnych implementacji rozwiązań typu Geohash, spójrz na porównanie Google różnych algorytmów i rozwiązań na https://github.com/google/open-location-code/blob/master/docs/comparison.adoc
Wyraźnie dotyczy punktów, ale może ci pomóc w twoim "zadaniu" na wielokąt Geohash.
źródło
Bardzo prostą implementacją byłoby wykonanie BFS wypełniania wielokąta geohashami. Następnie możesz rekurencyjnie rozkładać krawędzie na większą precyzję.
Oto przykładowy przykład BFS
źródło
Funkcja PostGIS ST_GeoHash zwraca GeoHash na podstawie typu geometrii wejściowej. Oczywiście, każda geometria inna niż punkt spowodowałaby niższą precyzję.
źródło