Docs 菜单

Docs 主页开发应用程序MongoDB Manual

GeoJSON 对象

在此页面上

  • 概述
  • Point
  • LineString
  • Polygon
  • MultiPoint
  • MultiLineString
  • MultiPolygon
  • GeometryCollection

MongoDB 支持此页面上列出的各种 GeoJSON 对象类型。

要指定 GeoJSON 数据,请使用包含以下内容的嵌入式文档:

  • 名为 type的字段,用于指定 GeoJSON 对象类型,以及

  • 名为 coordinates 的字段,指定对象的坐标。

<field>: { type: <GeoJSON type> , coordinates: <coordinates> }

重要

如果指定纬度和经度坐标,则先列出经度,然后列出纬度

  • 有效经度值介于 -180180 之间,两者均包括在内。

  • 有效纬度值介于 -9090 之间,两者均包括在内。

对 GeoJSON 对象的 MongoDB 地理空间查询在球体上进行计算;MongoDB 使用 WGS84 参考系统对 GeoJSON 对象进行地理空间查询。

以下示例指定了一个 GeoJSON :

{ type: "Point", coordinates: [ 40, 5 ] }

如下示例指定了一个 GeoJSON LineString

{ type: "LineString", coordinates: [ [ 40, 5 ], [ 41, 6 ] ] }

多边形 由一组 GeoJSONLinearRing 坐标数组组成。这些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 ] ]
]
}
一个具有内环的多边形的示意图。

需要版本

GeoJSON MultiPoint 嵌入式文档对一个点列表进行编码。

{
type: "MultiPoint",
coordinates: [
[ -73.9580, 40.8003 ],
[ -73.9498, 40.7968 ],
[ -73.9737, 40.7648 ],
[ -73.9814, 40.7681 ]
]
}

需要版本

如下示例指定了一个 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 ] ]
]
}

需要版本

以下示例指定 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 ] ] ]
]
}

需要版本

以下示例存储 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 ] ]
]
}
]
}
← 通过地理空间查询查找餐厅