Los Geohash son una forma muy sencilla y eficaz de indexar características espaciales, sobre todo puntuales. Las características lineales y poligonales son un poco más difíciles de indexar, pero se puede hacer. Geohash es una cuadrícula jerárquica estática de tamaño fijo, superpuesta sobre la superficie terrestre. Las celdas de la cuadrícula del mismo nivel jerárquico no se superponen. R-Tree es una rejilla dinámica en la que la ubicación y el tamaño de las celdas cambian en función de las características que indexan. Los cuadros delimitadores y las celdas de las características indexadas por R-Tree cambian cada vez que se insertan y actualizan datos. Geohash se utiliza principalmente para indexar características puntuales y las celdas no cambian con cada inserción y actualización de datos. Las celdas de Geohash no se adaptan a las características como ocurre con R-Tree.
Algunas de las ventajas de geohash (en comparación con r-tree) podrían ser:
- fácil aplicación
- sin degradación del rendimiento con un número creciente de funciones
- búsquedas por proximidad (parcialmente cierto)
Algunas de las desventajas de geohash (en comparación con r-tree) podrían ser:
- precisión arbitraria de la cuadrícula
- más difícil indexar (y consultar) características de líneas y polígonos
- tamaño del índice podría ser grande con algunos métodos de línea y indexación de polígonos
- según las especificaciones, sólo puede utilizarse con longitud/latitud aunque el mismo método puede aplicarse a otros sistemas de coordenadas. sistemas de coordenadas
Esos productos (bases de datos) que mencionas utilizan geohash porque geohash se utiliza principalmente para indexar puntos y hay muchas aplicaciones que necesitan esa función. Las líneas y los polígonos no se utilizan con tanta frecuencia (salvo en las aplicaciones SIG, claro), así que para qué preocuparse. Otra razón es, por supuesto, la facilidad de implementación. Geohash convierte coordenadas bidimensionales en valores unidimensionales. Esto se denomina reducción dimensional. El valor unidimensional es fácil de indexar mediante el árbol b estándar que se utiliza principalmente en esos productos.
Tengo que mencionar que existen algoritmos similares a geohash, pero la mayoría son propietarios y requieren licencia. Geohash es de dominio público. Esta podría ser también la razón de su gran uso en los últimos años.
Probablemente haya otras ventajas y desventajas, pero estas son las primeras que se me ocurren. Espero que mi explicación ayude un poco.
0 votos
He aquí una biblioteca de código abierto para SQL Server que explota de forma óptima el Geohash como entero (
BIGINT
) y cadena (VARCHAR
). Con el diseño de esquemas y los índices adecuados, he podido aprovechar al máximo el Geohash sin tener que recurrir a R-Trees, motores SIG/Espaciales especializados y costosos conocimientos SIG/Espaciales. github.com/qalocate/qalgeohash-tsql