공간 조회 실행¶
경고
This tutorial is now obsolete. A new and updated version is available at 공간 조회 실행(QGIS3)
공간조회는 QGIS 분석의 많은 유형에서 핵심적인 내용입니다. QGIS에서 이 기능은 Spatial Query 플러그인을 사용하여 작업을 수행합니다.
과업 개요¶
강을 나타내는 선형 레이어와 도시를 나타내는 점 레이어의 2개 데이터셋을 작업을 합니다. 이 작업은 강으로부터 10km이내 분포하는 도시를 찾는 공간 조회를 하는 것입니다.
기타 스킬¶
QGIS에서 .zip 압출파일을 바로 엽니다.
벡터 데이터에 적절한 투영법을 선택하고 재 투영합니다.
버퍼를 생성합니다.
SQL같은 표현식을 이용하여 객체를 선택합니다.
Shapefile을 KML파일로 전환합니다.
Google Earth를 이용하여 결과를 검증합니다.
데이터 획득¶
Natural Earth에서 ne_10m_rivers_lake_centerlines``와 ``10m_populated_places_simple
데이터셋을 사용합니다.
Download Rivers and Lake Centerlines
`Populated Places <http://www.naturalearthdata.com/http//www.naturalearthdata.com/download/ 10m/cultural/ne_10m_populated_places_simple.zip>`_를 다운로드 합니다.
데이터 출처: [NATURALEARTH]
과정¶
일단 데이터를 다운로드하면 QGIS를 엽니다. 메뉴 –> 메리어 –> 벡터 레이어 추가 :menuselection:`Layer –> Add Vector Layer`로 갑니다.
탐색 :guilabel:`Browse`를 크릭하고 다운로드한 압축파일이 포함된 폴더를 찾습니다.
다중 파일을 선택했으므로 다음 파일을 선택하기위해 과정을 반복합니다. ``10m_populated_places_simple.shp``를 선택하고 :guilabel:`OK`를 클릭합니다.
QGIS에 두 개의 파일이 불러들여지는 것을 보게됩니다.
점과 선레이어 주변에 버퍼가 만들어 질 것입니다. QGIS에서 ‘버퍼’ 지오프로세싱 툴은 버퍼의 거리를 계산하기 위해 ‘레이어 유닛’을 사용합니다. 두 레이어는 degrees`단위를 가진 `Geographic Coordinate Reference System (CRS)`입니다. 이것은 `metres 혹은 `kilometres`를 사용하여 분석을 하고자 할 때에는 적절치 않습니다. 분석을 하기 위해서는 레이러를 `Projected Coordinate Reference System (CRS)`로 반드시 재투영해야 합니다. ``10m_populated_places_simple layer``를 우측클릭하고 새 이름으로 저장 :guilabel:`Save As`을 클릭합니다.
새 이름으로 벡터 레이어 저장하기 Save vector layer as… 다이알로그 박스에서 새임으로 저장 Save as 옆에 있는 탐색 Browse`을 클릭합니다. 출력파일 이름을 ``populated_places_reprojected.shp``로 입력합니다. 다음으로, 좌표계 :guilabel:`CRS 옆에 있는 탐색 Browse 버튼을 클릭합니다.
Now we must choose an appropriate CRS for our purpose. For creating buffers, a Azimuthal Equidistant projection would be best suited as radial distances around the center of the projection are accurate. In our case, since the dataset is global, we will choose a World projection. In the Coordinate Reference System Selector dialog, start searching for world az.. and you will see the results show up. Select the World_Azimuthal_Equidistant and click OK.
참고
The World_Azimuthal_Equidistant projection spans 90 degrees from the origin. Here the origin being 0 degrees longitude, the only data contained within +/- 90 degrees longitude will be converted.
새 이름으로 벡터레이어 저장하기 Save vector layer as … 다아일로그로 되돌아가서 저장된 파일을 지도에 추가 Add saved file to map 옆에 있는 박스를 체크하고 `OK`를 클릭합니다.
``ne_10m_rivers_lake_centerlines``레이어 대해 재투영과정을 반복하고, ``rivers_lake_reprojected.shp``로 새로운 레이어를 저장합니다.
이제 레이어 판넬 Layers Panel`에 4개의 레이어가 생깁니다. 원래의 레이어 옆에 있는 박스에서 체크해제하고 오로지 재투영된 레이어만 나타냅니다. 재투영된 레이어는 여전히 `Geographic CRS`로 보여지는데 이는 세팅때문입니다. 이것을 꺼보도록 하겠습니다. 프로젝트 속성 :guilabel:`Project Properties 단추를 클릭합니다. 이 세팅은 메뉴 프로젝트 –> 프로젝트 속성 :menuselection:`Project –> Project Properties`에서도 접근할 수 있습니다.
프로젝트 속성 Project Properties 다이알로그의 좌표계 CRS`탭에서 ‘실시간’ 좌표계 변환 활성화 :guilabel:`Enable on-the-fly CRS transformation 옆에 있는 박스를 체크해제 합니다. :guilabel:`OK`를 클릭합니다.
QGIS 메인 창으로 되돌아 와서 재투영된 아무 레이어나 우측클릭하고 레이어 영역으로 확대 :guilabel:`Zoom to Layer Extent`를 선택합니다.
이제 레이어의 CRS에서 데이터를 보게 됩니다. 이제 두 데이터셋에 대한 버퍼를 만들어 보겠습니다. 메뉴 벡터 –> 공간연산도구 –> 버퍼 :menuselection:`Vector –> Geoprocessing Tools –> Buffer`를 클릭합니다.
버퍼 :guilabel:`Buffer`도구에서 ``populated_places_reprojected``레이어를 입력 레이어로 선택합니다. 버퍼 거리를 `10000`으로 입력합니다. 만들고자 하는 버퍼의 거리는 10km을 명심하고 CRS 단위가 미터이므로 10,000을 입력할 필요가 있습니다. 출력파일명으로 ``populated_places_buffer.shp``를 입력합니다. :guilabel:`OK`를 클릭합니다.
일단 버퍼 작업이 끝나면 새롭게 만들어진 레이어를 TOC에 추가하기 위해 :guilabel:`Yes`를 클릭합니다.
``rivers_lake_buffer``는 강과 호수 객체 둘 다를 포함합니다. 이 예제에서는 오로지 강 객체만 요구되므로 조회를 통해 강 객체만 선택합니다. ``rivers_lake_buffer``레이어를 우측클릭하고 속성 테이블 열기 :guilabel:`Open Attribute Table`를 선택합니다.
featurecla 속성이 각 객체를 선택하는데 사용할 수 있는 정보를 포함하고 있습니다. 표현식을 이용해 객체 선택 Select features using an expression 버튼을 클릭합니다.
표현식 “featurecla” = “River” 를 입력하고 선택 :guilabel:`Select`을 클릭한 다음 QGIS로 ㅗ디돌아 가기 위해 닫기 :guilabel:`Close`를 클릭합니다.
이제 공간조회를 수행할 준비가 되었습니다. 이 기능을 사용하기 위해 Spatial Query plugin 을 활성화할 필요가 있습니다. 보다 자세한 사항은 :doc:`using_plugins`를 보십시오. 일단 메뉴 벡터 –> 공간검색 –> 공간검색 :menuselection:`Vector –> Spatial Query –> Spatial Query`으로 갑니다.
조회를 하기 위해서 버퍼분석이 완료된 강의 선과 교차되는 버퍼 지역으로부터 객체를 선택합니다. 선택된 지오메트리 selected geometries 옆의 박스가 체크되어 있는지 확인합니다. 이것은 조회를 확실하게 수행하기 위한 것으로 전에 선택된 강 객체만 사용합니다. 적용 :guilabel:`Apply`을 클릭합니다.
일단 조회가 완료되면 선택된 객체 :guilabel:`Selected features`라는 이름의 새로운 섹션이 나타날 것입니다. 선택된객체로 레이어 만들기 :guilabel:`Create layer with selected`버튼을 클릭합니다. 새로운 레이어가 레이어판넬 `Layers Panel`에 추가될 것입니다. 닫기 :guilabel:`Close`를 클릭하십시오.
아무 곳이나 확대를 하고 결과를 비교하십시오. 새로운 레이어는 단지 강 버퍼와 교차되는 객체만 포함하고 있음을 알게될 것입니다.
분석에 문제는 없는지 확인하기 위해 결과를 항상 검증해야 합니다. 결과를 검증하는 한 가지 방법은 이 레이어를 KML파일로 내보내기를 해서 구슬어스에 올려보는 것입니다. 분석결과로 나온 지역이 실제로 강으로부터 10km이내인지 아닌지 검토할 수 있습니다. 레이어를 우측클릭하고 새이름으로 저장 :guilabel:`Save As…`을 선택합니다.
새 이름으로 벡터 레이어 저장하기 :guilabel:`Save vector layer as…`에서 좌표계로 `WGS84`를 선택합니다. 왜냐하면 KML포맷은 좌표계에 있는 좌표가 필요하기 때문입니다. ``cities_near_river.kml``라고 KML파일명을 입력합니다.
구슬어스를 열고 이 버퍼가 표시하는 도시가 강과 실제로 인접한지를 검증합니다.
If you want to give feedback or share your experience with this tutorial, please comment below. (requires GitHub account)