QGIS3에서 한국 좌표계 보정하기

어제에 이어, 오늘도 QGIS 해킹 글이다. 이 작업도 손형* 님의 빅픽쳐에 빠져(?) 다른 몇 분과 올 5 ~ 6월에 한 작업이다.

GIS 세계에는 수많은 좌표계를 가지고 있는데 (위도/경도만 알면 되지 뭔 좌표계가 많이 필요한지는 글 주제를 한참 벗어나므로 생략) QGIS도 이 좌표계들을 기본 탑재하고 있다. 문제는 QGIS에 들어있는 한국 관련 좌표계가 넘 오래 된 국가 지적 자료를 기반으로 하다 보니 오차가 있어 보정이 필요하다. 그간 QGIS 2를 쓰던 많은 한국인들은 나름대로 보정하여 쓰고 있었는데 ( http://osgeo.kr/146 참조), 문제는 이 방법이 QGIS 3에서는 안 통한다는 점이다.

올 6월 말에 QGIS 3에서 통하는 좌표계 보정 결과를 공개하였다 ( http://www.osgeo.kr/252 ) . 다만 그 공개글에서는 무엇을 어떻게 고쳤는지에 대한 내용이 없어, 여기서 다루고자 한다.

QGIS 3 좌표계 정보는 $QGIS_HOME/apps/qgis/resources/srs.db 파일에 있는데, 이 파일이 SQLite 데이터베이스 파일이다 (SQLite 만든 사람은 복 받을 거여~). 좌표 정보가 테이블로 되어 있고, SQL로 조회 / 수정 / 추가할 수 있다는 뜻. 그러면 이 srs.db 안의 데이터베이스에 어떻게 SQL을 날릴까?

연장은 중요하다. 연장이 편하면 일도 잘 된다. DB Browser for SQLite를 못 만났으면 엄청나게 삽질했을 것이다. 해당 프로그램을 실행시키고 Ctrl + O 를 누른 후 $QGIS_HOME/apps/qgis/resources/srs.db 를 읽으면 아래 그림과 같이 데이터페이스 구조가 주루룩 나온다. (테이블은 물론, 인덱스에 뷰까지 있다!)

위 그림을 보면 ‘SQL실행’이라는 탭이 보이는데, 이 탭에서 SQL을 날릴 수 있다. 한국 관련 좌표계는  다음 SQL로 실행하면 조회할 수 있다.

select * from tbl_srs
where description like '%Korea%'
  and auth_name = 'EPSG'
  and ellipsoid_acronym = 'bessel'

즉 srs.db 데이터베이스에서 좌표계 정보는 tbl_srs란 테이블에 있다. 이 테이블의 PK 컬럼명은 srs_id 컬럼이다.  elipsoid, bessel, EPSG가 무엇을 뜻하는지는 GIS 세계에 대한 한 발 더 나아가는 이해를 필요로 하므로 본 글에서는 생략.  주요하게 update해야 할 컬럼은 parameters 컬럼이다.

모든 설명이 끝났다. 보정은 이 tbl_srs 테이블의 parameters 컬럼을 수정하는 update SQL를 날리면 된다.

광고

답글 남기기

아래 항목을 채우거나 오른쪽 아이콘 중 하나를 클릭하여 로그 인 하세요:

WordPress.com 로고

WordPress.com의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

Google photo

Google의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

Twitter 사진

Twitter의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

Facebook 사진

Facebook의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

%s에 연결하는 중