[GIS] Geometry, 경위도 좌표계(EPSG:4326)
안녕하세요.
[GIS] Geometry, 경위도 좌표계(EPSG:4326)에 대해 정리하려고 합니다.
-------------------------------------

개요
GIS(Geospatial Information System)란, 우리가 흔히 하는 데이터가 위치에 대한 정보를 갖고 있는 것이라고 할 수 있는데 도시의 건축물 좌표(Point)나, 도로(Line), 시군구 법정동에 해당하는 영역(Polygon)이 될 수 있다.
GIS data
이렇게 위치정보를 포함하고 있는 데이터는 크게 Vector와 Raster로 구성되어 있다. Raster는 우리가 흔히 아는 이미지 형태의 데이터 이고, Vector는 대표적인 세 가지 유형의 데이터가 있다.

1. Point(점) : 주로 어떤 도시기반시설, 건물, 교차로(node) 등을 나타낼 때 사용한다.
2. Line(선) : 주로 도로, 경로, 네트워크, 어떤 면의 중심선, 철도 등을 나타낼 때 사용한다.
3. Polygon(다각형) : 주로 어떤 지역, 군, 영역등을 나타낼 때 사용한다.
Geometry의 공간연산
공간연산하면 단지 교차하는지, 포함하는지와 같은 공간관계 연산만이 아니라 공간분석 연산도 포함된다. 참고로 공간분석 연산의 경우 결과가 Multi-Polygon인 경우 자랑스런 Memory 충돌에러가 발생한다는 점에 주의하기 바란다.
Geometry의 Spatial Relations
GIS에서 Geometry는 단순하게 Point, Polyline, Polygon으로 구분되며, 몇가지 제약사항을 갖게 되는데 이러한 Geometry를 Simple Feature라고 한다. 이러한 Simple Feature 둘 이상이 공간상에서 관계를 갖게 되는데, Spatial Relation이라고 한다. Spatial Relation의 종류는 모두 8가지 이다.
1. Equals – 두개의 Geometry가 동일한가?
2. Disjoint – 두개의 Geometry가 서로 격리되었는가?
3. Intersects – 두개의 Geometry가 교차하는가?
4. Touches – 두개의 Geometry가 접촉하는가?
5. Crosses – 두개의 Geometry가 횡단하는가?
6. Within – 하나의 Geometry가 다른 하나에 포함되는가?
7. Contains – 하나의 Geometry가 다른 하나를 포함하는가?
8. Overlaps – – 두개의 Geometry가 부분적으로 겹치는가?
Geometry 체계 이해
Geometry library는 Point, Multipoint, Polyline, Polygon, MultiPatch와 같은 벡터 표현을 제공하는 핵심 라이브러리이다.
지오메트리는 피쳐와 그래픽의 shape을 정의하기 위해 지오데이터베이스, 그래픽 엘리먼트 시스템에 사용된다. 또한 편집기를 위한 작업 및 피쳐를 심볼화하고 정의하기 위한 지도 심볼 시스템에도 사용된다. 공간좌표체계(Spatial reference)는 이들 지오메트리와 밀접한 관계가 있으며 ArcObjects의 거의 모든 시스템은 지오메트리와 공간참조를 어떤 방식으로든 사용하고 있다. 즉, 지오메트리와 공간좌표체계는 GIS 엔진의 핵심 기능이라 할 수 있겠다.
▣ Introduction to geometry objects
Points, Multipoints, Polylines, Polygons, and MultiPatches과 같은 최상위 수준의 지오메트리 객체 외에, Paths, Rings, Segments, TriangleStrips, TriangleFans, Triangles은 Polyline, Polygon, MultiPatch를 생성하기 위한 빌딩 블록의 역할을 한다.
Polyline은 Path를, Polygon은 Ring, Multipatch는 TriangleStrip, TriangleFan, Triangle, , Rring으로 구성된다.
Path와 Ring은 세그먼트에 의핸 연결된 버텍스들로 구성된다.
Segment는 버텍스를 연결한 Curve의 형태를 정의하는 parametric 기능이다. Segment 유형에는 CircularArc, Line, EllipticArc, BezierCurve가 있다.
지오메트리에서 각 버텍스의 X, Y 좌표 외에 M (measure), Z (elevation), ID (foreign key) 속성을 정의할 수 있다.
Envelope은 지오메트리의 공간범위를 정의하며, Geometrybag은 지오메트리 컬렉션에 대한 처리를 제공한다.
Geometry 객체는 개발자에 의해 확장되지 않는다.
▷ Point
Point 객체는 2차원 포인트이며, M, Z, ID 속성을 옵션으로 제공한다.
▷ Multipoint
Multipoint 객체는 옵션으로 M, Z, ID 속성을 가진 순차적인 포인트의 컬렉션으로 구성된다. Multipoint 객체에 대한 IPointCollection 인터페이스는 포인트 요소에 대한 직접 접근을 제공한다. 이는 Polyline과 Polygon의 버텍스에 접근하는 인터페이스와는 다른 방법으로 제공되며, 이 경우에 포인트의 복사본을 활용한다.
▷ Polyline
Polyline 객체는 옵션으로 M, Z, ID 속성을 가진 순차적인 Path의 컬렉션으로 구성된다. Polyline에 대한 IPointCollection 인터페이스는 버텍스의 복사본을 처리한다. Path에 대한 직접 접근을 하려면 IGeometryCollection 인터페이스를, Segment에 대한 직접 접근을 위해서 ISegmentCollection을 사용하면 된다. IPointCollection과 ISegmentCollection 인터페이스는 Path 객체에 대해서도 사용가능하며, 같은 방법으로 사용한다.
▷ Polygon
Polygon 객체는 Ring들의 포함관계에 의한 순차적인 Ring의 컬렉션으로 구성되며, Ring 역시 옵션으로 M, Z, ID 속성을 가지고 있다.
각 Ring은 Segment의 컬렉션으로 구성된다. Polygon과 Ring 에 대한 IPointCollection 인터페이스는 버텍스의 복사본을 처리한다. Segment와 Ring에 대한 직접 접근을 위해 IGeometryCollection과 ISegmentCollection 인터페이스를 사용하면 된다.
좌표계 Cheat Sheet
자주 이용하는 좌표계

1. 원본 데이터의 출처와 특징을 파악
● 도로명지도는 EPSG 5179(UTM-K)
● GPS 데이터는 EPSG 4326
● 지적도는 EPSG 5174일 가능성이 높음
2. 원점 좌표 정보를 확인
● .prj 파일 등의 좌표계 정보가 함께 있을 때
● 기준원점 경도 좌표에 소수자리가 있으면 (127.00289~~) 베셀타원체를 쓰는 한국측지계 즉, EPSG 5174(중부) 또는 5176(동부)
● 기준원점 경도 좌표가 127.5도는 EPSG 5179 (UTM-K)
● 기준원점 경도 좌표가 128인 경우는 Katech 좌표계
3. 가상 이동 좌표를 확인 (위의 정보가 전혀 없이 표시되는 좌표만 알 수 있을 때)
● 가상 이동 좌표 기준원점의 경위도 좌표를 평면직각좌표 즉, Meter 단위로 환산하여 표시하기 위한 좌표. 음수가 나오지 않도록 일정값을 + 시킴
● 정수 자리가 127, 38 등으로 표시되는 것은 EPSG 4326 경위도 좌표계
● 남북 방향(Y) 좌표가 50만인 경우는 Bessel 또는 2000년대 GRS80 좌표계 중에 하나로서 5174 또는 5181을 정의해봐서 배경지도와 위치 확인 (서울의 경우 X축 약 20만, Y축 약 45만 전후)
● Y축이 60만인 경우는 최신 TM 좌표계로 5186(중부) 또는 5187(동부)
● 중부는 경기, 충남, 전북, 전남 위주 지역이고, 동부는 강원, 경북, 경남, 부산시 등의 대한민국 동쪽 지역에 속하는 지역
● 만약 5186(중부)으로 정의했는데 지도가 배경지도와 비교하여 동서축으로 떨어져 보인다면 5187(동부)임
● 좌표가 X, Y축 모두 7자리인 경우는 5179
● 5174 등의 예전 한국측지계는 EPSG 5174로 바로 정의하면 약 300여 미터 비스듬하게 떨어져서 보이게 됨. 맨 아래쪽 내용 참조.
* QGIS 3.10.3 이후 버전 등 Proj6을 적용하는 SW에서는 커스텀 좌표계로 TOWGS84 파라미터를 붙여주지 않아도 제 위치에 나옴
● 국가교통DB로 불리는 KOTI의 데이터는 KOTI-KATEC(H)이라는 비공식 좌표계로 제공됨 (요청시 UTM-K로 요청하는 것을 권장). 이 경우 역시 맨 아래쪽의 “QGIS에서 타원체 변환 계수를 포함시켜 좌표계 설정하는 방법”을 참조하여 커스텀 좌표계를 정의해서 써야 함
부연 설명
위의 내용만으로 해결되면 다행이겠으나 안된다면 더 원론적이고 상세한 내용을 찾아봐야 한다.
좌표계
완벽한 평면이 아닌 지구의 모양을 정의하고, 그 상태에서 특정 지점의 위치를 좌표로 표현하기 위한 방법
경위도 좌표계
구 형태인 지구를 측정하기 위해 60진법으로 경도와 위도로 위치를 표현하는 방법.
DMS는 도분초로서 각각 60진법을 적용하는 방식이고,
Decimal Degree는 도만 60진법이고 분과초는 10진법으로 변환하여 소수자리로 표현하는 방법. 공공데이터의 CSV에 좌표가 들어있는데 36.123456, 127.123456 등으로 되어 있으면 Decimal Degree이고 QGIS등에서 좌표로 공간데이터화할 때 가장 기본으로 제공되는 좌표계임.
(물론 DMS나 직각평면좌표계도 설정만 맞춰주면 됨)
EPSG라는 산업표준 좌표계 코드는 4326이고, GPS 기본 좌표계이기도 함.
DMS를 Decimal Degree로 변환
DMS로 데이터가 오면 분/60, 초/3600한 다음 모두 더해주면 Decimal Degree가 됨. 엑셀이나 파이썬 등에서 처리하면 됨
지오코딩 이란?
고유한 명칭(주소나 산, 호수)을 통해 지도상의 위도와 경도의 좌표 값을 얻는 것이다.
반대로 위도와 경도로 고유명칭을 얻는 것을 리버스(Reverse) 지오코딩이라고 한다.
출처
- https://yganalyst.github.io/spatial_analysis/spatial_analysis_1/
- http://www.gisdeveloper.co.kr/?p=145
- http://www.onspatial.com/2010/02/geometry-%EC%B2%B4%EA%B3%84-%EC%9D%B4%ED%95%B4.html
- https://thlee33.medium.com/%ED%97%B7%EA%B0%88%EB%A6%AC%EB%8A%94-%EC%A2%8C%ED%91%9C%EA%B3%84-2-2021-11-35d0dd608700
- https://thlee33.medium.com/%ED%97%B7%EA%B0%88%EB%A6%AC%EB%8A%94-%EC%A2%8C%ED%91%9C%EA%B3%84-155b4ed1aae
- http://aispiration.com/spatial/geo-spatial-r.html
- https://choidr.tistory.com/entry/%EC%A7%80%EC%98%A4%EC%BD%94%EB%94%A9-nodejs
- https://www.cjtgis.go.kr/introduce/introduce01.do
공감 또는 따뜻한 댓글은 포스팅 작성에 큰 힘이 됩니다:)
-------------------------------------
이상으로 [GIS] Geometry, 경위도 좌표계(EPSG:4326) 포스팅을 마치겠습니다.
감사합니다.