Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

QGIS 고급 및 PyQGIS - 김기웅, 임영현

19,075 views

Published on

2014년도 공간정보거점대학 '오픈 소스 GIS 개론 과정' 교육

QGIS 고급 기능 및 PyQGIS - 김기웅(socoooooool@gmail.com), 임영현(yhlim0129@gmail.com)

Published in: Technology
  • Be the first to comment

QGIS 고급 및 PyQGIS - 김기웅, 임영현

  1. 1. 한국어 지부 Quantum GIS Tutorial (QGIS 고급 기능 및 PyQGIS) 2014년 1월 6~10일 국토해양부 공간정보 거점대학 오픈 소스 GIS 과정 ㈜망고시스템 김기웅(socoooooool@gmail.com) / 임영현(yhlim0129@gmail.com)
  2. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 14. III-5. 속성 정보 검색 및 질의  속성 정보 검색 및 질의 – 2 검색 ① [Layer] -> [Open Attribute Table] 또는 도구모음에서 를 클릭 편집 시작/종료 선택 피쳐로 지도를 이동 (확대, 축소 없이) 편집 저장 (편집모드) 선택 피쳐로 지도를 확대 또는 축소 선택 피쳐 지우기 (편집모드) 선택 피쳐의 정보를 클립보드에 복사 (WKT) 질의를 통한 피쳐 선택창 열기 필드 삭제 (편집모드) 선택 해제 필드 추가 (편집모드) 선택된 피쳐를 최상위로 올리기 Field calculator (필드 계산기)  기존 정보를 통한 새로운 정보를 생성  좌표(점), 거리(선), 면적(면) 계산 가능 선택 반전  속성값이 아닌 테이블 자체를 관리하고 싶으면 Table Manager PlugIn을 사용하는 게 편리 공간정보 거점대학 오픈 소스 GIS 과정 14 신상희 (shshin@gaia3d.com), 이민파
  15. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 30. III-9. 고급 Geoprocessing 도구  Geoprocessing 툴박스 및 모델러 제공 ① [Processing] -> [Toolbox] 실행 ② GDAL/OGR, GRASS, SAGA, R 등 오픈소스 기반의 공간분석 도구 제공 공간정보 거점대학 오픈 소스 GIS 과정 30 신상희 (shshin@gaia3d.com), 이민파
  31. 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
  32. 32. IV-1. 목차  PyQGIS 소개  Python, QT, PyQT  Python in QGIS  Python Console, Python Plugins, Python Applications  개발환경 준비  Python IDLE, QGIS Script Runner  Quantum GIS API 이해  Module: core, gui, analysis…  Interface: QgisInterface(iface), canvas, DataProvider, Layer(Vector, Raster, Plugin layer), QgsFeature, QgsField, QgsGeometry  Python Coding Style  PyQGIS Console 활용  Accessing & loading vector/raster layer  Accessing geometry & attributes  PyQGIS Script Runner 활용  Layer Operation 공간정보 거점대학 오픈 소스 GIS 과정 32 신상희 (shshin@gaia3d.com), 이민파
  33. 33. 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. 34. IV-2. Python in QGIS  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. 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. 36. IV-3. 개발환경 준비  Python IDLE(Integrated DeveLopment Environment) 설치  Python 통합 개발 환경 ① http://python.org/download 에 접속 ② Python 2.7.x 버전 다운로드 후 설치 ③ 코드 편집용이므로 일반 텍스트 편집기를 이용해도 됨 공간정보 거점대학 오픈 소스 GIS 과정 36 신상희 (shshin@gaia3d.com), 이민파
  37. 37. IV-4. Quantum GIS API 이해  GIS Objects 및 Application의 구성 출처: OGC: GO(Geographic Objects )-1 Application Objects. Retired 공간정보 거점대학 오픈 소스 GIS 과정 37 신상희 (shshin@gaia3d.com), 이민파
  38. 38. IV-4. Quantum GIS API 이해  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. 39. IV-4. Quantum GIS API 이해  QGIS Data Provider, Map Layer, Feature, Geometry 공간정보 거점대학 오픈 소스 GIS 과정 39 신상희 (shshin@gaia3d.com), 이민파
  40. 40. IV-4. Quantum GIS API 이해  GIS Map Canvas 공간정보 거점대학 오픈 소스 GIS 과정 40 신상희 (shshin@gaia3d.com), 이민파
  41. 41. IV-4. Quantum GIS API 이해  QGIS Vector Layer 공간정보 거점대학 오픈 소스 GIS 과정 41 신상희 (shshin@gaia3d.com), 이민파
  42. 42. IV-4. Quantum GIS API 이해  QGIS Raster Layer 공간정보 거점대학 오픈 소스 GIS 과정 42 신상희 (shshin@gaia3d.com), 이민파
  43. 43. IV-5. Python Coding Style  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. 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. 45. IV-7. PyQGIS Script Runner  PyQGIS Script Runner  Script Runner를 이용하여 Python IDLE 등에서 작성한 스크립트 실행하기 ① Plugin 툴바 또는 메뉴에서 Script Runner( ② 실습 파일 편집 및 실행 공간정보 거점대학 오픈 소스 GIS 과정 ) 실행 45 신상희 (shshin@gaia3d.com), 이민파
  46. 46. 한국어 지부 V. 유용한 정보들
  47. 47. 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. 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. 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), 이민파
  50. 50. 한국어 지부 함께 성장하는 새로운 방법, 오픈 소스 소프트웨어!! 감사합니다. Q&A

×