Unless you are going to use your georeferenced map as a simple background image, the next natural step is to digitize elements from it. You have already done so in the exercises about creating vector data in Lesson: 새 벡터 데이터셋 생성 , when you digitized the school fields. In this lesson, you are going to digitize the forest stands’ borders that appear in the map as green lines but instead of doing it using an aerial image, you will use your georeferenced map.
이 강의의 목표: 디지타이즈 작업, 수종경계 디지타이즈, 그리고 디지타이즈된 수종경계에 목록 데이터 추가하는 데 도움이 되는 기술을 배우기.
QGIS에서 지난 강의 때 저장했던 map_digitizing.qgs 프로젝트를 여십시오.
종이 지도를 스캔해서 지리참조시키고 나면 그 이미지를 기준으로 삼아 직접 디지타이즈를 시작할 수 있습니다. 예를 들어 여러분이 디지타이즈할 이미지가 항공사진이라면 거의 그런 방법을 사용하게 되겠죠.
If what you are using to digitize is a good map, as it is in our case, it is likely that the information is clearly displayed as lines with different colors for each type of element. Those colors can be relatively easy extracted as individual images using an image processing software like GIMP. Such separate images can be used to assist the digitizing, as you will see below.
첫 번째 단계는 GIMP를 통해 수종경계만 담고 있는 이미지를 얻는 일입니다. 여기서 수종경계란 스캔된 맵 원본에서 볼 수 있는 녹색의 선들을 말합니다.
GIMP를 실행하십시오. (아직 설치하지 않았다면 인터넷에서 다운로드하든지 강사에게 문의하십시오.)
File ‣ Open 메뉴를 클릭해서 exercise_data/forestry 폴더에 있는 rautjarvi_map.tif 파일을 불러오십시오. 수종경계는 녹색 선으로 표출되어 있습니다. (각 수종경계의 번호도 각 다각형 내부에 녹색으로 쓰여 있습니다.)
이제 이미지에서 수종경계의 경계선을 표시하는 픽셀(녹색 픽셀)을 선택할 수 있습니다.
메뉴에서 Select ‣ By color 도구를 실행하십시오.
도구가 활성화되면, 수종경계 경계선을 구성하고 있는 픽셀들을 구분할 수 있을 정도로 이미지를 확대(Ctrl + 마우스 휠)하십시오. 다음 왼쪽 그림을 참조하세요.
도구가 픽셀의 색상값을 수집할 수 있도록 선 가운데에 마우스 커서를 클릭&드래그하십시오.
마우스에서 손을 떼고 몇 초 정도 기다리십시오. 도구가 수집한 색상과 일치하는 픽셀들이 이미지 전체에 걸쳐 선택될 것입니다.
줌아웃해서 이미지 전체에서 녹색 픽셀들이 어떻게 선택되었는지 살펴보십시오.
결과물이 마음에 들지 않는다면, 클릭&드래그 작업을 다시 해보십시오.
여러분이 선택한 픽셀들은 다음 오른쪽 이미지와 비슷하게 보여야 합니다.
선택 작업이 완료됐으면 이 선택한 픽셀들을 새 레이어로 복사해서 개별 이미지 파일로 저장해야 합니다.
선택한 픽셀들을 복사(Ctr+C)하십시오.
픽셀들을 바로 붙여넣기(Ctr+V)하면, GIMP가 Layers - Brushes 패널에 Floating Selection (Pasted Layer) 라는 이름의 새 임시 레이어로 붙여넣기된 픽셀들을 표출할 것입니다.
해당 임시 레이어를 오른쪽 클릭한 다음 To New Layer 를 선택하십시오.
원본 이미지 레이어 옆에 있는 “눈” 아이콘을 클릭해서 레이어를 끄십시오. Pasted Layer 만 보이게 됩니다.
마지막으로 메뉴의 File ‣ Export... 를 클릭한 다음, Select File Type (By Extension) 을 TIFF image 로 설정하고 digitizing 폴더에 파일명 rautjarvi_map_green.tif 로 저장하십시오. 대화 창이 뜨면 어떤 압축도 선택하지 마십시오.
원본 이미지의 다른 요소들도 동일한 과정을 거쳐 추출할 수 있습니다. 예를 들어 도로를 표시하는 검정색 선이나 지형의 등고선을 표시하는 갈색 선을 추출할 수 있습니다. 하지만 이번 강의에서는 수종경계만 사용할 것입니다.
이전 강의에서와 마찬가지로, 이 새 이미지를 다른 데이터와 함께 사용하려면 이미지를 지리참조시켜야 합니다.
지리참조 도구의 입장에서는 이 새 이미지가 기본적으로 원본 맵 이미지와 동일하기 때문에 새로 지상기준점을 디지타이즈할 필요는 없습니다. 다음 사항들을 기억하십시오.
이 이미지 또한, 당연히, KKJ / Finland zone 2 좌표계를 사용합니다.
File ‣ Load GCP points 메뉴를 통해 이전에 저장했던 지상기준점을 사용해야 합니다.
Transformation settings 를 살펴보는 것을 잊지 마십시오.
digitizing 폴더에 파일명 rautjarvi_green_georef.tif 로 래스터 산출물을 저장하십시오.
새 래스터가 원본 맵과 잘 겹치는지 확인하십시오.
QGIS의 디지타이즈 작업 도구를 떠올려본다면, 디지타이즈 작업을 하는 동안 녹색 픽셀에 스냅하도록 하는 것이 도움이 될 거라고 이미 생각하고 있을 겁니다. 다음 단계는 바로 그렇게 디지타이즈 작업 시 수종경계 경계선을 따라 녹색 픽셀로부터 포인트를 생성하도록 QGIS의 스냅 도구를 이용할 것입니다.
Raster ‣ Conversion ‣ Polygonize (Raster to Vector) 메뉴를 실행해서 녹색 선을 폴리곤으로 벡터화하십시오. 어떻게 하는지 기억이 안 난다면, Lesson: 래스터 - 벡터 변환 강의를 참조해도 됩니다.
digitizing 폴더에 파일명 rautjarvi_green_polygon.shp 로 생성된 폴리곤을 저장하십시오.
줌인해서 폴리곤이 어떻게 생겼는지 살펴보십시오. 다음 그림처럼 보일 것입니다.
다음으로, 이 폴리곤으로부터 포인트를 만드는 방법 가운데 하나는 폴리곤의 중심점을 구하는 것입니다.
메뉴에서 Vector ‣ Geometry tools ‣ Polygon centroids 를 실행하십시오.
방금 저장한 폴리곤 레이어를 도구 대화 창의 입력 파일로 설정하십시오.
digitizing 폴더에 파일명 green_centroids.shp 로 산출물을 저장하십시오.
Add result to canvas 체크박스를 체크하십시오.
도구를 실행해서 폴리곤의 중심점을 계산합니다.
이제 TOC에서 rautjarvi_green_polygon 레이어를 제거해도 됩니다.
중심점 레이어의 심볼을 다음과 같이 변경하십시오.
green_centroids 레이어의 Layer Properties 를 엽니다.
Unit 을 Map unit으로 설정합니다.
Size 를 1로 설정합니다.
각 포인트를 서로 구분지을 필요는 없습니다. 다만 스냅 도구가 포인트를 사용할 수 있기만 하면 됩니다. 이제 이 포인트들을 사용해서 훨씬 쉽게 원본의 선을 딸 수 있을 겁니다.
이제 실제 디지타이즈 작업을 시작할 준비를 마쳤습니다. 먼저 polygon type 의 벡터 파일을 생성해도 되지만, 이 예제에서는 이미 관심 지역의 일부를 디지털화한 shapefile이 존재합니다. 여러분은 주요 도로(굵은 분홍색 선)와 호수 사이에 남아 있는 절반 정도의 수종경계만 디지타이즈하면 됩니다.
파일 탐색기를 통해 digitizing 폴더를 찾으십시오.
forest_stands.shp 벡터 파일을 맵으로 드래그&드롭하십시오.
새로운 레이어의 심볼을 변경해서 어떤 폴리곤이 이미 디지타이즈되었는지 알기 쉽게 만듭시다.
폴리곤의 면을 녹색으로 변경합니다.
폴리곤의 경계선 굵기를 1mm로 변경합니다.
폴리곤의 투명도를 50%로 변경합니다.
이전 강의들을 기억한다면, 이제 스냅 옵션을 설정하고 활성화할 차례입니다.
Tolerance 를 5 map units로 설정하십시오.
forest_stands 레이어의 Avoid Int. 체크박스를 체크하십시오.
Enable topological editing 체크박스를 체크하십시오.
Apply 버튼을 클릭합니다.
스냅 옵션을 이렇게 설정하면 여러분이 디지타이즈 작업을 할 때, 마우스가 중심점 레이어에 있는 포인트 또는 여러분이 디지타이즈한 폴리곤의 꼭지점에 가까이 갈 경우 포인트에 분홍색 십자 표식이 표출되면서 스냅할 수 있게 됩니다.
마지막으로, forest_stands 와 rautjarvi_georef 를 제외한 모든 레이어를 보이지 않도록 끄십시오. 맵 이미지 또한 더 이상 투명하지 않도록 확인하십시오.
디지타이즈 작업을 시작하기 전에 확인해야 할 몇 가지 중요한 사항이 있습니다.
경계선 디지타이즈 작업 시 너무 정확하게 선을 따려 하지 마십시오.
경계선이 직선일 경우, 노드 2개만 써서 디지타이즈하십시오. 대개의 경우, 가능한 한 적은 노드를 써서 디지타이즈하십시오.
정확하게 작업해야 할 경우에만 근거리로 확대하십시오. 예를 들면 모서리 부분 또는 특정 노드에서 폴리곤과 폴리곤을 접하도록 만들 때 말입니다.
디지타이즈 작업 시 마우스 휠을 통해 확대/축소 및 이동을 하십시오.
한 번에 폴리곤 하나만 디지타이즈하십시오.
하나의 폴리곤 작업이 끝날 때마다 맵 상에 보이는 수종경계 ID를 입력하십시오.
이제 디지타이즈 작업을 시작해봅시다.
맵 창에서 수종경계 번호 357을 찾으십시오.
forest_stands.shp 레이어에 대해 편집 모드를 활성화하십시오.
Add feature 도구를 선택하십시오.
점들을 연결해서 수종경계 357 을 디지타이즈하십시오.
분홍색 십자 표식은 스냅이 가능하다는 의미입니다.
디지타이즈를 완료하면 오른쪽 클릭해서 해당 폴리곤의 작업을 끝내십시오.
해당 수종경계의 id (이 경우 357) 를 입력하십시오.
OK 를 클릭하십시오.
폴리곤 디지타이즈 작업이 끝났을 때 폴리곤의 id 를 묻는 대화 창이 표출되지 않을 경우, Settings ‣ Options ‣ Digitizing 메뉴를 클릭해서 Suppress attribute form pop-up after feature creation 체크박스가 해제되어 있는지 확인하십시오.
여러분이 디지타이즈한 폴리곤은 다음 그림처럼 보일 것입니다.
이제 두 번째 폴리곤으로 수종경계 번호 358을 찾아보십시오. forest_stands 레이어의 Avoid int. 옵션이 체크되어 있는지 확인하세요. 이 옵션은 디지타이즈 작업 시 폴리곤들이 서로 교차하지 않도록 막아줍니다. 따라서 기존 폴리곤 위에 겹쳐서 디지타이즈할 경우, 새 폴리곤은 기존 폴리곤의 경계선을 따라 잘릴 것입니다. 이 특성을 이용하면 공통 경계선을 자동적으로 얻을 수 있습니다.
수종경계 357과 맞닿은 모서리 가운데 하나로부터 수종경계 358의 디지타이즈 작업을 시작하십시오.
다시 두 수종경계가 맞닿는 모서리까지 디지타이즈하십시오.
마지막으로 맞닿는 모서리가 서로 교차하지 않도록 폴리곤 357 내부에 포인트를 몇 개 디지타이즈하십시오. 다음 왼쪽 이미지를 참조하세요.
오른쪽 클릭해서 수종경계 358의 편집을 끝냅니다.
id 를 358로 입력합니다.
기존 폴리곤과 겹쳤던 폴리곤 부분이 자동적으로 잘려나가, 의도한 대로 공통 경계선만 남게 되었습니다.
이제 수종경계 2개를 완료했습니다. 이렇게 해보면 어떨까요? 주요 도로와 호수 사이에 있는 모든 수종경계를 디지털화할 때까지 디지타이즈 작업을 계속하는 겁니다.
힘든 일처럼 보일 수도 있지만, 수종경계를 디지타이즈하는 작업에 금새 익숙해질 겁니다. 15분 정도면 다 끝낼 수 있습니다.
디지타이즈 작업 도중 노드를 편집 또는 삭제하거나, 폴리곤들을 나누거나 합쳐야 할 수도 있습니다. Lesson: 피처의 위상 강의에서 이때 필요한 도구에 대해 배웠습니다. 이제 해당 강의를 다시 읽어보는 게 어떨까요.
Enable topological editing 옵션을 활성화했기 때문에, 두 폴리곤이 맞닿아 있는 노드를 이동시켜 동시에 두 폴리곤의 공통 경계선을 편집할 수도 있다는 사실을 기억하십시오.
여러분의 산출물이 다음 그림처럼 보여야 합니다.
여러분의 맵에 대해 여러분이 가진 삼림 목록 데이터 또한 종이에 기록된 정보일 수도 있습니다. 이럴 경우, 먼저 해당 데이터를 텍스트 파일이나 스프레드시트로 입력해야 합니다. 이번 예제에서는, (맵과 동일한 연도인) 1994년 목록 정보를 쉼표로 구분된 텍스트 파일(csv)로 준비했습니다.
텍스트 편집기에서 exercise_data\forestry 폴더에 있는 rautjarvi_1994.csv 파일을 여십시오. 이 목록 데이터 파일은 ID 라는 속성으로 수종경계의 번호를 담고 있습니다. 이 번호들은 여러분이 폴리곤에 입력한 수종경계 id와 동일하며, 텍스트 파일에 들어 있는 데이터를 여러분의 벡터 파일과 링크시키는 데 이용할 수 있습니다. 이 목록 데이터의 메타데이터를 같은 폴더에 있는 rautjarvi_1994_legend.txt 파일 안에서 살펴볼 수 있습니다.
Layer ‣ Add Delimited Text Layer... 도구를 통해 QGIS에서 .csv 파일을 여십시오. 대화 창이 뜨면, 다음과 같이 설정하십시오.
.csv 파일에서 데이터를 추가하려면,
forest_stands 레이어의 Layer Properties 를 엽니다.
Joins 탭을 선택합니다.
대화 창 맨아래에 있는 더하기 표식을 클릭하십시오.
Join layer 에 rautjarvi_1994.csv 를, Join 항목에 ID 를 선택하십시오.
Target 항목 또한 id 로 설정됐는지 확인하십시오.
OK 를 두 번 클릭합니다.
텍스트 파일에 있던 데이터가 이제 벡터 파일에 링크됐을 겁니다. 어떻게 됐는지 살펴보려면, forest_stands 레이어의 속성 테이블을 열어보십시오. 목록 데이터 파일에 있던 모든 속성들이 여러분이 디지타이즈한 벡터 레이어에 링크됐다는 사실을 알 수 있습니다.
.csv 파일에 있던 데이터는 벡터 파일에 단순히 링크만 되어 있을 뿐입니다. 이 연결을 영구적으로 만들어 데이터가 실제로 벡터 파일에 기록되도록 하려면, forest_stands 레이어를 새로운 벡터 파일로 저장해야 합니다. 속성 테이블을 닫은 후 forest_stands 레이어를 오른쪽 클릭해서 파일명 forest_stands_1994.shp 으로 저장하십시오.
맵 상에 자동으로 추가되지 않은 경우 새로 만든 forest_stands_1994.shp 파일을 맵에 여십시오. 그리고 속성 테이블을 열어보십시오. 방금 추가한 열의 명칭이 알아보기 어렵다는 사실을 알 수 있을 겁니다. 이 문제를 해결하려면,
이전 다른 플러그인들과 마찬가지로 Table Manager 플러그인을 추가하십시오.
플러그인이 활성화됐는지 확인하십시오.
TOC에서 forest_stands_1994.shp 레이어를 선택합니다.
그 다음, Vector ‣ Table Manager ‣ Table manager 메뉴를 클릭하십시오.
대화 창을 통해 .csv 파일의 속성명과 동일하게 열의 명칭을 편집하십시오.
Save 를 클릭합니다.
Yes 를 클릭해서 레이어 스타일을 유지합니다.
Table Manager 대화 창을 닫습니다.
이 수종경계들과 관련된 정보 수집을 완료하려면, 각 수종경계의 면적 및 둘레를 계산해야 할 수도 있습니다. Lesson: 보충 예제 강의에서 폴리곤의 면적을 계산해봤습니다. 필요한 경우 해당 강의를 다시 읽고, 수종경계의 면적을 계산해서 새 Area 속성으로 저장하십시오. 계산값의 단위가 헥타르가 맞는지 확인하시기 바랍니다.
이제 forest_stands_1994.shp 레이어는 사용 가능한 정보들이 첨부되어 준비가 끝났습니다.
나중에 다시 필요할 경우가 있을지도 모르니 현재 맵 상태를 유지할 수 있도록 프로젝트를 저장하십시오.
마우스 클릭을 많이 해야 했지만, 이제 옛날 목록 데이터를 디지털 형식으로 바꾸어 QGIS에서 이용할 준비를 끝냈습니다.
새로 만든 데이터셋으로 다른 분석을 할 수도 있지만, 좀 더 최신 정보로 업데이트된 데이터셋으로 분석을 수행하고 싶을 것입니다. 다음 강의의 주제는 최신 항공사진을 이용해서 수종경계를 생성하고 몇몇 관련 정보를 사용자의 데이터셋에 추가하는 것입니다.