728x90
반응형
이런 식으로 되어있는 도분초 위경도 좌표를 공간정보로 변환하려고 한다.
우선 'split_part' 함수를 이용하여 시분초를 계산해준다.
SPLIT_PART() 함수
SPLIT_PART(문자열, 자를 문자, 위치)
예를 들어 split_part('127-37-30', '-', 1) 하면 127이 나온다.
split_part('127-37-30', '-', 2)를 하면 37
split_part(lon, '-', 1)
시분초 계산을 해주면 아래와 같이 만들 수 있다.
(시 + 분/60 + 초/3600)
ex) '127-37-30' = 127 + 37/60 + 30/3600
cast(split_part(lon, '-', 1) as numeric) + cast(split_part(lon, '-', 2) as numeric) / 60 +
cast(split_part(lon, '-', 3) as numeric) / 3600
더하기를 해줘야하기 때문에 numeric로 형변환을 해주었다.
ST_MAKEPOINT() 함수
st_makepoint()는 좌표를 만들어주는 함수이다
st_makepoint(lon, lat) 이렇게 넣어주면 좌표가 만들어진다.
ST_MAKEPOINT(cast(split_part(lon, '-', 1) as numeric) + cast(split_part(lon, '-', 2) as numeric) / 60 +
cast(split_part(lon, '-', 3) as numeric) / 3600,cast(split_part(lat, '-', 1) as numeric) + cast(split_part(lat, '-', 2) as numeric) / 60 +
cast(split_part(lat, '-', 3) as numeric) / 3600)
ST_SETSRID() 함수
ST_SETSRID() 함수는 좌표계를 설정하는 함수이다.
도분초는 ESPG:4326 좌표계를 사용하기 때문에
ST_SETSRID(좌표, 4326) 이렇게 넣어주면 된다.
ST_SETSRID(ST_MAKEPOINT(cast(split_part(lon, '-', 1) as numeric) + cast(split_part(lon, '-', 2) as numeric) / 60 +
cast(split_part(lon, '-', 3) as numeric) / 3600,cast(split_part(lat, '-', 1) as numeric) + cast(split_part(lat, '-', 2) as numeric) / 60 +
cast(split_part(lat, '-', 3) as numeric) / 3600), 4326)
ST_TRANSFORM() 함수
ST_TRANSFORM() 는 좌표계를 변환해주는 함수이다.
우리 시스템에서는 ESPG:3857 좌표계를 사용하고 있어서 변환을 해주었다.
ST_TRANSFORM(좌표, 3857) 이렇게 사용하면 된다.
(최종)
st_transform(ST_SETSRID(ST_MAKEPOINT(cast(split_part(lon, '-', 1) as numeric) + cast(split_part(lon, '-', 2) as numeric) / 60 +
cast(split_part(lon, '-', 3) as numeric) / 3600,cast(split_part(lat, '-', 1) as numeric) + cast(split_part(lat, '-', 2) as numeric) / 60 +
cast(split_part(lat, '-', 3) as numeric) / 3600), 4326), 3857)
그럼 이렇게 좌표가 뙇 찍히게 된다 ㅎㅎ
728x90
반응형
'DB > PostgreSQL' 카테고리의 다른 글
PostgreSQL 다른 테이블 참조하여 update (0) | 2023.09.18 |
---|---|
[PostgreSQL] sequence(시퀀스) 사용법 (생성, 삭제, 초기화, 현재값, 다음값, insert, create) (0) | 2023.02.04 |
[PostgreSQL] select 결과 insert (0) | 2023.02.01 |
[PostgreSQL] 컬럼 정보 조회 / 컬럼 코멘트 조회 (0) | 2023.01.30 |
PostgreSQL | 테이블/컬럼 정보조회 SQL (0) | 2021.09.30 |