2 votos

¿Cómo se construye un índice espacial MongoDB para la geometría GeoJSON?

Estoy tratando de construir un índice espacial en una colección de características que he creado de:

ogr2ogr -f GeoJSON out.json ... y luego importado a MongoDB (2.6.1).

Cuando intento construir un índice espacial( {"features" : "2d"} ), Recibo este error:

Error creating index
WriteConcern detected an error 'geo values must be 'legacy coordinate pairs' for 2d indexes

El glosario de MongoDB tiene esto para los pares de coordenadas heredados:

El formato utilizado para los datos geoespaciales antes de la versión 2.4 de MongoDB. Este formato almacena los datos geoespaciales como puntos en un sistema de coordenadas planas (por ejemplo, [ x, y ]).

No veo cómo el GeoJSON no cumple esta especificación, ya que los pares de coordenadas también son [x,y]. ¿Hay algo más en la coordenada heredada que un índice espacial Mongo está esperando? Y si ese es el caso, ¿significa esto que no se puede construir un índice espacial directamente contra GeoJSON ( lo que significa que el JSON de la geometría tiene que ser modificado de alguna manera para hacerlo ingerible por MongoDB ).

Ref: ¿Cuál es la diferencia entre los pares de coordenadas GeoJSON y Legacy en términos de mongoDb?

3voto

David Holm Puntos 6165

La geometría GeoJSON tiene algo más que una matriz de coordenadas, que es todo lo que espera el índice 2d. GeoJSON también contiene el tipo y posiblemente el sistema de coordenadas/proyección.

Desde el docs :

No utilice un índice 2d si sus datos de localización incluyen objetos GeoJSON. Para indexar tanto pares de coordenadas heredados como objetos GeoJSON, utilice un índice 2dsphere.

Por lo tanto, utiliza un índice de 2dsphere en su lugar. Pero, para utilizar un índice 2dsphere, tendrás que proyectar tus datos a WGS84, ya que eso es lo que MongoDB espera .

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X