알림!!
Proj6.0 이상을 지원하는 QGIS3.10.3 버전부터는 아래 설정이 필요없습니다.
모두 자동으로 국토지리정보원 고시값을 가져와 타원체 변환을 수행해 줍니다. 아래는 그 이전 버전에 해당하는 내용입니다.
자세한 사항은 https://endofcap.tistory.com/1856 참고.
주의 사항 : 이 방법을 실행하기 전에 꼭 원본 파일을 백업하시기 바랍니다. 그리고 이 방법을 수행함으로써 발생하는 어떠한 기술적, 재산적, 사업적 손해 등에 대해 저는 책임지지 않으며, 본 방식에 대한 어떠한 보증도 하지 않습니다.
안녕하세요?
1. 문제점들
새로운 QGIS를 설치하면 대부분의 컴퓨터에서는 우리나라에서 사용하는 모든 좌표계를 자동적으로 물고 들어 옵니다. 가끔, 기존 프로그램과의 버전 문제 등으로 인하여 현재 우리나라에서 사용하고 있는 모든 좌표계를 물고 들어오지 못한 경우가 있습니다.
<QGIS에 현행 한국 좌표계가 등록되지 않았을 때의 CRS 정보창의 모습>
QGIS CRS(Coordinate Reference System) 정보창의 Filter에 'Korea'로 입력을 해서 그 결과가 위와 같이 6개만 나올 경우는 정상적으로 한국의 좌표계가 등록되지 않은 경우입니다. 이런 경우에는 OSGeo 한국어 지부에서 알려 준 "QGIS에서 EPSG 공식 한국 좌표계 등록하여 사용하는 법 (www.osgeo.kr/44 )"을 따라하면 거의 대부분 EPSG에 등록된 한국 좌표계를 QGIS에 등록하는 문제는 해결이 됩니다. 이 방법을 사용하면 총 28개의 한국 관련 좌표계가 나타납니다.
<정상적으로 등록되었을 경우의 QGIS CRS 정보창의 모습>
하지만, 이 경우에도 옛날 Bessel1841과 WGS84 사이의 타원체 변환 계수가 등록된 EPSG 정보에서 빠져 있어 정확한 타원체 변환이 이뤄지지 못하는 단점이 있습니다. 이는 윗 그림의 아래 부분에 표시된 Proj4 문법의 좌표계 정보에 +towgs84 관련 정보가 없음을 통해 이미 추정이 가능한 부분입니다. (왜 우리나라 좌표계 EPSG 코드에 타원체 변환 계수가 안 들어가게 되었는지 혹은 어떤 타원체 변환 계수를 사용하는 게 좋은지에 대해서는 https://groups.google.com/forum/#!topic/osgeo-kr/0oMKjzyLPW4 의 논의를 참조하시기 바랍니다. )
이에 따라 QGIS에서 과거 Bessel1841을 준거 타원체로 사용한 지도를 타원체 변환을 하여 저장하거나 혹은 'On-the-fly' 좌표 변환을 통해 현행 GRS80 준거 타원체의 지도와 함께 섞어 쓰면 약 300m 가량의 이격을 보이게 됩니다. 타원체 변환이 없는 경우에는 이런 문제가 발생하지 않습니다. 이 문제는 타원체 변환이 포함된 좌표계 변환에서 발생하는 것입니다.(정확한 타원체 변환 계수값을 입력해 주지 않아서입니다.) 최근 많은 한국의 공간정보가 과거 Bessel1841 기준에서 현행 GRS80 기준으로 전환되었다고는 하나, 아직도 많은 한국의 공간정보가 과거 Bessel1841을 기준으로 제작된 것이기에 앞으로도 이런 문제는 상당히 자주 발생할 소지가 있어 보입니다.
<EPSG:5174(Bessel1841, 중부 원점) 자료와 EPSG:5181(GRS80, 중부원점)의 자료를 중첩했을 때 나타나는 300m 가량의 이격>
위 그림은 EPSG:5174로 생산된 서울시의 행정동 경계와 EPSG:5181로 제작된 포털 다음맵을 TMS-for-Korea 플러그인을 이용하여 중첩한 화면입니다. 위 화면에서 보는 바와 같이 두 지도 간에 약 300m 가량의 이격이 발생하고 있습니다. 행정경계부를 보시면 무슨 의미인지 이해가 되실 겁니다. 역시 EPSG:5174에 타원체 변환과 관련된 정확한 계수가 포함되어 있지 않아 발생하는 현상입니다. 현재 QGIS의 SRS.db에 등록된 우리나라의 Bessel1841 기준 좌표계는 모두 타원체 변환 계수를 포함하고 있지 않습니다.
<+towgs84 관련 정보가 포함되어 있지 않은 EPSG 정보>
2. 해결책들
이처럼 타원체 변환 계수를 포함하지 않는 좌표계에 좌표계 변환 계수를 설정시켜 활용하는 방법은 크게 두 가지가 있습니다. 첫째는, QGIS의 Custorm CRS 기능을 이용하여 기존의 Proj4 정보에 +towgs84 정보만을 추가하여 자신만의 좌표계를 만드는 방법입니다. 두번째는, QGIS 자체의 CRS 정보를 직접 수정하여 기존 정보를 오버라이딩(Overriding) 하도록 만드는 방법입니다. 아래에서 이 두 가지 방법에 대해 설명 드리겠습니다.
2.1 Custom CRS를 이용하는 법
QGIS에서는 사용자 정의 CRS를 만드는 방법을 제공합니다. 메뉴의 Settings -> Custom CRS 기능을 이용하여 만들 수 있습니다. 우리가 하고자 하는 것은 기존의 Bessel1841 기준의 EPSG 정보에 +towgs84 관련 변수만 추가하는 것입니다.
하는 방법은 다음과 같습니다. 자신이 +towgs84(타원체 변환 계수)를 추가하고자 하는 좌표계 Proj4 정보를 http://www.osgeo.kr/17 에서 찾은 뒤 복사하여 아래 그림과 같이 새로운 자신만의 좌표계를 만드는 것입니다. 아래 그림에서는 EPSG:5174에 타원체 변환 계수를 추가한 좌표계를 5174WithWGSPara라는 이름으로 만든 모습입니다.
<Custom CRS를 만드는 화면>
이후 EPSG:5174에 해당하는 지도를 불러올 때 좌표계를 바로 자신이 생성한 좌표계로 지정하여 불러오면 타원체 변환이 정상적으로 작동하게 됩니다. 자신이 새로 만든 좌표계는 사용자 폴더의 .qgis2 라는 폴더 밑에 있는 qgis.db에 저장됩니다. 따라서 다른 사람에게 이 qgis.db를 줘서 함께 사용할 수도 있습니다. 아예 아래처럼 Custom CRS를 한 벌 미리 만들어서 사용하는 것도 한 방법이겠지요.
<Bessel1841 기준의 주요 좌표계를 아예 미리 등록해서 사용하는 경우 화면>
<Custom CRS(사용자 좌표계)를 이용하여 다음맵과 중첩한 EPSG:5174 지도 화면>
이렇게 사용자 좌표계를 지정한 다음에 Bessel1841 기준의 지도를 불러오면서 자신이 만든 사용자 좌표계를 좌표계로 지정해 주면 됩니다. 그러면, 위 그림에서 보는 바와 같이 아까와 달리 거의 이격이 없어짐을 확인하실 수 있습니다.
아래 파일은 제가 Bessel1841을 준거 타원체로 사용하는 주요 좌표계를 Custom CRS에 추가하여 만든 qgis.db 파일입니다. 이를 한 번 사용자 폴더의 .qgis2 폴더 밑에 넣으신 뒤 테스트해 보시기 바랍니다.
2.2 QGIS 자체의 CRS 정보를 직접 수정하여 기존 정보를 오버라이딩(Overriding) 하는 방법
사실 이 방법은 그닥 권장해 드리고 싶은 방법은 아닙니다만 그래도 혹시 필요할 경우가 있지 않을까 하여 공유해 드립니다.
이 방법은 QGIS의 좌표계 DB 부분을 직접 수정하여 사용하는 방식입니다. 따라서 새로운 버젼을 업그레이드하는 경우 기존 세팅이 사라지게 되는 단점이 있으며, 다른 주변의 사용자들이 모두 이 방법을 사용하지 않는 한 오히려 혼란을 증가시킬 수도 있습니다. 하지만, 지도의 정확한 EPSG 코드와 함께 사용할 수 있다는 장점도 있습니다. 선택은 여러분이 하시면 될 것 같습니다. (개인이나 부서내처럼 서로 의사소통이 빈번한 곳에서 사용하면 편할 것 같기는 합니다.)
이 방법은 다음과 같은 순서로 하시면 됩니다.
- 우선, 아래에 첨부된 srs.db를 아래 OS에 맞춰 해당 폴더에 직접 덮어 씁니다. 이 srs.db는 QGIS에서 배포되는 srs.db 정보를 직접 수정해서 타원체 변환 계수를 추가한 것입니다.
MS-Windows : QGIS 설치 폴더(예, C:\Program Files\Quantum GIS \ ) 밑에 있는 apps\qgis\resources\ 에 위 파일을 덮어 씁니다.
Mac OSX : /Applications/QGIS.app/Contents/Resources/resources/ 에 위 파일을 덮어 씁니다.
Linux(Ubuntu 12.04 기준) : /usr/share/qgis/resources/ 에 위 파일을 덮어 씁니다.
- 다음으로 아래에 첨부된 epsg 파일을 아래 OS에 맞춰 해당 폴더에 직접 덮어 씁니다. 이 epsg 파일 또한 역시 직접 수정하여 타원체 변환 계수를 추가한 것입니다.
MS-Windows : QGIS 설치 폴더(예, C:\Program Files\Quantum GIS \ ) 밑에 있는 share\proj\ 에 위 파일을 덮어 씁니다.
Mac OSX : /Library/Frameworks/PROJ.framework/Versions/Current/Resources/proj/ 에 위 파일을 덮어 씁니다.
Linux(Ubuntu 12.04 기준) : /usr/share/proj 에 위 파일을 덮어 씁니다.
- 마지막으로 gdal 폴더에 들어가셔서 pcs.csv 파일을 제거하거나 혹은 백업을 위해서 그냥 다른 이름 pcs.csv.old 같은 것으로 바꿔야 합니다. OS별 GDAL 폴더는 아래와 같습니다.
MS-Windows : QGIS 설치 폴더(예, C:\Program Files\Quantum GIS \ ) 밑에 있는 share\gdal\ 이 해당 폴더입니다.
Mac OSX : /Library/Frameworks/GDAL.framework/Versions/Current/Resources/gdal/ 이 해당 폴더입니다.
Linux(Ubuntu 12.04 기준) : /usr/share/gdal/ 혹은 /usr/share/gdal/VERSIONS/ 이 해당 폴더입니다.
위와 같은 작업을 모두 해 주고서 QGIS의 CRS 정보창을 보면 아래 그림처럼 EPSG 정보에 아예 타원체 변환 계수값이 포함되어 표시됨을 발견하실 수 있을 것입니다.
이런 방식이 아닌 다른 방식으로 해결하신 분들이 있으면 역시나 함께 공유해 주셨으면 합니다. 또한 내용 중에 잘못된 내용이 있으면 지적해 주시기 바랍니다. 감사합니다.
작은 도움이나마 되셨기를..
2013년 9월 8일
신상희
'공간정보와 IT > Open Source GIS' 카테고리의 다른 글
FOSS4G Korea 2013 프로그램 안내 (0) | 2013.10.25 |
---|---|
FOSS4G 2013 Nottingham 참관 후기 (0) | 2013.09.30 |
The architecture of mobile traffic map service (0) | 2013.09.29 |
FOSS4G 2013 노팅엄 발표 자료 (0) | 2013.09.29 |
FOSS4G Korea 2013 발표자 모집합니다. (0) | 2013.09.16 |
QGIS에서 포인트 자료에 심볼 없이 속성값만 라벨링 하는 법 (0) | 2013.09.06 |
[발표자료]한국오픈소스GIS솔루션데이 발표 자료 (0) | 2013.09.04 |
제1회 한국오픈소스GIS솔루션데이 풍경 (0) | 2013.08.31 |
1st Open Source GIS Solution Day (0) | 2013.08.27 |
[책]오픈소스와 소프트웨어 산업, 상생의 경제학 (0) | 2013.08.17 |