GeoJSON 对象
Overview
MongoDB 支持此页面上列出的各种 GeoJSON 对象类型。
要指定 GeoJSON 数据,请使用包含以下内容的嵌入式文档:
一个名为
type
的字段,用于指定 GeoJSON 对象类型,以及名为
coordinates
的字段,指定对象的坐标。
<field>: { type: <GeoJSON type> , coordinates: <coordinates> }
重要
如果指定纬度和经度坐标,则先列出经度,然后列出纬度。
有效经度值介于
-180
和180
之间,两者均包括在内。有效纬度值介于
-90
和90
之间,两者均包括在内。
对GeoJSON对象的MongoDB地理空间查询在球体上计算; MongoDB使用 WGS 84参考系统对GeoJSON对象进行地理空间查询。
Point
以下示例指定了 GeoJSON 点:
{ type: "Point", coordinates: [ 40, 5 ] }
LineString
如下示例指定了一个 GeoJSON LineString:
{ type: "LineString", coordinates: [ [ 40, 5 ], [ 41, 6 ] ] }
Polygon
多边形 由一组 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 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 ] ] ] } ] }