目录
- 1 概述
- 2 Point
- 3 LineString
- 4 Polygon
- 4.1 单环多边形(Polygons with a Single Ring)
- 4.2 多环多边形(Polygons with Multiple Rings)
- 5 MultiPoint
- 6 MultiLineString
- 7 MultiPolygon
- 8 空间集合(GeometryCollection)
1 概述
MongoDB支持本章节列出的GeoJSON对象类型。
要指定GeoJSON数据,请使用具有以下内容的嵌入式文档:
- 一个GeoJSON对象类型的命名为type的字段;
- 以及一个指定对象坐标的coordinates字段。
如果指定纬度和经度坐标,请先列出经度(longitude ),然后再列出纬度(纬度)
- 有效的经度值介于-180和之间180,并且包括-180和180;
- 有效的纬度值介于-90和之间90,并且包括-90和90。
<field>: { type: <GeoJSON type> , coordinates: <coordinates> }
对GeoJSON对象的MongoDB地理空间查询是在球体上计算的;MongoDB使用WGS84参考系统对GeoJSON对象进行地理空间查询。
2 Point
以下示例指定了GeoJSON Point:
{ type: "Point", coordinates: [ 40, 5 ] }
3 LineString
以下示例指定了GeoJSON LineString:
{ type: "LineString", coordinates: [ [ 40, 5 ], [ 41, 6 ] ] }
4 Polygon
Polygons由GeoJSON LinearRing坐标数组组成。这些 LinearRings都是闭合线(Closed LineStrings)。闭合线(Closed LineStrings)的至少具有四个坐标对(coordinate pairs),并指定与第一个和最后一个坐标相同的位置。
连接曲面上两个点(point)的线可能包含也可能不包含连接平面上这两个点的同一组坐标。连接曲面上两个点的线将是测地线(geodesic)。仔细检查point,以免出现共享边,重叠和其他相交的类型(types of intersections)的错误。
4.1 单环多边形(Polygons with a Single Ring)
以下示例指定了一个带外部环但没有内部环(或孔)的GeoJSON多边形(Polygon)。第一个和最后一个坐标必须匹配才能闭合这个多边形:
{
type: "Polygon",
coordinates: [ [ [ 0 , 0 ] , [ 3 , 6 ] , [ 6 , 1 ] , [ 0 , 0 ] ] ]
}
对于带有单个环的多边形,环不能自相交。
4.2 多环多边形(Polygons with Multiple Rings)
对于具有多个环的多边形:
- 描述的第一个环必须是外环。
- 外环不能自相交。
- 任何内环必须完全由外环容纳。
- 内环不能相交或重叠。内环不能共享边缘。
以下示例表示一个带内环的GeoJSON多边形:
{
type : "Polygon",
coordinates : [
[ [ 0 , 0 ] , [ 3 , 6 ] , [ 6 , 1 ] , [ 0 , 0 ] ],
[ [ 2 , 2 ] , [ 3 , 3 ] , [ 4 , 2 ] , [ 2 , 2 ] ]
]
}
5 MultiPoint
对应版本参见版本。
GeoJSON MultiPoint 的文档为点的列表:
{
type: "MultiPoint",
coordinates: [
[ -73.9580, 40.8003 ],
[ -73.9498, 40.7968 ],
[ -73.9737, 40.7648 ],
[ -73.9814, 40.7681 ]
]
}
6 MultiLineString
对应版本参见版本。
以下示例指定了一个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 ] ]
]
}
7 MultiPolygon
对应版本参见版本。
以下示例指定了一个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 ] ] ]
]
}
8 空间集合(GeometryCollection)
对应版本参见版本。
以下示例存储了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 ] ]
]
}
]
}