Complexe werkstromen automatiseren met behulp van Grafische modellen bouwen (QGIS3)¶
Werkstromen in GIS omvatten gewoonlijk vele stappen - waarin elke stap een tussenliggend resultaat genereert die wordt gebruikt in de volgende stap. Als u de invoergegevens wijzigt of een parameter aan wilt passen, zult u opnieuw handmatig het gehele proces moeten uitvoeren. Gelukkig heeft QGIS Grafische modellen bouwen ingebouwd dat u kan helpen uw werkstroom te definiëren en die uit te voeren met één enkele druk op de knop. U kunt deze werkstromen ook als batch uitvoeren over een groot aantal invoeren.
Overzicht van de taak¶
We zullen een puntenlaag gebruiken van marietieme incidenten met piraten en een model voor verwerking maken om een dichtheidskaart te produceren door ze samen te voegen over een globaal hexagonaal raster.
Andere vaardigheden die u zult leren¶
Gebruiken van een globale equal area-projectie en instellen van het CRS voor het project.
Toepassen van een symbologie Gradueel op een polygoonlaag.
De gegevens ophalen¶
National Geospatial-Intelligence Agency’s Maritime Safety Information portal verschaft een shapefile van alle incidenten van maritieme piraterij in de vorm van Anti-shipping Activity Messages. Download de Arc Shapefile versie van de database.
Natural Earth heeft verscheidene globale vectorlagen. Download de 10m Physical Vectors - Land die polygonen voor landen bevat.
Voor het gemak kunt u direct een kopie downloaden van bovenstaande lagen vanaf de link hieronder:
Gegevensbron: [NGA_MSI] [NATURALEARTH]
Procedure¶
Zoek, in het paneel QGIS Browser, de map waar u uw gegevens hebt gedownload. Vergroot het item
ne_10m_land.zip
en selecteer de laagne_10m_land.shp
. Sleep de laag naar het kaartvenster. Zoek vervolgens het bestandASAM_shp.zip
op. Vergroot het en selecteer de laagasam_data_download/ASAM_events.shp
en sleep die naar het kaartvenster.
De laag
ASAM 11 OCT 18.shp
heeft geen informatie over de projectie in zich, u zult dus gevraagd worden een CRS te selecteren in Keuze Coördinaten ReferentieSysteem. De punten staan hier in coördinaten van latitude en longitude, dus selecteer het CRSWGS 84
en klik op OK.
Als de laag eenmaal is geladen kunt u de individuele punten zien die locaties van incidenten van piraterij weergeven. Laten we beginnen met het bouwen van ons model voor Processing om deze lagen te verwerken. Ga naar
.
Zoek, in het dialoogvenster Processing - Grafische modellen bouwen…, het paneel Modeleigenschappen op. Voer
piraterij hexbin
in als de Naam van het model enProjecten
als de Groepen. Klik op de knop Opslaan.
Sla het model op als
piraterij_hexbin
.
Nu kunnen we beginnen met het bouwen van een grafisch model van onze pijplijn voor de verwerking. Het dialoogvenster Processing - Modelontwerper bevat een paneel aan de linkerkant en een hoofdvenster. Zoek, in het paneel aan de linkerkant, het paneel Invoer dat verschillende typen voor gegevenstypen voor invoer vermeld. Scroll naar beneden en selecteer de invoer + Vectorlaag. Sleep het naar het kaartvenster.
Voer
Invoer punten
in als de Parameternaam enPunt
als het Type geometrie. Deze invoer geeft de puntenlaag van piraterij-incidenten weer.
Sleep vervolgens nog een andere invoer + Vectorlaag in het kaartvenster. Voer
Basislaag
in als de Parameternaam enPolygoon
als het Type geometrie. Deze invoer geeft de Natural Earth globale landlaag weer.
We vragen, omdat we een globaal hexagonaal raster genereren, de gebruiker om de grootte van het raster op te geven als invoer, in plaats van het hard te coderen als deel van ons model. Op deze manier kan de gebruiker snel experimenteren met verschillende grootten van het raster zonder op enige manier het model aan te passen. Selecteer een invoer + Getal en sleep het in het kaartvenster. Voer
Rastergrootte
in als de Parameternaam en klik op OK.
Nu we onze gebruikersinvoer gedefinieerd hebben, zijn we klaar om de stappen voor de verwerking toe te voegen. Alle algoritmen voor verwerking zijn beschikbaar voor u onder de tab Algoritmen. De eerste stap in onze pijplijn zal zijn om de basislaag opnieuw te projecteren naar het Project CRS. Zoek naar het algoritme
Laag opnieuw projecteren
en sleep het naar het kaartvenster.
Notitie
De noodzakelijkheid van de stap om opnieuw te projecteren zal snel duidelijk worden. Het algoritme voor het genereren van het raster eist van ons om het bereik van het raster te specificeren in de eenheid van het Project CRS. We kunnen deze opnieuw geprojecteerde laag aanbieden om dat bereik te berekenen.
Selecteer, in het dialoogvenster Laag opnieuw projecteren,
Basislaag
als de Invoerlaag. Selecteer Project-CRS gebruiken als het Doel-CRS. Klik op OK.
In het kaartvenster van Processing - Grafische modellen bouwen, zult u een verbinding zien verschijnen tussen de invoer + Basislaag en het algoritme Laag opnieuw projecteren. Deze verbinding geeft de stroomrichting aan van onze pijlijn voor d everwerking. De volgende stap is om een hexagonaal raster te maken. Zoek naar het algoritme
Grid maken
en sleep het naar het kaartvenster.
Kies, in het dialoogvenster Grid maken,
Hexagoon (polygoon)
als het Type raster. SelecteerExtent of 'Opnieuw geprojecteerd' van het algoritme 'Laag opnieuw projecteren'
als het Grid-bereik. Klik op de knop 123 onder het label Horizontale afstand en kies Invoer model.
Selecteer invoer
Rastergrootte
voor Invoer model gebruiken. Herhaal hetzelfde proces voor Verticale afstand. Klik op OK.
Op dit punt hebben we een globaal hexagonaal raster. Het raster omvat het volledige breik van de basislaag, inclusief landgebieden en plaatsen waar geen punten zijn. Laten we die rasterpolygonen waar geen invoerpunten zijn er uit filteren. Zoek naar het algoritme
Extract by location
en sleep het naar het kaartvenster.
Selecteer voor Objecten uitnemen uit
'Raster' van het algoritme 'Grid maken'
, Waar de objecten (geometrisch voorvoegsel) alskruisen met
en Door objecten te vergelijken van alsInvoer punten
. Klik op OK.
Nu hebben we alleen die polygonen van het raster die ook enkele invoerpunten bevatten. We zullen het algoritme
Punten in polygonen tellen
gebruiken om deze punten samen te voegen. Zoek het op en sleep het naar het kaartvenster.
Selecteer
'Uitgenomen (locatie)' from algorithm 'Extract by location'
als de waarde voor Polygonen. De laag:guilabel:Punten zouInvoer punten
moeten zijn. Noem, aan de onderzijde, de uitvoerlaag TellingSamengevoegd
. Klik op OK.
Het model is nu compleet. Klik op de knop Opslaan.
Schakel over naar het hoofdvenster van QGIS. U kunt u nieuw gemaakte model vinden in de Processing Toolbox onder . Nu is het tijd om het uit te voeren en het model te testen. Het is beangrijk dat de ratsers wordne gegenereerd met behulp van een equal-area projectie omdat ons doel is om de invoerpunten samen te voegen in hexagonale rasters. Dit zal er voor zorgen, ongeacht de locatie van het raster, exact hetzelfde gebied te bedekken. Ons model vraagt niet expliciet naar een CRS, maar gebruikt altijd het CRS datis ingesteld als het Project CRS. Laten we een globale equal area projectie kiezen als het Project CRS. Ga naar .
Schakel, in het dialoggvenster Projecteigenschappen, over naar de tab CRS. We zullen een globale Mollweide projectie gebruiken voor deze oefening, wat een equal area projectie is. Zoek naar
Mollweide
in het vak Filter en selecteerWorld_Mollweide EPSG:54009
als het CRS. Klik op OK.
U zult zien dat de lagen direct opnieuw geprojecteerd worden naar het geselecteerde CRS. Zoek naar het model
piraterij_hexbin
in de Processing Toolbox en dubbelklik er op.
Onze Basislaag is de laag
ne_10m_land
en de laag Invoer punten isASAM_events
. De Rastergrootte dient te zijn gespecificeerd in de eenheden van het geselecteerde CRS. De eenheid voor het CRS World_Mollweide is meters, dus specificeren we100000
m (100 Kms) als de Rastergrootte. Klik op Uitvoeren om het verwerken van de pijplijn te beginnen. Klik, als het proces eenmaal is voltooid, op Close.
U zult dien dat een nieuwe laag
Samengevoegd
is geladen als resultaat van het model. Als u verder gaat verkennen zult u opmerken dat de laag een attribuut bevat, genaamd NUMPOINTS, dat het aantal punten van incidenten met piraten bevat binnen dat object van het raster. Laten we deze laag opmaken zodat die informatie beter wordt weergegeven. Klik met rechts op de laagSamengevoegd
en selecteer Eigenschappen.
Schakel naar de tab Symbologie. Selecteer de symbologie
Gradueel
enNUMPOINTS
als de Kolom. Klik opWijizgen…
naast het label Symbool.
Selecteer het symbool Standaard vulling en sekecteer het vak Transparante lijn onder Lijnkleur. Dit om de randen van de hexagonen transparant te maken.
Klik op de keuzelijst naast Kleurverloop en selecteer het kleurverloop
Viridis
. Klik opnieuw op de keuzelijst en selecteer Kleurverloop omdraaien om de volgorde van de kleuren om te draaien.
De symbologie Graduaeel zal de waarden in de geselecteerde kolom verdelen in afzonderlijke klassen en een verschillende kleur aan elk van die klassen toewijzen. Selecteer
Natuurlijke grenzen (Jenks)
als de Modus en klik op Classificeren en klik op OK.
Notitie
bekijk Basis opmaken van vectoren voor een gedetailleerde uitleg van de verschillende modi.
Schakel, terug in het hoofdvenster van QGIS, de laag
ASAM_events
uit. U zult een aardige visualisatie van hotspots van piraterij over de gehele wereld zien.
Nu u de volledige pijplijn voor de gegevens het gecodeerd in het model, is het eenvoudig om uw resultaten te reproduceren. Een model stelt u ook in staat om snel te experimenteren zonder elke keer elke tussenliggende stap opnieuw uit te moeten voeren. Als uw invoer gedurende de tijd wijzigt, bijvoorbeeld een bijgewerkte database van piraterij wordt na een paar maanden uitgegeven, kunt u uw model op die invoer uitvoeren om een soortgelijke visualisatie te genereren zonder elke stap te hoevn onthouden.
If you want to give feedback or share your experience with this tutorial, please comment below. (requires GitHub account)