프로세싱 모델러를 사용하여 복잡한 작업흐름 자동화하기(QGIS3)¶
GIS 작업흐름도는 전형적으로 많은 단계를 포함합니다. 각 단계는 중간 결과물을 만들어 내고 이것은 다음 단계에 사용됩니다. 만약 입력 데이터가 바뀌거나 매개변수를 바꾸고 싶다면 전체 처리 과정을 일일히 다시 분석해야 할 필요가 있습니다. 다행이도, QGIS는 시각적 모델러가 기본적으로 포함되어 있어 작업흐름도를 정의할 수 있고 한번에 구동시킬 수 있습니다. 대량의 입력 데이터도 일괄처리로써 작업흐름도를 구동시킬수도 있습니다.
작업 개요¶
해상 해적행위 사건의 포인트 레이어를 취해서 전세계 육각 그리드에 걸쳐 집계하여 밀도 지도를 제작하는 처리 모델을 만들겠습니다.
이 예제에서 필요한 다른 기술¶
전지구 동일 면적 투영 및 프로젝트 CRS 설정
폴리곤 레이어에 점진적 심볼로지 적용
데이터 획득¶
국립지질정보국의 ‘해양안전정보 포털<https://msi.nga.mil/NGAPortal/MSI.portal>`_은 해적 행위 방지 메시지<https://msi.nga.mil/Piracy>`_.에 있는 형태로 모든 해양 해적 행위를 형상화한 파일을 제공합니다. 데이터베이스의 ‘Arc Shape 파일<https://msi.nga.mil/api/publications/download?key=16920958/SFH00000/ASAM_shp.zip&type=download>`_ 버전을 다운로드하십시오.
`자연 지구 <http://naturalearthdata.com>`_에는 여러 글로벌 벡터 레이어가 있습니다. 랜드 폴리곤이 포함 된`10m 물리 벡터-랜드 <https://www.naturalearthdata.com/http//www.naturalearthdata.com/download/10m/physical/ne_10m_land.zip>`__를 다운로드하십시오.
편의상 위의 레이어 사본을 아래에서 직접 다운로드 할 수 있습니다.
데이터 출처: [NGA_MSI] [NATURALEARTH]
과정¶
QGIS 브라우저 패널에서 다운로드한 데이터를 저장한 디렉터리를 찾으십시오. ``ne_10m_land.zip”을 확장하고 ``ne_10m_land”를 선택하십시오.”shp” 층 레이어를 캔버스로 끌어다 놓으십시오. 그런 다음 “ASAM_shp.zip” 파일을 찾으십시오. 그것을 확장하고 “asam_data_download/ASAM_events.shp”레이어를 선택하고 캔버스로 드래그하십시오..”
``ASAM_events.shp ‘’레이어에는 이와 관련된 투영 정보가 없으므로 `Coordinate Reference System Selector`에서 CRS를 선택하라는 메시지가 표시됩니다. 여기에서 점은 위도 및 경도 좌표에 있으므로``WGS 84 ‘’CRS를 선택하고 `OK`를 클릭하십시오.
레이어가 로드되면 불법 복제 위치의 사건을 나타내는 개별 지점을 볼 수 있습니다. 이러한 레이어를 처리하기 위해 처리 모델 구축을 시작하겠습니다. `Processing-> Graphical Modeler …`로 이동하십시오.
Processing Modeler 대화 상자에서, 모델 속성 패널을 찾으십시오. :Name`으로``piracy hexbin’’을 입력하고 `Groups``로 ``projects ‘’를 입력하십시오. `Save 버튼을 클릭하십시오.
모델을``piracy_hexbin ‘’으로 저장하십시오.
Now we can start building a graphical model of our processing pipeline. The Processing modeler dialog contains a left-hand panel and a main canvas. On the left-hand panel, locate the Inputs panel listing various types of input data types. Scroll down and select the + Vector Layer input. Drag it to the canvas.
`Parameter name`으로``Input Points ‘’를 입력하고 `Geometry type`으로``Point ‘’를 입력하십시오. 이 입력은 불법 사건 지점 계층을 나타냅니다.
다음으로 다른 + Vector Layer 입력을 캔버스로 드래그하십시오. `Parameter name`으로``Base Layer ‘’를 입력하고 `Geometry type`으로``Polygon ‘’을 입력하십시오. 이 입력은 natural earth global land layer을 나타냅니다.
우리는 글로벌 육각그리드를 생성하고 있기 때문에, 사용자에게 격자 크기를 모델의 일부로 하드 코딩하는 대신 입력으로 제공하도록 요청할 수 있습니다. 이러한 방식으로 사용자는 모델을 전혀 변경하지 않고도 다양한 그리드 크기를 빠르게 실험 할 수 있습니다. + Number 입력을 선택하고 캔버스로 드래그하십시오. `Parameter name`으로``Grid Size ‘’를 입력하고 `OK`를 클릭하십시오.
이제 사용자 입력이 정의되었으므로 처리 단계를 추가 할 준비가되었습니다. 모든 처리 알고리즘은 Algorithms 탭에서 사용할 수 있습니다. 파이프 라인의 첫 번째 단계는 기본 계층을 Project CRS에 다시 투영하는 것입니다. ``Reproject layer ‘’알고리즘을 검색하여 캔버스로 드래그하십시오.
참고
이 재투영 단계의 필요성은 곧 분명해질 것입니다. 그리드 생성 알고리즘을 사용하려면 Project CRS 단위로 그리드의 범위를 지정해야합니다. 이 재계산 된 레이어를 제공하여이 범위를 계산할 수 있습니다.
Reproject layer 대화 상자에서 `Input layer`로``Base Layer ‘’를 선택하십시오. `프로젝트 CRS 사용`을 `Target CRS`로 확인하십시오. `OK`를 클릭하십시오.
Processing Modeler 캔버스에서 + Base Layer 입력과 Reproject layer 알고리즘 사이에 연결이 나타납니다. 이 연결은 처리 파이프 라인의 흐름을 나타냅니다. 다음 단계는 육각형 격자를 만드는 것입니다. ``Create grid ‘’알고리즘을 검색하여 캔버스로 드래그하십시오.
Generate grid 대화 상자에서 Grid type`으로``Hexagon (polygon)``을 선택하십시오. `Grid extent`로 ‘Reproject Layer’알고리즘에서 ‘Reprojected’범위 ‘를 선택하십시오. `Horizonal spacing 레이블 아래 123 버튼을 클릭하고 `Model input`을 선택하십시오.
이 시점에서, 우리는 글로벌 육각형 그리드를가집니다. 그리드는 토지 영역과 점이없는 장소를 포함하여 기본 레이어의 전체 범위에 걸쳐 있습니다. 입력 포인트가없는 그리드 폴리곤을 필터링 해 봅시다. ``위치로 추출’’알고리즘을 검색하여 캔버스로 끕니다.
For Extract features from, select
'Grid' from algorithm 'Generate Grid'
, Where the features (geometric predicate) asIntersect
and By comparing to the features from asInput points
. Click OK.
이제 입력 포인트가 포함된 그리드 다각형만 있습니다. 이러한 점을 집계하기 위해 ``다각형의 카운트 점 ‘’알고리즘을 사용합니다. 검색하여 캔버스로 드래그하십시오.
Polygons`의 값으로 ‘Extract by location’알고리즘에서 ‘Extracted (location)’을 선택하십시오. `Points 레이어는``Input Points ‘’입니다. 맨 아래에서 Count 출력 레이어의 이름을``Aggregated ‘’로 지정하십시오. `OK`를 클릭하십시오.
이제 모델이 완성되었습니다. Save 버튼을 클릭하십시오.
메인 QGIS 창으로 전환하십시오. 새로 작성된 모델은 `Processing Toolbox`의 `Models-> projects-> piracy_hexbin에 있습니다. 이제 모델을 실행하고 테스트 할 차례입니다. 우리의 목표는 육각형 그리드를 통해 입력 포인트를 집계하는 것이므로 그리드를 등 면적 투영법을 사용하여 생성하는 것이 중요합니다. 이렇게 하면 그리드의 위치에 관계없이 정확히 같은 영역을 덮을 수 있습니다. 이 모델은 명시 적으로 CRS를 요구하지 않지만 ** 프로젝트 CRS **로 설정된 CRS를 사용합니다. 프로젝트 CRS로 글로벌 등가 투영법을 선택합시다. `Project –> 속성`로 이동하십시오.
프로젝트 속성 대화 상자에서 CRS 탭으로 전환하십시오. 이 연습에서는 등분 투영법 인 글로벌 ** 몰 바이드 ** 투영법을 사용합니다. `Filter ‘상자에서``Mollweide’ ‘를 검색하고 CRS로``World_Mollweide EPSG : 54009’ ‘를 선택하십시오. `OK`를 클릭하십시오.
선택한 CRS에 레이어가 즉석에서 재투영되는 것을 볼 수 있습니다. `Processing Toolbox`에서``piracy_hexbin ‘’모델을 찾아 두 번 클릭하십시오.
우리의 Base Layer ‘는``ne_10m_land’ ‘이고 `Input Points 레이어는``ASAM_events’ ‘입니다. 선택한 CRS 단위로 `Grid Size ‘를 지정해야합니다. World_Mollweide CRS 단위는 미터이므로``100000 ‘’m (100 Kms)을 `Grid Size ‘로 지정합니다. 처리 파이프 라인을 시작하려면 `Run`을 클릭하십시오. 프로세스가 완료되면 `Close`를 클릭하십시오.
모델 결과로``Aggregated ‘’라는 새 레이어가로드 된 것을 볼 수 있습니다. 탐색 할 때 해당 그리드 기능에 포함 된 불법 복제 사건 수를 포함하는 * NUMPOINTS *라는 특성이 레이어에 포함되어 있음을 알 수 있습니다. 이 레이어의 스타일을 지정하여이 정보를 더 잘 표시하십시오. ``Aggregated ‘’레이어를 마우스 오른쪽 버튼으로 클릭하고 `속성`을 선택하십시오.
Symbology 탭으로 전환하십시오. Column`으로``Graduated` 된 ‘’기호와``NUMPOINTS ‘’를 선택하십시오. Symbol 레이블 옆의 ``Change..``을 클릭하십시오.
Simple fill 기호를 선택하고 Stroke color`에서 `Transparent Stroke 버튼을 확인하십시오. 이것은 육각 모서리를 투명하게하기위한 것입니다.
Color ramp 옆에있는 드롭 다운을 클릭하고``Viridis ‘’램프를 선택하십시오. 드롭 다운을 다시 클릭하고 `색상 반전 반전`을 선택하여 색상 순서를 반대로 바꿉니다.
점진적 기호는 선택한 열의 값을 개별 클래스로 나누고 각 클래스에 다른 색상을 지정합니다. `Mode`로``Natural Breaks (Jenks)``를 선택하고 `Classify`를 클릭하고 `OK`를 클릭하십시오.
참고
다른 모드에 대한 자세한 설명은 : doc :`../ basic_vector_styling`을 참조하십시오.
메인 QGIS 창으로 돌아가서``ASAM_events ‘’레이어를 끕니다. 전세계의 불법 해적행위 핫스팟을 멋지게 시각화 할 수 있습니다.
모델에서 전체 데이터 파이프 라인을 인코딩 했으므로 결과를 쉽게 재현 할 수 있습니다. 모델을 사용하면 매번 각 중간 단계를 수동으로 반복하지 않고도 신속하게 실험 할 수 있습니다. 시간이 지남에 따라 입력이 변경되면 몇 개월 후에 업데이트 된 불법 복제 데이터베이스가 릴리스되는 경우 각 입력을 기억할 필요없이 해당 입력에서 모델을 실행하여 유사한 시각화를 생성 할 수 있습니다.
If you want to give feedback or share your experience with this tutorial, please comment below. (requires GitHub account)