본문 바로가기

Database/mongoDB

GeoJSON Objects (GeoJSON 객체)

※ 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