𝝅번째 알파카의 개발 낙서장

screen

OpenLayers를 여행하는 개발자를 위한 안내서 - 4. QGIS 체험하기

projects

GIS

시리즈 톺아보기

OpenLayers를 여행하는 개발자를 위한 안내서

OpenLayers를 여행하는 개발자를 위한 안내서
count

QGIS 🔗

이전에 대부분의 공간정보 데이터는 SHP를 기본으로 제공한다고 언급했었다. 그런데 문제는 이 SHP. 어떻게 여는지 모르겠다. GeoJSON이나 CSV 같은 텍스트 기반 데이터는 어찌됐든 열어서 검증을 해볼 수 있지만, SHP는 그게 안 된다는 말이다.

때문에 SHP를 열어서 조작할 수 있는 일종의 툴이 필요한데, 이미 여러 툴이 있으니 크게 문제되진 않는다. 가장 대표적인 툴은 두 가지가 있다.

  • ArcGIS: 강력한 퍼포먼스를 가진 상용 프로그램. 비싸다.
  • QGIS: ESRI에서 만든 오픈소스 프로그램. 무료지만, 대용량 처리 시 좀 버벅인다.

타일맵 제작이나 초대용량 데이터 처리가 아니라면, 대부분은 QGIS로 충분히 커버할 수 있다. 두 프로그램 모두 Python으로 개발되었으며, 덕분에 Python을 활용한 다양한 플러그인을 사용할 수 있다. 본인이 Python에 조예가 있다면, 직접 스크립트를 입력하여 복잡한 동작을 수행할 수도 있다. 하지만 QGIS로 이 정도 수준의 업무를 수행한다면, 개발자라기보단 데이터 관련 직무에 더 가깝다.

공간정보 데이터에 대한 충분한 이해 없이 OpenLayers를 다뤄봤자, 혼란만 가중된다. 때문에 OpenLayers에 대해 설명하기 이전에, QGIS를 통해 SHP를 다루는 방법을 먼저 다루고 넘어간다.



설치하기 🔗

QGIS는 공식 홈페이지에서 다운로드 받을 수 있다.



SHP 열어보기 🔗

QGIS를 실행하고, SHP를 드래그해보자. 정상적인 공간정보 파일이라면, 관련 데이터가 창에 표시된다.

image

위 데이터는 도로명주소에서 제공하는 세종시 건물 데이터다. 처음 해보는 사람도, 일단 뭔가 유효한 데이터가 출력됐다 정도는 인식할 수 있다.

건물은 면(Polygon) 형태를 띈다. 각 도형은 건물을 의미한다.



Open Street Map 띄워서 비교하기 🔗

데이터가 나왔다는 건 알겠는데, 저 건물이 실제로 어떤 위치에 있는지 확인하기 매우 어렵다. 즉, 위치를 비교할 수 있는 완전한 지도를 같이 띄워놓고 비교하는 것이 편하다.

QGIS는 Open Street Map(이하 OSM) 레이어를 기본으로 제공한다.

OSM이란, 전세계 지도 종사자들이 자율적으로 관리하는 세계지도다. 각국의 지도는 해당 국가의 개발자들이 기여하므로, 로컬라이징은 물론, 세계화도 잘 되어있어 당장 간편하게 쓰기 좋은 지도다. 단, 네이버나 카카오처럼 국내에 특화된 지도는 아니라서, 국내 한정 서비스에 적용하기는 다소 아쉽다.


물론 이건 어디까지나 서비스할 때 얘기고, 당장 데이터 놓고 위치 비교하기엔 이만한 게 없다.

좌측 사이드바에서 [XYZ Tiles - OpenStreetMap]을 더블 클릭하여 레이어에 추가하자.

레이어 순서에 따라 표시되는 우선순위가 달라지니, 가급적 OpenLayers를 제일 밑에 두도록 하자.

image

더욱 비교하기 쉬워졌다. 데이터를 보면 얼추 세종시의 지형에 맞게 데이터가 배치된 것을 확인할 수 있다.



데이터 확인하기 🔗

image

데이터를 클릭해서 정보를 확인할 수 있다. 상단 메뉴에서 [객체 식별 (Ctrl + Shift + I)] 버튼을 클릭하고 객체를 누르면 정보를 확인할 수 있다.


image

레이어를 오른쪽 마우스로 클릭하면 사용 가능한 메뉴를 볼 수 있다. [속성 테이블 열기]를 클릭하면 모든 데이터의 속성을 볼 수 있다. DB의 형태와 매우 유사하다.

image

데이터를 찾거나, 선택한 데이터를 지도에 표시하는 것은 물론, 데이터의 수정, 삭제 또한 가능하다.



좌표계 설정하기 🔗

QGIS는 각 레이어의 좌표계를 확인하고 주 좌표계로 변환하여 QGIS에 표시한다.

예를 들어, 아래와 같다고 해보자.

  • 주 좌표계: EPSG:4326
  • A 레이어 좌표계: EPSG:5179
  • B 레이어 좌표계: EPSG:3857

주 좌표계가 EPSG:4326이므로, A, B 좌표를 EPSG:4326으로 변환하여 QGIS에 표시한다. 최종적으로 사용자는 EPSG:4326으로 표현된 지도를 볼 수 있다.

image

주 좌표계는 QGIS 우측 하단에서 설정할 수 있다. 원하는 EPSG 코드를 찾아 지정하면, 해당 좌표계로 데이터가 자동 변환되어 표시된다.


image

각 레이어의 좌표계는 해당 메뉴를 통해 변환할 수 있다. 반드시 해당 레이어에 맞는 좌표계를 지정해야한다.

예를 들어, EPSG:5181 좌표계로 정의된 레이어를 EPSG:4326으로 잘 못 지정하면 전혀 엉뚱한 위치로 계산된다.

쉽게 설명하자면, 번역기에 이탈리아어를 영어로 인식하고 번역하는 것과 같은 이치다. 영어가 아닌 것을 영어라고 번역하니 전혀 의미없는 단어가 번역되기 때문. 마찬가지로, 레이어 좌표계를 잘 못 지정하면 전혀 엉뚱한 위치로 변환되므로 주의해야한다. 만약 이 현상이 나타났다면, 레이어의 좌표계를 다시 확인하기 바란다.



레이어 저장하기 🔗

QGIS에서 데이터의 내용이나, 좌표계를 변경했을 경우, 이 데이터를 SHP 혹은 그에 준하는 공간정보 데이터로 출력해서 사용할 수 있다.

image

[내보내기 - 객체를 다른 이름으로 저장]을 클릭하여 저장 메뉴를 호출한다.

image

원하는 데이터 형식과 설정을 입력하면, 데이터를 저장할 수 있다.