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 punto GeoJSON:
{ 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 arreglo de coordenadas GeoJSON LinearRing. Estos LinearRings están cerrados LineStrings. Los LineStrings cerrados deben tener al menos cuatro pares de coordenadas y especificar la misma posición que las primeras y últimas coordenadas.
La línea que une dos puntos en una superficie curva puede o no contener el mismo conjunto de coordenadas que une esos dos puntos en una superficie plana. La línea que une dos puntos en una superficie curva será una geodésica. Revisar cuidadosamente los puntos para evitar errores con bordes compartidos, así como superposiciones y otros tipos de 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 versiones
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 versiones
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 versiones
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 versiones
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 ] ] ] } ] }