※ 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/
'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 |