본문 바로가기
Database/PostgreSQL

[PostGIS] 두 지점 간 거리 계산하기

by Awesome-SH 2020. 7. 30.

 

두 지점 간 거리 계산하기는

PostgreSQL과 Extension인 PostGIS 가 셋팅되어 있어야 합니다.

 

셋팅 방법은 이전 포스팅을 참고해주세요

 

2019/10/31 - [Database/PostgreSQL] - PostgreSQL 확장프로그램 PostGIS 적용하기

 

PostgreSQL 확장프로그램 PostGIS 적용하기

이 포스팅은 PostgreSQL과 PostGIS가 설치되어 있다는 가정하에 진행됩니다. PostgreSQL과 PostGIS를 먼저 설치해해 주세요. PostgreSQL 다운로드 (https://www.postgresql.org/download/) 모두 설치하셨다면 pg..

sihus.tistory.com

 

기본적으로 거리계산은 ST_Distance를 사용하지만

버전이 올라가면서 더 정확한 계산을 해주는 녀석이 등장했습니다.

ST_DistanceSphere 라는 함수 입니다.

 

ST_DistanceSphere 함수는

두 개의 Lon, Lat (= 두 포인트) 사이의 최소거리를 반환합니다.

반환 타입은 미터(Meters)입니다.

 

다음은 ST_DistanceSphere 사용예제에 대해 알아봅니다.

SELECT 
	ST_DistanceSphere(
    	ST_GeomFromText('POINT(129.014525 35.13542)', 4326),
        ST_GeomFromText('POINT(129.014525 36.24553)', 4326)
    );

위 쿼리의 결과는 123438.76996421 Meter (Double Precision) 입니다.

 

KM가 필요한 경우는 결과 값에 1000을 나누어 주면 되겠죠?

SELECT 
	ST_DistanceSphere(
    	ST_GeomFromText('POINT(129.014525 35.13542)', 4326),
        ST_GeomFromText('POINT(129.014525 36.24553)', 4326)
    ) / 1000 AS KM;

 

궁금점이 생길 타이밍입니다.

ST_DistanceSphere(geom, geom) 함수는 알겠는데

내부의 ST_GeomFromText() 함수로 감싸져 있는 것을 볼 수 있는데요

 

PostgreSQL에서 제공하는 Geometry 컬럼타입때문입니다.

PostgreSQL에 컬럼 타입에 Geometry 즉, 기하학 타입의 데이터를 담을 수 있는데요

WKT라는 Well Known Text의 약자인 WKT 형식을 기본으로 하고 있습니다.

 

예를들면

 

점(Point) - POINT(Lon Lat)

라인(LineString) - LINESTRING(Lon Lat, Lon Lat)

다각형(Polygon) - POLYGON((Lon Lat), (Lon, Lat), …)

 

이런식으로 표현하는 형식입니다.

 

이렇게 WKT문자열(String)을 Geometry 타입으로 변환해주는 녀석이

바로 ST_GeomFromText() 함수 입니다.

함수명을 직역해도 같은 뜻입니다. (텍스트를 Geometry로 만들겠다)

 

좌표는 알겠는데 뒤에 4326 은 무엇인가요?

뒤 숫자의 의미는 좌표체계입니다.

EPSG:4326, EPSG:3857 등 많이 사용하는 좌표체계들이 있습니다.

우리나라는 보통 도분초와 EPSG4326을 많이 사용합니다.

EPSG3857은 OpenLayers나 Leaflet 등 웹 GIS 라이브러리에서 사용하기도 합니다.

 

Geometry 컬럼은 테이블을 처음 생성할 때 SRID라는 것을 지정합니다.이 Geometry 컬럼에서는 이런 좌표체계를 쓰겠다 명시하는 것이죠

 

 

이것으로 두 지점간 거리를 구하는 방법에 대해 알아 보았습니다.

 

'Database > PostgreSQL' 카테고리의 다른 글

[PostgreSQL] 확장프로그램 PostGIS 적용하기  (0) 2019.10.31

댓글