한국어 지부
Quantum GISTutorial
(QGIS 고급 기능 및 PyQGIS)
2014년 1월 6~10일
국토해양부 공간정보 거점대학
오픈 소스 GIS 과정
㈜망고시스템
김기웅(socoooooool@gmail.com) / 임영현(yhlim0129@gmail.com)
2.
한국어 지부
III. QGIS고급 기능
- 일러두기 • 본 교재는 미국 하버드 대학교 Center for Geographic Analysis의 QGIS Workshop Manual의 내용을 일부 포
함하고 있습니다.
• 하버드 대학교의 해당 자료는 http://maps.cga.harvard.edu/qgis/ 에서 살펴볼 수 있습니다.
• 하버드 대학교의 자료와 본 자료는 모두 Creative Commons License CC-BY-NC을 따릅니다.
• 본 교재에서는 교육의 편의상 Windows 기반의 QGIS 위주로 설명합니다.
• 본 교재에서 사용하는 이미지의 QGIS 버젼은 교육용 버젼과 다를 수 있으나, 기능상 차이는 없습니다.
3.
III-1. 연결(Join)
속성연결(Tabular Join)
① [Layer] -> [Add Vector Layer]를 실행하여, 샘플 데이터 중 admin_emd.shp 열기
② [Layer] -> [Add Delimited Layer]를 실행하여, 샘플 데이터 중 admin_cnt.csv를 열되 파일 포맷을
„CSV(comma separated value)‟를 선택하여 열기
③ „Active Layer‟로 admin_emd.shp을 선택한 뒤, 마우스 오른쪽 버튼을 눌러 [Properties] 실행
④ [Properties] 창에서 [Joins] 탭 선택한 뒤, 버튼을 눌러 실행
⑤ „Join Layer‟에 „admin_cnt‟ 선택, „Joins Filed‟와 „Target Field‟에 모두 EMD_CD를 선택
⑥ 이후 모두 [OK] 버튼을 눌러 속성 연결한 뒤 속성 조회
공간정보 거점대학 오픈 소스 GIS 과정
3
신상희 (shshin@gaia3d.com), 이민파
4.
III-1. 연결(Join)
공간적연결(Spatial Join)
서울시 동 내에 있는 특정 점에 동의 속성 정보를 연결해 주기
① [Layer] -> [Add Vector Layer]를 실행하여, 샘플 데이터 중 admin_emd.shp 열기
② [Layer] -> [Add Vector Layer]를 실행하여, 앞서 만든 admin_cnt.shp 열기
③ [Vector] -> [Data Management Tools] -> [Join Attributes by Location] 실행
④ „Join Attributes by Location‟ 창에서 „Target Vector Layer‟에 admin_cnt , „Join Vector Layer‟에
admin_emd 설정
⑤ „Output Shape File‟을 [admin_emd_join]으로 설정하고 실행 후 테이블 속성 확인
공간정보 거점대학 오픈 소스 GIS 과정
4
신상희 (shshin@gaia3d.com), 이민파
5.
III-2. 벡터 편집
벡터 레이어 생성 및 편집 – 1
벡터 레이어 생성
① [Layer] -> [New] -> [New Shape file layer] 선택
② „New Vector Layer‟ 창에서 Type으로 Polygon 설정.
CRS는 해당 CRS 설정
③ 속성 필드 설정을 위해 „New attribute‟ 하단의 „Name‟
에 „name‟ 입력. Type은 Text data 설정하고 „Add to
attributes list‟ 버튼으로 추가
④ 필요한 경우 추가 속성 필드를 설정하고 „Add to
attributes list‟ 버튼으로 추가하고 [OK] 버튼 클릭한
뒤 파일이름을 „new_river.shp‟로 저장
공간정보 거점대학 오픈 소스 GIS 과정
5
신상희 (shshin@gaia3d.com), 이민파
6.
III-2. 벡터 편집
벡터 레이어 생성 및 편집 – 2
디지타이징 환경 설정
① [Settings] -> [Options] 실행
② [Digitize] 탭 선택
③ “Default snap mode‟를 „To
vertex and segment‟로 설정
④ Default snapping tolerance를
10 pixels로 설정
⑤ Search radius for vertex edits
를 10 pixels로 설정
※ Map units 와 Pixels의 차이점…
공간정보 거점대학 오픈 소스 GIS 과정
6
신상희 (shshin@gaia3d.com), 이민파
7.
III-2. 벡터 편집
벡터 레이어 생성 및 편집 – 3
① 배경 영상으로 landsat을 활용, Active Layer로 new_river 설정
눌러 편집 시작
② [Layer] -> [Toggle Editing]을 켜거나, 도구모음에서
디지타이징
③
버튼을 선택하여 객체 생성 시작
④ 편집이 끝나면
1
2
3
4
5
1.
객체 이동
6.
버텍스나 선 편집
7.
선택 객체 삭제
8.
객체 잘라내기
9.
10
객체 생성
5.
9
저장
4.
8
편집 모드 설정
3.
7
현재 편집 수정
2.
6
다시 눌러 편집 모드 종료 후 편집 저장
객체 복사
10. 객체 붙여넣기
디지타이징 중이나 편집 시 화면 이동은 스페이스바를 누른 채 마우스 이동
공간정보 거점대학 오픈 소스 GIS 과정
7
신상희 (shshin@gaia3d.com), 이민파
8.
III-3. 레이어 꾸미기
벡터 레이어 다루기 - Categorized
① „지도 범례(Layers)‟에 있는 admin_emd를 더블클릭하여 [Properties] 창 열기
② [Properties] 창에서 [Style] 탭 선택 실행
③ [Style] 탭의 [Transparency]를 50%로 설정
④ [Style] 탭의 스타일 유형을 „Single Symbol‟에서 „Categorized‟로 변경
⑤ [Style] 탭의 [Column]에서 „SGG_NM‟ 필드를 선택하고 적절한 [Color ramp]를 선택
⑥ [Classify] 버튼 실행 및 미리 보기를 원하면 [Apply] 버튼을 누르고, 마음에 들면 [OK] 버튼 클릭
공간정보 거점대학 오픈 소스 GIS 과정
8
신상희 (shshin@gaia3d.com), 이민파
9.
III-3. 레이어 꾸미기
벡터 레이어 다루기 - Graduated
① „지도 범례(Layers)‟에 있는 admin_emd를 더블클릭하여 [Properties] 창 열기
② [Properties] 창에서 [Style] 탭 선택 실행
③ [Style] 탭의 [Transparency]를 20%로 설정
④ [Style] 스타일 유형을 „Single Symbol‟에서 „Graduated‟로 변경
⑤ [Style] 탭의 [Column]에서 „POP_DEN‟ 필드를 선택하고 [Color ramp], [Classes], [Mode]를 선택
⑥ [Classify] 버튼 실행 및 미리 보기를 원하면 [Apply] 버튼을 누르고, 마음에 들면 [OK] 버튼 클릭
공간정보 거점대학 오픈 소스 GIS 과정
9
신상희 (shshin@gaia3d.com), 이민파
10.
III-3. 레이어 꾸미기
래스터 레이어 다루기
① 배포된 „02_GeoData 폴더‟ -> „seoul_raster‟ 폴더 밑에 있는 dem30, shadedrelief 불러오기
② 레이어 순서를 dem30 shaderelief 순으로 정렬
③ dem30 레이어를 더블클릭하여 등록정보 불러오기
④ [Transparency ]탭에서 Dem30 레이어의 투명도 40으로 조절
⑤ [Style] 탭에서 [Render Type]을 singleband pseudocolor로 선택
⑥ Color ramp 선택 후 [Classify] 버튼 클릭 후 [OK] 버튼 눌러 심볼 설정
공간정보 거점대학 오픈 소스 GIS 과정
10
신상희 (shshin@gaia3d.com), 이민파
11.
III-4. 내보내기
질의후 다른 포맷으로 내보내기
① [지도 범례(Layer)]에서 admin_emd 선택 후 도구모음에서
클릭, 또는
② [Attribute Table] 도구에서
를 통한 Feature 선택)
(Open Attribute Table) 클릭
선택, 또는 Citl + F 누름 (질의
③ [Expression based filter] 창의 „Fields and Values‟에서 „POP2008‟을 더블클릭 후
④ „Expression‟를 "POP2008" > 23000 와 같이 완성 후 [OK] 버튼 클릭
⑤ [Layer] -> [Save Selection as Vector File..] 실행 후 Format을 KML, 저장위치 및 명칭 선택, CRS는
Selected CRS WGS84(EPSG:4326)으로 설정 후 저장
⑥ 저장된 KML 파일을 더블클릭하여 Google Earth를 통해 해당 정보 확인, QGIS 2.0 버전부터는 심볼도
인코딩 됨
공간정보 거점대학 오픈 소스 GIS 과정
11
신상희 (shshin@gaia3d.com), 이민파
12.
III-5. 속성 정보검색 및 질의
속성 정보 조회 (Identify)
지도에서 레이어의
속성 정보 조회
① [View] -> [Identify Features]나 도구모음에서
클릭
를 누른 뒤 조회하고자 하는 객체를
② 현재 선택된 레이어만이 아닌 다중 레이어를 동시에 조회하고 싶으면 [Settings] ->
[Options]의 [Map to…]탭의 Identify Mode를 „Top down‟으로 변경
③ 기타 배경 지도로만 사용하고 속성값을 조회하고 싶지 않은 경우에는 [Project] ->
[Project Properties]의 [Identify Layers]에서 Identifiable 체크 박스를 끄면 됨.
공간정보 거점대학 오픈 소스 GIS 과정
12
신상희 (shshin@gaia3d.com), 이민파
13.
III-5. 속성 정보검색 및 질의
속성 정보 검색 및 질의 – 1
레이어 Filter
① Active Layer를 admin_emd로 선택
② [Layer] -> [Query...] 메뉴 또는, TOC의 admin_emd 에서 마우스 오른쪽 버튼 ->
[Filter…] 선택
③ [Query Builder] 창에서 [Fields]는 „SGG_NM‟ 더블클릭, [Operator]는 „=„ 더블클릭,
[Values]는 [Sample] 버튼을 선택하여 나오는 리스트에서 „강남구‟ 더블클릭
④ 아래 [expression]이 “SGG_NM” = “강남구” 인지를 확인 후 [OK] 버튼 선택
⑤ 필터링 된 도형 및 속성정보 확인 후 [Query Builder] 창을 다시 열어 [expression]을
모두 삭제하고 [OK] 버튼 선택
공간정보 거점대학 오픈 소스 GIS 과정
13
신상희 (shshin@gaia3d.com), 이민파
14.
III-5. 속성 정보검색 및 질의
속성 정보 검색 및 질의 – 2
검색
① [Layer] -> [Open Attribute Table] 또는 도구모음에서
를 클릭
편집 시작/종료
선택 피쳐로 지도를 이동 (확대, 축소 없이)
편집 저장 (편집모드)
선택 피쳐로 지도를 확대 또는 축소
선택 피쳐 지우기 (편집모드)
선택 피쳐의 정보를 클립보드에 복사 (WKT)
질의를 통한 피쳐 선택창 열기
필드 삭제 (편집모드)
선택 해제
필드 추가 (편집모드)
선택된 피쳐를 최상위로 올리기
Field calculator (필드 계산기)
기존 정보를 통한 새로운 정보를 생성
좌표(점), 거리(선), 면적(면) 계산 가능
선택 반전
속성값이 아닌 테이블 자체를 관리하고 싶으면 Table Manager PlugIn을 사용하는 게 편리
공간정보 거점대학 오픈 소스 GIS 과정
14
신상희 (shshin@gaia3d.com), 이민파
15.
III-5. 속성 정보검색 및 질의
속성 정보 검색 및 질의 - 3
질의
① 도구모음에서
(속성 테이블 보기) 클릭 후
(질의를 통한 피쳐 선택) 선택
② [Select By Expression] 창에서 아래 조건들을 통하여 몇 개의 피쳐가 선택되는지 확
인해 보기
2008년 인구가 23,000명 이상인 동을 찾기 (218)
“POP2008” > 23000
2008년 인구가 23,000명 이상인 동 중 영등포구에 있
는 동만 찾기 (6)
“POP2008” > 23000 and “SGG_NM” = ‘영등포
구’
2008년 인구가 23,000명 이상인 동 중 영등포구, 관
악구, 중랑구에 있는 동만 찾기 (30)
“POP2008” > 23000 AND “SGG_NM” IN (‘ 영등
포구’, ‘관악구’, ‘중랑구’)
동이름이 „신‟으로 시작하는 동 모두 찾기 (39)
“EMD_NM” LIKE ‘신%’
동이름에 „신‟을 포함하는 동 모두 찾기 (42)
“EMD_NM” LIKE ‘%신%’
동이름이 „신XX동‟ 모두 찾기 (16)
“EMD_NM” LIKE ‘신__동’
공간정보 거점대학 오픈 소스 GIS 과정
15
신상희 (shshin@gaia3d.com), 이민파
16.
III-5. 속성 정보검색 및 질의
Field Calculator를 이용한 정보 갱신
Field Calculator를 이용하여 속성 정보의 수정, 변환, 기하정보 추가 등이 가능
① Field Calculator는 „Attribute Table Viewer‟에서
버튼으로 편집모드 중일때 활성화됨
② Field Calculator는 연산자, 수학함수, 변환함수,
문자함수, 기하함수 등을 제공하여 사용자가
필드와 공간 정보를 활용하여 새로운 정보를
생성할 수 있도록 함
③ Field Calculator는 기존에 존재하는 필드에 값
을 계산하거나 계산과 동시에 새로운 필드를
추가할 수 있음
편집시작/종료
Field Calculator 버튼
연습 문제 : Field Calculator를 이용하여 2008년 동별 인구밀도 구하기
※ 인구밀도 : 1㎢ 당 인구의 수, 동별인구를 면적으로 나눈 수
동의 면적의 단위를 ㎢로 변경하기 위해 1,000,000을 나눔
"POP2008" / ( "Shape_Area" / 1000000) 또는 "POP2008" / ( $area / 1000000)
공간정보 거점대학 오픈 소스 GIS 과정
16
신상희 (shshin@gaia3d.com), 이민파
17.
III-6. 공간 질의및 공간 프로세싱
공간 질의 및 공간 프로세싱 – 1
8차선 이상 도로로부터 직선거리 500m 이상 떨어져 있는 소방서 찾기
① „Seoul‟ 폴더에서 road_link2와 firestation 열기, Active Layer는 road_link2 선택
(속성 테이블 보기) 클릭 후
(질의를 통한 피쳐 선택) 선택
② 도구모음에서
③ 8차선 이상 도로 확인 : Expression으로 “LANES” >= 8 선택 후 Map에서 8차선 이상 도로 확인
④ 직선거리 500m 영역만들기 : [Vector] -> [Geoprocessing Tools] -> [Buffer]를 실행
> Input vector layer : road_link2
> Use only selected features 선택
> Buffer distance : 500
> Dissolve buffer results 선택
> 저장명칭은 [buffered_road.shp] 으로
설정후 버퍼 실행
> TOC에 결과를 지도에서 확인
공간정보 거점대학 오픈 소스 GIS 과정
17
신상희 (shshin@gaia3d.com), 이민파
18.
III-6. 공간 질의및 공간 프로세싱
공간 질의 및 공간 프로세싱 – 1 (계속)
8차선 이상 도로로부터 직선거리 500m 이상 떨어져 있는 소방서 찾기
⑤ [buffered_road.shp]으로 부터 떨어져 있는 소방서 찾기 : [Vector] -> [Spatial Query] -> [Spatial
Query] 실행
> Select source features from : firestation (선택 할 피쳐는 소방서)
> Where the feature : Is disjoint (어떤 피쳐를 선택할지는 포함되지 않은…)
> Reference features of : buffered_road (공간적으로 참조되는 피쳐는 버퍼된 도로)
> [Apply] 버튼을 선택하여 공간 쿼리를 실행하여 선택된 소방서 확인
⑥
(Create layer with selected) 버튼을 선택하여 레이어로 생성
공간정보 거점대학 오픈 소스 GIS 과정
18
신상희 (shshin@gaia3d.com), 이민파
19.
III-6. 공간 질의및 공간 프로세싱
공간 질의 및 공간 프로세싱 – 2
동별로 되어 있는 SHP을 구별 정보로 재가공
① [admin_emd] 레이어를 활용하여 시군구 경계 레이어 생성
② [Vector] -> [Geoprocessing Tools] ->[Dissolve] 선택
③ „Dissolve‟ 창에서 Input Vector Layer로 admin_emd 선택.
④ 이후 „Dissolve Field‟로 „SGG_NM‟ 선택. 결과 파일로 „admin_gu.shp‟ 지정하고 [OK] 클릭
⑤ 결과 파일을 TOC에 로드하고 [Layer] -> [Labeling] 실행
⑥ „Layer Labeling Settings‟ 창에서 „Label this layer with‟ 를 선택하고 SGG_NM 설정, [OK] 클릭
공간정보 거점대학 오픈 소스 GIS 과정
19
신상희 (shshin@gaia3d.com), 이민파
20.
III-6. 공간 질의및 공간 프로세싱
공간 질의 및 공간 프로세싱 – 3
한강의 본류(RIVER_CD = 1)를 포함하고 있는 구별 한강 면적 구하기
① „Seoul‟ 폴더에서 river 열기
② river에서 본류만 선택 : Open Attribute table ( ) -> Select features using an Expression (
Expression 으로 “RIVER_CD” = „1‟ 설정 -> 선택 (
)
) ->
③ [Vector] -> [Geoprocessing Tools] -> [Intersect] 실행
> Input vector layer : admin_gu
> Intersect layer : river
> Use only selected features 선택
> Output Shapefile : [gu_over_river.shp] 으로 지정
④ [OK] 버튼으로 Intersec를
실행하고 결과를 TOC에 추가
공간정보 거점대학 오픈 소스 GIS 과정
20
신상희 (shshin@gaia3d.com), 이민파
21.
III-6. 공간 질의및 공간 프로세싱
공간 질의 및 공간 프로세싱 – 3 (계속)
한강의 본류(RIVER_CD = 1)를 포함하고 있는 구별 한강 면적 구하기
⑤ gu_over_river에서 같은 구를 하나로 병합 : [Vector] -> [Geoprocessing Tools] -> [Dissolve] 실행
> input vector layer : gu_over_river
> Dissolve field : [SGG_NM]
> Output shapefile : [gu_over_river_dis.shp] 으로 지정
⑥ [OK] 버튼으로 Dissolve를 실행하고 결과를 TOC에 추가
⑦ gu_over_river_dis 에서 Open Attribute table ( ) -> Toggle editing mode (
⑧ 필드삭제 (
) : 편집모드 시작
) 버튼을 선택하여 [SID_NM], [SGG_NM] 필드를 제외한 나머지 필드 모두 삭제
⑨ Open field calculator (
) 버튼을 선택하여 한강의 면적 계산
> Create a new field
> Output field name : RIVER_AREA
> Output field type : Decimal number
> Output field width : 11 / Precision : 9
> Expression : $area
⑩ [OK] 버튼으로 면적을 계산 후 확인
⑪ 편집모드를 종료하면서 변경사항 저장
공간정보 거점대학 오픈 소스 GIS 과정
21
신상희 (shshin@gaia3d.com), 이민파
22.
III-7. 레이아웃 및출력
출력용 지도 만들기
① 출력을 위해 적절히 지도를 디자인 (ex. 서울시 2008년 인구 주제도)
② [Project] -> [New Print Composer] 실행 후, Title을 적절히 입력 (ex. 서울 주제도)
③ [Composer] -> [Page Setup] 을 선택하여, A4 크기의 방향은 가로로 선택 후 [확인]
④ [View] -> [Zoom Full] 선택 후 „Print Composer‟ 창에 지도와 제목, 범례, 축척 등을 추가
⑤ 각 객체들에 대해 스타일링을 적절하게 조절
공간정보 거점대학 오픈 소스 GIS 과정
22
신상희 (shshin@gaia3d.com), 이민파
23.
III-8. QGIS PlugIns활용
8-1. Table Manager
- Attribute 테이블의 필드를 추가/삭제/복사 하거나 필드의 순서를 변경하고, 필드의 명칭을 수정하는
등 속성 테이블에 대한 관리
① [Plugins] -> [Manage and Install Plugins…] 선택
② [Get more] 탭에서 “table”로 검색 후 [Table Manager] 설치
③ Active 레이어를 admin_emd로 선택하고, [Vector] -> [Table manager] -> [Table manager] 선택
④ Attribute 테이블의 필드에 대한 순서변경, Rename, Delete, Insert, Clone 이 가능하고 변경된 사항을
저장하거나, 다른 이름으로 저장 하는 등 속성 테이블의 관리가 용이함
공간정보 거점대학 오픈 소스 GIS 과정
23
신상희 (shshin@gaia3d.com), 이민파
24.
III-8. QGIS PlugIns활용
8-2. Heatmap Plugin (QGIS 2.0.1 기본 설치)
- Point 레이어의 개수 또는 속성값을 통해 온도지도(HeatMap)을 생성
① „Seoul‟ 폴더에서 [subway_11월승차인원] 열기 (데이터 출처 : 서울 열린 데이터 광장)
② [Raster] -> [Heatmap] -> [Heatmap] 실행
> Input point layer : subway_11월승차인원
> Output raster : [heatmap] 으로 저장
> Output format : GeoTIFF
> Radius : 800 meters
> Advanced 체크 선택
> Cell size X : 30 / Cell size Y : 30
> Use weight from field : [RIDE_NUM]
③ [OK] 를 선택하여 온도지도 생성
④ [heatmap]의 속성정보에서 스타일 변경
공간정보 거점대학 오픈 소스 GIS 과정
24
신상희 (shshin@gaia3d.com), 이민파
25.
III-8. QGIS PlugIns활용
8-3. GEarthView Plugin
-
QGIS에서 현재 보고있는 지도를 이미지화 하여 GoogleEarth에서 볼수 있도록 해주는 플러그인
① [Plugins] -> [Manage and Install Plugins…] 선택
② [Get more] 탭에서 “GEarthView”로 검색 후 [GEarthView] 설치
③ [heatmap] 레이어만 Visible을 선택하고 나머지 레이어는 모두 끄기
④ [Plugins] -> [GEarthView] -> [GEarthView] 실행
⑤ Google Earth가 실행되고 현재 QGIS의 지도가 해당 위치에 나타나는지 확인
QGIS 에서 투명도(Transparency)를 설정하면 GoogleEarth에서 투명도가 적용 됨
공간정보 거점대학 오픈 소스 GIS 과정
25
신상희 (shshin@gaia3d.com), 이민파
26.
III-8. QGIS PlugIns활용
8-4. Raster Terrain Analysis Plugin (QGIS 2.0.1 기본 설치)
- DEM(Elevation Layer)을 활용하여 경사(Slope), 향(Aspect), 음영기복(Hillshade) 등 다양한 지형분석
을 수행하는 플러그인
① „Seoul_raster‟ 폴더에서 [dem30] 열기
② [Raster] -> [Terrain Analysis] -> [Slope] 실행
> Elevation layer : dem30
> Output layer : [slope30] 으로 저장
> Output format : GeoTIFF
> Add result to project 체크 선택
③ [OK] 를 선택하여 경사도(Slope) 생성
④ [slope30]의 속성정보에서 스타일 변경
공간정보 거점대학 오픈 소스 GIS 과정
26
신상희 (shshin@gaia3d.com), 이민파
27.
III-8. QGIS PlugIns활용
8-5. Profile Tool Plugin
-
DEM(Elevation Layer) 레이어 등 Raster 레이어를 활용하여 사용자가 선택한 구간(Line)의 종단면
그래프를 생성하는 플러그인
① [Plugins] -> [Manage and Install Plugins…] 선택
② [Get more] 탭에서 “Profile tool”로 검색 후 [Profile tool] 설치
③ TOC 에서 Active 레이어로 dem30을 선택
④ [Plugins] -> [Profile Tool] -> [Terrain Profile] 실행
⑤ Profile Tool 창이 나타나면 종단면을 생성할 위치로 확대
⑥ 다시 [Plugins] -> [Profile Tool] -> [Terrain Profile]을 선택하면
마우스 포인터가 십자가로 변하고 종단면 생성을 위해 Map에
라인을 생성, 마지막으로 더블클릭하여 라인 생성을 마침
⑦ 생성된 종단면 그래프를 확인
공간정보 거점대학 오픈 소스 GIS 과정
27
신상희 (shshin@gaia3d.com), 이민파
28.
III-8. QGIS PlugIns활용
8-6. Point Sampling Tool Plugin
-
Point의 위치에 해당하는 Polygon의 값 또는 Raster의 Value를 탐색하여 Point의 속성으로 샘플링(
추가) 하는 플러그인
① [Plugins] -> [Manage and Install Plugins…] 선택
② [Get more] 탭에서 “Point sampling tool”로 검색 후 [Point sampling tool] 설치
③ „Seoul‟ 폴더에서 [policestation], [admin_emd] 열기
④ TOC에는 [policestation], [admin_emd], [slope30], [dem30]
모두 Visible이 켜져 있어야 함
⑤ [Plugins] -> [Analyses] -> [Point sampling tool] 실행
> Layer containing sampling points : policestation
> Layers with fields/bands to get values from
에서 아래의 항목을 선택
- admin_emd : EMD_CD (Polygon)
- slope30 : Band 1 (raster)
- dem30 : Band 1 (raster)
> Output point vector layer : [sampling.shp]으로 설정
> Add Created layer to the TOC 선택
공간정보 거점대학 오픈 소스 GIS 과정
28
신상희 (shshin@gaia3d.com), 이민파
29.
III-8. QGIS PlugIns활용
8-6. Point Sampling Tool Plugin (계속)
⑥ [Fields] 탭에서는 추출된 값들이 저장될 필드의 명칭을 설정 할 수 있음
⑦ [OK] 버튼을 선택하여 분석을 실행
⑧ [sampling] 레이어의 속성창을 열어 샘플링된 값을 확인
> EMD_CD : [admin_emd]에서 읍면동코드를 추출
> slope30 : [slope30]에서 경사도 값을 추출
> dem30 : [dem30]에서 표고 값을 추출
공간정보 거점대학 오픈 소스 GIS 과정
29
신상희 (shshin@gaia3d.com), 이민파
30.
III-9. 고급 Geoprocessing도구
Geoprocessing 툴박스 및 모델러 제공
① [Processing] -> [Toolbox] 실행
② GDAL/OGR, GRASS, SAGA, R 등 오픈소스 기반의 공간분석 도구 제공
공간정보 거점대학 오픈 소스 GIS 과정
30
신상희 (shshin@gaia3d.com), 이민파
31.
한국어 지부
IV. PyQGIS익히기
-일러두기 –
- 본 교재는 다음의 내용을 토대로 제작되었습니다.
• PyQGIS Developer Cookbook : http://www.qgis.org/pyqgis-cookbook/index.html
• Quantum GIS API Documentation : http://doc.qgis.org/api/index.html
• FOSS4G Korea Technical Workshop: http://www.osgeo.kr/84
• QGIS Workshop: http://www.qgisworkshop.org/html/workshop/index.html
• Script Runner: http://spatialgalaxy.net/2012/01/29/script-runner-a-plugin-to-run-python-scripts-in-qgis/
• The Python Tutorial: http://docs.python.org/2/tutorial/index.html
IV-1. PyQGIS 소개
PyQGIS란?
QGIS Python bindings
①
Python
•
②
QT
•
③
Python is a fun and powerful programming language used in web applications and
desktop software. It can also be found wrapping OSGeo-backed libraries such as
GDAL/OGR, JTS and GEOS
Qt (pronounced: cute ) is an open-source cross-platform application framework (a
set of tools) developed by Nokia for building graphical user interfaces (GUIs) and
software. You‟ve probably worked with Qt designed software if you‟ve touched
these programs: Google Earth, Virtual Box, Skype, Autodesk or Android
smartphones.
PyQT
•
PyQt is a Python binding of the cross-platform GUI toolkit Qt
공간정보 거점대학 오픈 소스 GIS 과정
33
신상희 (shshin@gaia3d.com), 이민파
34.
IV-2. Python inQGIS
PyQGIS를 활용하는 방법
①
Python Console
•
•
②
a command-line terminal inside QGIS to test ideas and do one-off quick
jobs
ArcGIS Python Window
Python Plugins
•
•
③
creating/extending editing tools that interact with data inside the QGIS
environment
ArcGIS ArcToolbox Script
Python Applications
• writing Python applications from scratch that are built off QGIS and Qt
libraries. These applications would process spatial data outside the QGIS
application but use core functionality under the hood
• ArcGIS Server & Engine + GeoProcessing Script
공간정보 거점대학 오픈 소스 GIS 과정
34
신상희 (shshin@gaia3d.com), 이민파
35.
IV-3. 개발환경 준비
Script Runner Plugin 설치
플러그인 작성없이 외부에서 작성한 PyQGIS 스크립트를 실행하는 도구
① [Plugins] -> [Manage and Install Plugins…] 실행
② [Get more] 탭에서 Script Runner
③ Script Runner plugin 선택 후 설치
출처: http://spatialgalaxy.net/2012/01/29/script-runner-a-plugin-to-run-python-scripts-in-qgis/
공간정보 거점대학 오픈 소스 GIS 과정
35
신상희 (shshin@gaia3d.com), 이민파
36.
IV-3. 개발환경 준비
Python IDLE(Integrated DeveLopment Environment) 설치
Python 통합 개발 환경
① http://python.org/download 에 접속
② Python 2.7.x 버전 다운로드 후 설치
③ 코드 편집용이므로 일반 텍스트 편집기를 이용해도 됨
공간정보 거점대학 오픈 소스 GIS 과정
36
신상희 (shshin@gaia3d.com), 이민파
37.
IV-4. Quantum GISAPI 이해
GIS Objects 및 Application의 구성
출처: OGC: GO(Geographic Objects )-1 Application Objects. Retired
공간정보 거점대학 오픈 소스 GIS 과정
37
신상희 (shshin@gaia3d.com), 이민파
38.
IV-4. Quantum GISAPI 이해
Plugin 사용하기
Quantum GIS API Documentation: http://doc.qgis.org/api/index.html
① 모듈 구성
QGIS core library
QGIS gui library.
QGIS analysis library.
QgsGeometryAnalyzer
QgsOverlayAnalyzer
MapComposer
QGIS network analysis library.
② 주요 클래스
QgisInterface(iface)
QgsMapCanvas
QgsDataProvider
QgsLayer
Vector, Raster, Plugin Layer
QgsFeature
QgsField
QgsGeometry
공간정보 거점대학 오픈 소스 GIS 과정
38
신상희 (shshin@gaia3d.com), 이민파
39.
IV-4. Quantum GISAPI 이해
QGIS Data Provider, Map Layer, Feature, Geometry
공간정보 거점대학 오픈 소스 GIS 과정
39
신상희 (shshin@gaia3d.com), 이민파
40.
IV-4. Quantum GISAPI 이해
GIS Map Canvas
공간정보 거점대학 오픈 소스 GIS 과정
40
신상희 (shshin@gaia3d.com), 이민파
41.
IV-4. Quantum GISAPI 이해
QGIS Vector Layer
공간정보 거점대학 오픈 소스 GIS 과정
41
신상희 (shshin@gaia3d.com), 이민파
42.
IV-4. Quantum GISAPI 이해
QGIS Raster Layer
공간정보 거점대학 오픈 소스 GIS 과정
42
신상희 (shshin@gaia3d.com), 이민파
43.
IV-5. Python CodingStyle
Python Coding Style
① Use 4-space indentation, and no tabs.
Tabs introduce confusion, and are best left out.
② Wrap lines so that they don‟t exceed 79 characters.
③ Use blank lines to separate functions and classes, and larger blocks of code inside
functions.
④ When possible, put comments on a line of their own.
⑤ Use docstrings.
⑥ Use spaces around operators and after commas, but not directly inside bracketing
constructs:
a = f(1, 2) + g(3, 4).
⑦ Name your classes and functions consistently
The convention is to use CamelCase for classes and lower_case_with_underscores
for functions and methods.
Always use self as the name for the first method argument (see A First Look at
Classes for more on classes and methods).
⑧ Don‟t use fancy encodings if your code is meant to be used in international environments.
Plain ASCII works best in any case.
공간정보 거점대학 오픈 소스 GIS 과정
43
신상희 (shshin@gaia3d.com), 이민파
44.
IV-6. PyQGIS Console
Python Console 사용
QGIS에 내장된 Python Console을 사용하여 레이어 다루기
① QGIS 실행 후 seoul shapefile 및 dem 추가
② Python 맛보기
③ Accessing & loading vector/raster layer
④ Accessing geometry & attributes
from qgis.core import *
import qgis.utils
공간정보 거점대학 오픈 소스 GIS 과정
44
신상희 (shshin@gaia3d.com), 이민파
45.
IV-7. PyQGIS ScriptRunner
PyQGIS Script Runner
Script Runner를 이용하여 Python IDLE 등에서 작성한 스크립트 실행하기
① Plugin 툴바 또는 메뉴에서 Script Runner(
② 실습 파일 편집 및 실행
공간정보 거점대학 오픈 소스 GIS 과정
) 실행
45
신상희 (shshin@gaia3d.com), 이민파
V. 유용한 정보들
Plugin 사용하기
QGIS는 기본 플러그인 외에도 다양한 3rd Party 플러그인을 활용 가능
① [Plugins] -> [Manage and Install Plugins…] 실행
② [Plugin Manager] 창에서 „Settings‟탭 선택
③ 우하단의 [Add..] 버튼을 클릭
④ www.qgis.org/wiki/Python_Plugin_Repositories 의 정보를 참조하여 개인적으로 추가
공간정보 거점대학 오픈 소스 GIS 과정
47
신상희 (shshin@gaia3d.com), 이민파
48.
V. 유용한 정보들
QGIS 메뉴 한글화하기 및 한국 좌표계 설정하기
QGIS에서 한글 메뉴
사용하기
http://www.osgeo.kr/15
http://www.osgeo.kr/87
QGIS에서 한국 좌표계
사용하기
http://www.osgeo.kr/44
QGIS에서 1.8에서 한글
사용하기
http://www.osgeo.kr/75
공간정보 거점대학 오픈 소스 GIS 과정
48
신상희 (shshin@gaia3d.com), 이민파
49.
IV. 유용한 정보들
QGIS 관련 정보 얻기
공식 페이지
• QGIS 웹 페이지 : http://www.qgis.org
• QGIS 매뉴얼 페이지 : http://www.qgis.org/en/documentation/manuals.html
• PyQGIS 참조 페이지 : http://qgis.org/pyqgis-cookbook/
• QGIS Planet : http://planet.qgis.org/planet/
기타 참조할 곳
• 하버드 대학교 QGIS Workshop 페이지 : http://maps.cga.harvard.edu/qgis/
• UC Davis QGIS Lab 교육 : http://www.plantsciences.ucdavis.edu/plant/qgislabs.htm
• Scratching Surfaces : http://www.surfaces.co.il/?p=872
• Nathans QGIS 블로그 http://woostuff.wordpress.com/
• Spatial Galaxy : http://spatialgalaxy.net/
• OSGeo 한국어 지부 : http://www.osgeo.kr
• OSGeo 한국어 지부 메일링 리스트 : http://groups.google.com/group/osgeo-kr
공간정보 거점대학 오픈 소스 GIS 과정
49
신상희 (shshin@gaia3d.com), 이민파