Observando el creciente movimiento NoSQL y considerando que bases de datos como MongoDB ofrecen una nueva perspectiva en el almacenamiento flexible de datos para SIG. ¿Cuál es la mejor manera de almacenar líneas y polígonos en documentos JSON para aprovechar los índices 2D y las funciones espaciales?
24
Respuestas:
GeoJSON aquí están las especificaciones .
Aquí hay un ejemplo de una línea y un polígono:
fuente
Una cosa a tener en cuenta es que el soporte de MongoDB para los tipos de datos espaciales es terriblemente malo para cualquier búsqueda espacial seria, y esto se aplica en todos los ámbitos con NoSQL la última vez que lo verifiqué. No me gusta GeoCouch un poco menos, pero todavía tiene mucho camino por recorrer.
GeoJSON es un formato fantástico, pero para aprovechar los índices espaciales limitados (SOLO PUNTO) en Mongo, necesitaría una colección indexada espacialmente que no contenga más que un registro para cada uno de los puntos del polígono con un valor adicional para el ID de registro de su registro espacial que vive en otra colección, luego use una consulta de cuadro delimitador para obtener ID de registro de una y seleccionar de la otra, emulando efectivamente una unión.
Podría volverse loco y simplemente hacer las esquinas del cuadro delimitador como puntos para sus registros, pero luego las búsquedas del cuadro delimitador pueden fallar y, en general, obliga a algunos patrones de diseño bastante ineficientes y empuja inapropiadamente todo tipo de responsabilidades al desarrollador.
Como implementación de referencia, puede consultar este código que se presentó en la Cumbre de desarrolladores de Esri este año.
No estoy contento con el soporte espacial en las diversas bases de datos NoSQL. Solo van lo suficientemente lejos para la búsqueda en la nube de puntos tontos, lo que tiene sentido teniendo en cuenta que la mayoría de las aplicaciones que usan esto solo están colocando marcadores en un mapa de Google en un navegador en algún lugar. PostGIS seguirá siendo el mejor caballo de batalla de código abierto para gestionar la información espacial en el futuro previsible.
fuente
Esto simplemente no es verdad,
"para aprovechar los índices espaciales en Mongo, necesitaría una colección indexada espacialmente que no contenga más que un registro para cada uno de los puntos del polígono, con un valor adicional para el ID de registro de su registro espacial que vive en otra colección, luego use un consulta de cuadro delimitador para obtener ID de registro de una [colección] y seleccionar [datos de registro] de la otra [colección], emulando efectivamente una unión ".
Tengo datos de puntos USGS almacenados en una única colección de Mongo con registros que se ven así:
Puedo hacer consultas de cuadro delimitador en estos datos que devuelven todo el registro (sin la necesidad de otra colección) muy bien.
Consulta:
Respuesta:
Mongo también ofrece la posibilidad de realizar búsquedas de vecinos más cercanos, así como de buscar puntos en polígonos. Esto está bien documentado en mongodb.org
fuente