회사에서 사용하고 있는 python shapely 라이브러리 및 좌표계의 기초 정보(
?)에 대해서 정리해보고자 한다!
해당 토픽을 블로그 주제로 정했던건 shapely 라이브러리가 제공하는 intersects, contains 메서드들이 어떻게 좌표를 판단하는지 더 깊이있는 내용을 공부하고자 의도했었다 ..ㅠㅠ 하지만 기하학적인 내용들이고 하다보니 짧은시간안에 정보를 찾고 이해하기에는 무리가 있었다 😵💫😵💫 다음번에 다시 도전해보려고 한다...!
지리좌표계 (GCS, Geographic coordinate system)
- 3차원의 지구 모델에서 위도와 경도를 이용해 좌표를 나타내는 것
- 경도와 위도는 지구 중심에서 지표면 상에 지점까지 측정된 각을 뜻하며 각도(degrees)로 표시
- 예시) 가산디지털단지역 5번출구 앞 근방 - 37.479138, 126.881955
종류
WGS84
- WGS84 타원체를 사용하는 좌표계로 미국에서 군사용으로 GPS시스템을 개발하면서 만들어졌으며, 현재 가장 널리 사용되는 좌표계
투영좌표계 (PCS, Projected coordinate system)
- 3차원의 타원체를 2차원의 평면으로 옮기는 것을 투영이라고 하는데, GCS에 투영 방법이 추가된 좌표 시스템을 PCS라고 한다
- 우리가 평상시에 PC, 모바일에서 보는 지도는 2차원의 평면지도이다
종류
TM
- BESSEL 타원체 사용
UTM
- WSG84 타원체 사용
- 전세계를 일정한 크기로 분할하여 특정위치에 맞도록 투영하여 사용
UTM-K
- 한반도 전역을 커버하는 단일평면좌표계
- 대부분의 한국에서 생성된 데이터들이 UTM-K 계열로 되어있지만 모두 같은 회전타원체를 사용하고 있는건 아니다
- 같은 UTM-K을 사용해도 네이버에서는 GRS80 타원체를, 도로명 지도에서는 BESSEL 타원체를 사용하고 있다
shapely 라이브러리
Shapely는 python에서 공간 데이터를 조작하고 분석하는데 사용되는 라이브러리
내부적으로 GEOS를 사용하여 복잡한 공간 연산과 분석을 수행하고 있다고 한다
GEOS는 JTS(자바로 작성된 지리공간 라이브러리) 기능들을 C++로 포팅한 오픈소스 라이브러리
객체 종류
Point
Polygon
LineString
제공 함수
buffer
- 특정 Point 객체 주위에 일정 거리만큼 영역을 추가하여 새로운 다각형(Polygon)을 생성
intersects
contains
- 객체가 다른 객체를 완전히 포함하고 있는지 판별
within
- 객체가 다른 객체 내부에 완전히 포함되어 있는지 판단
- contains 메서드와 포함 관계를 반대로 판단
- A.within(B)가 참이면 B.contains(A) 역시 참이다
hausdorff_distance
- 두 도형사이의 유사성이나 차이를 측정하는 지표로, 이 거리값이 작을 수록 두 도형은 서로 가깝거나 유사함을 의미
distance
touches
- 두 객체사이에 공유되는 유일한 점이 두 객체의 경계에 있는 경우 True 리턴
[참고자료]
https://www.fpn119.co.kr/135050
https://analogcode.tistory.com/34
https://gdsc-university-of-seoul.github.io/About-Coordinate-System/
https://shapely.readthedocs.io/en/stable/geometry.html