文档菜单
文档首页
/
MongoDB 手册
/ /

GeoJSON 对象

本页内容

  • 概述
  • 线字符串
  • 多边形
  • 多点
  • 多线字符串
  • 多边形
  • 几何集合

MongoDB 支持本页上列出的 GeoJSON 对象类型。

要指定 GeoJSON 数据,使用带有以下字段的嵌入文档:

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

  • 一个名为 coordinates 的字段,用于指定对象的坐标。

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

重要

如果指定经纬度坐标,请先列出 经度,然后是 纬度

  • 有效的经度值在 -180180 之间,两者都包含。

  • 有效的纬度值在 -9090 之间,两者都包含。

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

以下示例指定了一个 GeoJSON:

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

以下示例指定了一个GeoJSON LineString

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

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 ] ]
]
}
Diagram of a Polygon with internal ring.

需要 2dsphere 索引

GeoJSON MultiPoint 嵌入的文档编码了一系列点。

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

需要 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 ] ]
]
}

需要 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 ] ] ]
]
}

需要 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 ] ]
]
}
]
}

返回

查找餐厅