GeoJSON 对象
概述
MongoDB 支持本页上列出的 GeoJSON 对象类型。
要指定 GeoJSON 数据,使用带有以下字段的嵌入文档:
一个名为
type
的字段,用于指定 GeoJSON 对象类型,以及一个名为
coordinates
的字段,用于指定对象的坐标。
<field>: { type: <GeoJSON type> , coordinates: <coordinates> }
重要
如果指定经纬度坐标,请先列出 经度,然后是 纬度。
有效的经度值在
-180
和180
之间,两者都包含。有效的纬度值在
-90
和90
之间,两者都包含。
MongoDB 在 GeoJSON 对象上进行地理空间查询时在球面上进行计算;MongoDB 使用 WGS84 参考系进行 GeoJSON 对象的地理空间查询。WGS84 参考系。
Point
以下示例指定了一个 GeoJSON点:
{ type: "Point", coordinates: [ 40, 5 ] }
LineString
以下示例指定了一个GeoJSON LineString
{ type: "LineString", coordinates: [ [ 40, 5 ], [ 41, 6 ] ] }
Polygon
Polygons 由一个GeoJSON LinearRing
坐标数组组成。这些 LinearRings
是闭合的 LineStrings
。闭合的 LineStrings
至少有四个坐标对,并指定与第一个和最后一个坐标相同的位置。
在曲面上的两个点之间的线可能或可能不包含与在平面上连接这两个点的坐标集相同的坐标集。在曲面上的两个点之间的线将是大地线。仔细检查点以避免共享边缘、重叠和其他类型的交叉引起的错误。
单环多边形
以下示例指定了一个GeoJSON Polygon
,它有一个外部环但没有内部环(或洞)。为了封闭多边形,第一个和最后一个坐标必须匹配
{ type: "Polygon", coordinates: [ [ [ 0 , 0 ] , [ 3 , 6 ] , [ 6 , 1 ] , [ 0 , 0 ] ] ] }
对于单环多边形,环不能自相交。
多环多边形
对于多环多边形
第一个描述的环必须是外部环。
外部环不能自相交。
任何内部环必须完全包含在外部环内。
内部环不能相交或重叠。内部环不能共享边。
以下示例表示一个具有内部环的GeoJSON多边形
{ type : "Polygon", coordinates : [ [ [ 0 , 0 ] , [ 3 , 6 ] , [ 6 , 1 ] , [ 0 , 0 ] ], [ [ 2 , 2 ] , [ 3 , 3 ] , [ 4 , 2 ] , [ 2 , 2 ] ] ] }
MultiPoint
需要 2dsphere 索引
GeoJSON MultiPoint 嵌入的文档编码了一系列点。
{ type: "MultiPoint", coordinates: [ [ -73.9580, 40.8003 ], [ -73.9498, 40.7968 ], [ -73.9737, 40.7648 ], [ -73.9814, 40.7681 ] ] }
MultiLineString
需要 2dsphere 索引
以下示例指定了一个 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
需要 2dsphere 索引
以下示例指定了GeoJSON的MultiPolygon
{ 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
需要 2dsphere 索引
以下示例存储GeoJSON类型的坐标 几何集合
{ 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 ] ] ] } ] }