※ MongoDB 공식 매뉴얼에 나와있는 GeoJSON Objects 부분을 번역해 보도록 하겠습니다. 번역을 안하는게 나을 것 같은 용어들은 한번만 번역하거나 그대로 두었습니다.
Overview
MongoDB 는 이 페이지에 나열되어 있는 GeoJSON 객체 타입들을 지원합니다.
GeoJSON data 를 명시하기 위해서, embodded document 를 아래의 조건과 함께 사용해야 합니다 :
- type 필드에는 GeoJSON 객체 타입을 명시해야 합니다.
- coordinates 필드에는 객체의 좌표를 명시해야 합니다. 위도와 경도 좌표를 명시한다면, 경도 그리고 위도 순서로 나열해야 합니다 :
- 경도 값의 유효 범위는 -180 <= 경도 <= 180 입니다.
- 위도 값의 유효 범위는 -90 <= 위도 <= 90 입니다.
<field>: { type: <GeoJSON type> , coordinates: <coordinates> }
MongoDB 의 GeoJSON 객체에 대한 geospatial query 는 구체 상에서 계산됩니다. (MongoDB 는 GeoJSON 객체에 대한 geospatial query 에 WGS84 참조 시스템을 사용합니다.)
Point (점)
다음 예시는 GeoJSON Point 를 명시합니다 :
{ type: "Point", coordinates: [ 40, 5 ] }
LineString (선)
다음 예시는 GeoJSON LineString 을 명시합니다 :
{ type: "LineString", coordinates: [ [ 40, 5 ], [ 41, 6 ] ] }
Polygon
Polygon 은 GeoJSON LinearRing 좌표 배열들의 배열로 구성됩니다. 이 LinearRings 는 닫힌 LineStrings 입니다. 닫힌 LineStrings 는 적어도 4개의 좌표 쌍을 갖고 있으며 그 중 첫번째와 마지막 좌표는 같은 위치로 명시되어야 합니다.
곡면의 두 점을 연결하는 선은 평면의 두 점을 연결하는 동일한 좌표 세트를 포함하거나 포함하지 않을 수 있습니다. 곡면의 두 점을 연결하는 선은 측지선 (두 점을 최단거리로 잇는 곡선) 입니다. 공유된 모서리 혹은 겹침, 다른 유형의 교차점과 같은 에러를 피하기 위해 점들을 주의 깊게 체크해야 합니다.
Polygons with a Single Ring
다음의 예시는 외부링이 있고 내부링이 없는 (구멍) 형태의 GeoJSON Polygon 을 명시합니다. 다각형을 닫기 위해서 처음과 마지막 좌표는 일치해야 합니다 :
{
type: "Polygon",
coordinates: [ [ [ 0 , 0 ] , [ 3 , 6 ] , [ 6 , 1 ] , [ 0 , 0 ] ] ]
}
싱글링을 가진 Polygon 의 경우, 링은 자기 교차 할 수 없습니다.
Polygons with Multiple Rings
여러개의 링을 가진 Polygon 의 경우 :
- 첫번째 링은 반드시 외부링이어야 합니다.
- 외부링은 자기 교차 할 수 없습니다.
- 모든 내부링은 반드시 외부링에 완전히 포함되어야 합니다.
- 내부링은 서로 교차되거나 겹칠 수 없습니다. 내부링들은 모서리를 공유 할 수 없습니다.
다음의 예시는 내부링을 가진 GeoJSON polygon 에 해당합니다 :
{
type : "Polygon",
coordinates : [
[ [ 0 , 0 ] , [ 3 , 6 ] , [ 6 , 1 ] , [ 0 , 0 ] ],
[ [ 2 , 2 ] , [ 3 , 3 ] , [ 4 , 2 ] , [ 2 , 2 ] ]
]
}
MultiPoint
GeoJSON MultiPoint embedded documents 는 점들의 리스트를 나타냅니다.
{
type: "MultiPoint",
coordinates: [
[ -73.9580, 40.8003 ],
[ -73.9498, 40.7968 ],
[ -73.9737, 40.7648 ],
[ -73.9814, 40.7681 ]
]
}
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 ] ]
]
}
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 ] ] ]
]
}
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 ] ]
]
}
]
}
출처 : https://docs.mongodb.com/manual/reference/geojson/
GeoJSON Objects — MongoDB Manual
Polygon Polygons consist of an array of GeoJSON LinearRing coordinate arrays. These LinearRings are closed LineStrings. Closed LineStrings have at least four coordinate pairs and specify the same position as the first and last coordinates. The line that jo
docs.mongodb.com
'Database > mongoDB' 카테고리의 다른 글
$geoWithin (0) | 2020.03.31 |
---|---|
$geoIntersects (0) | 2020.03.25 |
Geospatial Query Operators (Geospatial 쿼리 연산자) (0) | 2020.03.25 |
MongoDB - Find Restaurants with Geospatial Queries (0) | 2020.03.10 |
MongoDB - Geospatial Queries (지리공간 쿼리) (0) | 2020.03.02 |