GeoHash ist eine hervorragende Methode, um den Breiten- und Längengrad eines Punkts in eine Zeichenfolge zu codieren. Aufgrund der Verwendung von Zahlen + Buchstaben ist es präzise und die Genauigkeit kann durch Hinzufügen von Zeichen am Ende angepasst werden.
Ich suche nach einer äquivalenten Methode zum Codieren von Polygonen, nicht von Punkten. Ich habe zwei Möglichkeiten gesehen:
- Geohash alle Polygonpunkte, verketten sie dann und komprimieren die resultierende Zeichenfolge mithilfe klassischer Textkomprimierungsalgorithmen.
- Verweisen Sie auf alle im Polygon enthaltenen Geohashes. Es ist die RecursivePrefixTree-Methode - siehe http://www.opensourceconnections.com/2014/04/11/indexing-polygons-in-lucene-with-accuracy/ .
Ich möchte, dass der Code von Menschen manipuliert werden kann, dh. manuell kopiert, nicht nur von Maschinen als Index.
Bearbeiten: Siehe auch die Diskussion (auf Französisch) unter http://seenthis.net/messages/269838 .
polygon
latitude-longitude
compression
geohash
Sylvain Lesage
quelle
quelle
Antworten:
Schauen Sie sich Georaptor an . Erstellt einen komprimierten Satz von Geohashes, dh eine Kombination von Geohashes auf verschiedenen Ebenen.
quelle
Die robusteste Implementierung befindet sich in der s2-Geometriebibliothek mit ihrer Polygon Cover-Implementierung. Verwendet S2CellIds, eine Verbesserung gegenüber GeoHashes, als Einheit.
quelle
Mit der jüngsten Veröffentlichung von Open Location Code durch Google gab es eine gute Frage zu Geohash. Leider habe ich nichts über Polygone Geohash gesehen.
Wenn Sie nach verschiedenen Implementierungen für Geohash-ähnliche Lösungen suchen, sehen Sie sich den Google-Vergleich verschiedener Algorithmen und Lösungen unter https://github.com/google/open-location-code/blob/master/docs/comparison.adoc an
Es ist eindeutig für Punkte, aber es kann Ihnen bei Ihrer Polygon-Geohash- "Quest" helfen.
quelle
Eine sehr einfache Implementierung wäre die Durchführung eines BFS, bei dem das Polygon mit den Geohashes gefüllt wird. Dann können Sie die Kanten rekursiv in eine höhere Genauigkeit aufteilen.
Hier ist ein Beispiel für ein BFS
quelle
Die PostGIS-Funktion ST_GeoHash gibt einen GeoHash basierend auf dem Eingabegeometrietyp zurück. Natürlich würde jede andere Geometrie als ein Punkt zu einer geringeren Genauigkeit führen.
quelle