Métodos para geohash de polígono?


11

GeoHash es un método excelente para codificar la latitud y longitud de un punto en una cadena. Es conciso, debido al uso de números + letras, y la precisión se puede ajustar agregando caracteres al final.

Estoy buscando un método equivalente para codificar polígonos, no puntos. Vi dos formas de hacerlo:

Me gustaría que el código pudiera ser manipulado por humanos, es decir. copiado manualmente, no solo por máquinas como índice.

Editar: ver también la discusión (en francés) en http://seenthis.net/messages/269838 .


Bienvenido a GIS SE, ¿estás abierto a usar cualquier biblioteca python / geo?
artwork21

Claramente si. Pero la pregunta es más sobre conceptos y algoritmos que implementaciones.
Sylvain Lesage

Respuestas:



2

La implementación más robusta se encuentra en la biblioteca de geometría s2 con su implementación Polygon Cover. Utiliza S2CellIds, una mejora sobre GeoHashes, como su unidad.


1

Con el lanzamiento reciente de Google de Open Location Code , hubo un buen cuestionamiento sobre Geohash. Desafortunadamente, no vi algo sobre los polígonos Geohash.

Mientras busca diversas implementaciones para soluciones similares a Geohash, consulte la comparación de Google de varios algoritmos y soluciones en https://github.com/google/open-location-code/blob/master/docs/comparison.adoc

Es claramente para los puntos, pero puede ayudarlo para su "búsqueda" del polígono Geohash.


1

Una implementación muy simple sería realizar BFS llenando el polígono con las geohashes. Entonces puede desglosar recursivamente los bordes con mayor precisión.

ingrese la descripción de la imagen aquí

Aquí hay un ejemplo Ejemplo BFS


0

La función PostGIS ST_GeoHash devuelve un GeoHash basado en el tipo de geometría de entrada. Por supuesto, cualquier geometría que no sea un Punto daría como resultado una precisión menor.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.