Overview
MongoDB ofrece soporte a los tipos de objetos GeoJSON que se enumeran en esta página.
Para especificar datos de GeoJSON, utilice un documento incrustado con:
un campo llamado
typeque especifica el tipo de objeto GeoJSON, yun campo llamado
coordinatesque especifica las coordenadas del objeto.
<field>: { type: <GeoJSON type> , coordinates: <coordinates> }
Importante
Si especifica coordenadas de longitud y latitud, enumera primero la longitud y luego la latitud.
Los valores de longitud válidos están entre
-180y180, ambos inclusive.Los valores de latitud válidos están entre
-90y90, ambos inclusive.
Las consultas geoespaciales de MongoDB sobre objetos GeoJSON se calculan en una esfera; MongoDB utiliza el Sistema de referenciaWGS para consultas geoespaciales en objetos GeoJSON.84
Point
El siguiente ejemplo especifica un GeoJSON Punto:
{ type: "Point", coordinates: [ 40, 5 ] }
LineString
El siguiente ejemplo especifica un GeoJSON LineString:
{ type: "LineString", coordinates: [ [ 40, 5 ], [ 41, 6 ] ] }
Polygon
Los polígonos consisten en un array de LinearRing coordenadas GeoJSON. Un LinearRing es un cerrado LineString con al menos cuatro pares de coordenadas. La primera y la última coordenada deben ser idénticas.
Las líneas entre dos puntos en una superficie curva, o geodésicas, pueden ser diferentes de las líneas entre los mismos puntos en una superficie plana. Revise cuidadosamente las coordenadas para evitar errores de aristas compartidas, superposiciones u otras intersecciones.
Polígonos con un único anillo
El siguiente ejemplo especifica un GeoJSON Polygon con un anillo exterior y sin anillos interiores (o huecos). La primera y la última coordenada deben coincidir para cerrar el polígono:
{ type: "Polygon", coordinates: [ [ [ 0 , 0 ] , [ 3 , 6 ] , [ 6 , 1 ] , [ 0 , 0 ] ] ] }
Para los polígonos con un solo anillo, el anillo no puede intersecarse a sí mismo.
Polígonos con múltiples anillos
Para polígonos con múltiples anillos:
El primer anillo descrito debe ser el anillo exterior.
El anillo exterior no puede auto-intersectarse.
Todo anillo interior debe estar completamente contenido por el anillo exterior.
Los anillos interiores no se pueden intersectar ni solaparse entre sí. Los anillos interiores no pueden compartir un borde.
El siguiente ejemplo representa un polígono de GeoJSON con un anillo interior:
{ type : "Polygon", coordinates : [ [ [ 0 , 0 ] , [ 3 , 6 ] , [ 6 , 1 ] , [ 0 , 0 ] ], [ [ 2 , 2 ] , [ 3 , 3 ] , [ 4 , 2 ] , [ 2 , 2 ] ] ] }
MultiPoint
Requiere 2índices de dsphere
Los documentos incrustados de GeoJSON MultiPoint codifican una lista de puntos.
{ type: "MultiPoint", coordinates: [ [ -73.9580, 40.8003 ], [ -73.9498, 40.7968 ], [ -73.9737, 40.7648 ], [ -73.9814, 40.7681 ] ] }
MultiLineString
Requiere 2índices de dsphere
El siguiente ejemplo especifica un GeoJSON MultiLineString:
{ type: "MultiLineString", coordinates: [ [ [ -73.96943, 40.78519 ], [ -73.96082, 40.78095 ] ], [ [ -73.96415, 40.79229 ], [ -73.95544, 40.78854 ] ], [ [ -73.97162, 40.78205 ], [ -73.96374, 40.77715 ] ], [ [ -73.97880, 40.77247 ], [ -73.97036, 40.76811 ] ] ] }
MultiPolygon
Requiere 2índices de dsphere
El siguiente ejemplo especifica un MultiPolygon de GeoJSON:
{ type: "MultiPolygon", coordinates: [ [ [ [ -73.958, 40.8003 ], [ -73.9498, 40.7968 ], [ -73.9737, 40.7648 ], [ -73.9814, 40.7681 ], [ -73.958, 40.8003 ] ] ], [ [ [ -73.958, 40.8003 ], [ -73.9498, 40.7968 ], [ -73.9737, 40.7648 ], [ -73.958, 40.8003 ] ] ] ] }
GeometryCollection
Requiere 2índices de dsphere
El siguiente ejemplo almacena coordenadas del tipo GeoJSON GeometryCollection:
{ type: "GeometryCollection", geometries: [ { type: "MultiPoint", coordinates: [ [ -73.9580, 40.8003 ], [ -73.9498, 40.7968 ], [ -73.9737, 40.7648 ], [ -73.9814, 40.7681 ] ] }, { type: "MultiLineString", coordinates: [ [ [ -73.96943, 40.78519 ], [ -73.96082, 40.78095 ] ], [ [ -73.96415, 40.79229 ], [ -73.95544, 40.78854 ] ], [ [ -73.97162, 40.78205 ], [ -73.96374, 40.77715 ] ], [ [ -73.97880, 40.77247 ], [ -73.97036, 40.76811 ] ] ] } ] }