Visão geral
O MongoDB suporta os tipos de objeto GeoJSON listados nesta página.
Para especificar dados GeoJSON, utilize um documento incorporado com:
um campo denominado
typeque especifica o tipo de objeto GeoJSON eum campo chamado
coordinatesque especifica as coordenadas do objeto.
<field>: { type: <GeoJSON type> , coordinates: <coordinates> }
Importante
Se especificar coordenadas de latitude e longitude, liste a longitude primeiro e então a latitude.
Os valores de longitude válidos estão entre
-180e180, ambos inclusos.Os valores de latitude válidos estão entre
-90e90, ambos inclusos.
queries geoespaciais MongoDB em objetos GeoJSON calculam em uma esfera; O MongoDB utiliza o sistema de referência do WGS84 para queries geoespaciais em Objetos GeoJSON.
Point
O exemplo seguinte especifica um Ponto GeoJSON Ponto:
{ type: "Point", coordinates: [ 40, 5 ] }
LineString
O exemplo seguinte especifica um GeoJSON LineString:
{ type: "LineString", coordinates: [ [ 40, 5 ], [ 41, 6 ] ] }
Polygon
Polígonos consistem em uma array de LinearRing coordenadas GeoJSON . Um LinearRing é um fechado LineString com pelo menos quatro pares de coordenadas. A primeira e a última coordenadas devem ser idênticas.
As linhas entre dois pontos em uma superfície curva, ou geodésicas, podem diferir das linhas entre os mesmos pontos em uma superfície plana. Verifique as coordenadas cuidadosamente para evitar erros de borda compartilhada, sobreposições ou outras interseções.
Polígonos com um anel único
O exemplo a seguir especifica um GeoJSON Polygon com um anel externo e sem anéis internos (ou orifícios). A primeira e a última coordenadas devem coincidir para fechar o polígono:
{ type: "Polygon", coordinates: [ [ [ 0 , 0 ] , [ 3 , 6 ] , [ 6 , 1 ] , [ 0 , 0 ] ] ] }
Para polígonos com um único anel, o anel não pode auto-interseccionar.
Polígonos com múltiplos anéis
Para Polígonos com múltiplos anéis:
O primeiro anel descrito deve ser o anel externo.
O anel externo não pode se auto-intersectar.
Qualquer anel interno deve estar inteiramente contido pelo anel externo.
Os anéis internos não podem se cruzar ou se sobrepor. Os anéis internos não podem compartilhar uma borda.
O seguinte exemplo representa um polígono GeoJSON com um anel interior:
{ type : "Polygon", coordinates : [ [ [ 0 , 0 ] , [ 3 , 6 ] , [ 6 , 1 ] , [ 0 , 0 ] ], [ [ 2 , 2 ] , [ 3 , 3 ] , [ 4 , 2 ] , [ 2 , 2 ] ] ] }
MultiPoint
Requer índices do 2dsphere
Os documentos incorporados do GeoJSON MultiPoint codificam uma lista de pontos.
{ type: "MultiPoint", coordinates: [ [ -73.9580, 40.8003 ], [ -73.9498, 40.7968 ], [ -73.9737, 40.7648 ], [ -73.9814, 40.7681 ] ] }
MultiLineString
Requer índices do 2dsphere
O exemplo seguinte especifica um 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
Requer índices do 2dsphere
O exemplo seguinte especifica um GeoJSON MultiPolígono:
{ 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
Requer índices do 2dsphere
O exemplo seguinte armazena coordenadas do 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 ] ] ] } ] }