22. Integratie van GRASS GIS¶
Integreren van GRASS verschaft toegang tot databases van GRASS GIS en functionaliteiten (zie GRASS-PROJECT in Verwijzingen naar literatuur en web). De integratie bestaat uit twee delen: provider en plug-in. De provider maakt het mogelijk GRASS vector- en rasterlagen door te bladeren, te beheren en te visualiseren. De plug-in kan worden gebruikt om nieuwe locaties en mapsets voor GRASS te maken, GRASS regio te wijzigen,vectorlagen te maken en te bewerken en gegevens in GRASS 2-D en 3-D te analyseren met meer dan 400 modules voor GRASS. In dit gedeelte zullen we de functionaliteiten van de provider en de plug-in behandelen en enkele voorbeelden geven van het beheren van en werken met gegevens van GRASS.
De provider ondersteunt de versies van GRASS 6 en 7, de plug-in ondersteunt GRASS 6 en 7 (vanaf QGIS 2.12). De distributie van QGIS kan ofwel de provider/plug-in voor GRASS 6 of GRASS 7 bevatten of beide versies tegelijkertijd (binaries hebben andere bestandsnamen). In runtime kan echter slechts één versie van de provider/plug-in worden geladen.
22.1. Demo gegevensset¶
Als voorbeeld zullen we de voorbeeld gegevensset van Alaska voor QGIS gebruiken (zie gedeelte Voorbeeldgegevens downloaden). Het bevat een klein voorbeeld van een GRASS LOCATION
met drie vectorlagen en één raster hoogtekaart. Maak een nieuwe map genaamd grassdata
, download de gegevensset ‘Alaska’ qgis_sample_data.zip
voor QGIS vanaf https://qgis.org/downloads/data/ en pak het bestand uit in grassdata
.
Meer voorbeelden voor LOCATION's
van GRASS zijn beschikbaar op de website van GRASS op https://grass.osgeo.org/download/sample-data/.
22.2. GRASS raster- en vectorlagen laden¶
Als de provider is geladen in QGIS, wordt het item voor de locatie met het pictogram voor GRASS toegevoegd in de boom van de browser onder elk item van de map dat een locatie voor GRASS bevat. Ga naar de map grassdata
en vergroot de locatie alaska
en de mapset demo
.
U kunt raster- en vectorlagen voor GRASS net als elke andere laag openen vanuit de browser door te dubbelklikken op een laagitem of door het te slepen en neer te zetten in het kaartvenster of de legenda.
Tip
GRASS–Laden van gegevens
Als u het item voor de locatie van GRASS niet ziet, verifieer dan in
of de GRASS vector provider is geladen.22.3. Importeren van gegevens in een GRASS LOCATION via slepen en neerzetten¶
Dit gedeelte geeft een voorbeeld van hoe gegevens voor raster en vector te importeren in een mapset van GRASS.
Navigeer in de browser van QGIS naar de mapset waarin u gegevens wilt importeren.
Zoek in de browser van QGIS naar een laag die u wilt importeren in GRASS, onthoud dat u een andere instantie van de browser (Paneel Browser (2)) kunt openen als de brongegevens te ver van de mapset in de boom staan.
Sleep een laag en zet die in de doel-mapset. Het importeren kan enige tijd vergen voor grote lagen, u zult een geanimeerd pictogram zien vóór het item van de nieuwe laag totdat de import is voltooid.
Waar rastergegevens in een ander CRS staan, kunnen zij opnieuw worden geprojecteerd met behulp van een transformatie Approximate (fast) of Exact (precise). Als een koppeling naar het bronraster wordt gemaakt (met behulp van r.external
), de brongegevens in hetzelfde CRS staan en de indeling bekend is bij GDAL, zal het CRS van de brongegevens worden gebruikt. U kunt deze opties instellen op de tab Browser in GRASS Opties.
Als een bronraster meerdere banden heeft, wordt een nieuwe kaart voor GRASS gemaakt voor elke laag met het achtervoegsel .<band nummer> en een pictogram voor een groep van alle mappen. Externe rasters hebben een afwijkend pictogram .
22.4. Gegevens voor GRASS beheren in QGIS Browser¶
Kaarten kopiëren: Kaarten voor GRASS kunnen tussen mapsets op dezelfde locatie worden gekopieerd met behulp van slepen en neerzetten.
Kaarten verwijderen: Klik met rechts op een kaart voor GRASS en selecteer Delete uit het contextmenu.
Kaarten hernoemen: Klik met rechts op een kaart voor GRASS en selecteer Rename uit het contextmenu.
22.5. GRASS Opties¶
Opties voor GRASS kunnen worden ingesteld in het dialoogvenster GRASS Options, dat kan worden geopend door met rechts te klikken op het item voor de locatie of mapset in de browser en dan te kiezen GRASS Options.
22.6. De plug-in GRASS starten¶
U moet de plug-in GRASS selecteren en laden met Plug-ins beheren en installeren om de functionaliteiten van GRASS te kunnen gebruiken in QGIS. Ga daarom naar het menu , selecteer GRASS en klik op OK.
De volgende belangrijkste mogelijkheden worden verschaft in het menu GRASS (
) als u de plug-in GRASS start:22.7. GRASS mapset openen¶
Een mapset voor GRASS moet zijn geopend om toegang te krijgen tot de gereedschappen van GRASS in de plug-in (de gereedschappen zijn uitgeschakeld als er geen mapset is geopend). U kunt een mapset vanuit de browser openen: klik met rechts op het item van de mapset en kies dan Mapset openen uit het contextmenu.
22.8. GRASS LOCATION en MAPSET¶
Gegevens voor GRASS worden opgeslagen in een map waarnaar wordt verwezen als GISDBASE. Deze map, vaak grassdata
genaamd, moet worden gemaakt vóórdat u met de plug-in GRASS gaat werken in QGIS. Binnen deze map zijn de GIS-gegevens van GRASS georganiseerd in projecten die zijn opgeslagen in submappen, genaamd LOCATION's
. Elke LOCATION
wordt gedefinieerd door zijn coördinatensysteem, kaartprojectie en geografische grenzen. Elke LOCATION
kan verscheidene MAPSET's
(submappen van LOCATION
) hebben, die worden gebruikt om het project op te delen in verschillende onderwerpen of subregio’s, of als werkruimte voor individuele teamleden (zie Neteler & Mitasova 2008 in Verwijzingen naar literatuur en web). Over het algemeen moet u, om vector- en rasterlagen met modules van GRASS te analyseren, ze importeren in een GRASS LOCATION
. (Dit is niet helemaal waar – met de modules voor GRASS r.external
en v.external
kunt u koppelingen maken die alleen-lezen zijn naar externe gegevenssets, die door GDAL/OGR ondersteund worden, zonder ze te importeren. Dit is echter niet de normale manier voor beginners om te werken met GRASS, en daarom zal deze functionaliteit hier niet worden beschreven.)
22.9. Importeren van gegevens in een GRASS LOCATION¶
Bekijk het gedeelte Importeren van gegevens in een GRASS LOCATION via slepen en neerzetten om uit te vinden hoe gegevens eenvoudig kunnen worden geïmporteerd door te slepen en neer te zetten in de browser.
Dit gedeelte geeft een voorbeeld van hoe raster- en vectorgegevens te importeren in de ‘alaska’ GRASS LOCATION
verschaft door de gegevensset ‘Alaska’ van QGIS. Daarom gebruiken we de rasterkaart voor landbedekking landcover.img
en het vector GML-bestand lakes.gml
uit de gegevensset ‘Alaska’ van QGIS (zie Voorbeeldgegevens downloaden).
Start QGIS en zorg er voor dat de plug-in GRASS is geladen.
Klik, op de werkbalk van GRASS, op het pictogram Mapset openen om de assistent MAPSET te laten zien.
Selecteer als database van GRASS de map
grassdata
in de gegevensset Alaska van QGIS, alsLOCATION
‘alaska’, alsMAPSET
‘demo’ en klik op OK.Klik nu op het pictogram GRASS–gereedschap openen. Het dialoogvenster van de Toolbox van GRASS (zie gedeelte De Toolbox voor GRASS) verschijnt.
Klik op de module
r.in.gdal
op de tab Modulen Boom om de rasterkaartlandcover.img
te importeren. Deze module voor GRASS stelt u in staat GDAL-ondersteunde rasterbestanden te importeren in eenLOCATION
van GRASS. Het dialoogvenster voor de moduler.in.gdal
verschijnt.Blader naar de map
raster
in de gegevensset ‘Alaska’ van QGIS en selecteer het bestandlandcover.img
.Definieer, als naam voor het uitvoer rasterbestand,
landcover_grass
en klik op Uitvoeren. Op de tab Output ziet u de momenteel uitgevoerde opdracht voor GRASSr.in.gdal -o input=/pad/naar/landcover.img output=landcover_grass
.Klik, wanneer het zegt Met succes voltooid, op Uitvoer bekijken. De rasterlaag
landcover_grass
is nu geïmporteerd in GRASS en zal worden gevisualiseerd in het kaartvenster van QGIS.Klik op de module
v.in.ogr
op de tab Modulen Boom om het vector GML-bestandlakes.gml
te importeren. Deze module voor GRASS stelt u in staat OGR-ondersteunde vectorbestanden te importeren in eenLOCATION
van GRASS. Het dialoogvenster voor de modulev.in.ogr
verschijnt.Blader naar de map
gml
in de gegevensset ‘Alaska’ van QGIS en selecteer het bestandlakes.gml
als OGR-bestand.Definieer, als naam voor het uitvoer vectorbestand,
lakes_grass
en klik op Uitvoeren. U hoeft zich in dit voorbeeld geen zorgen te maken over de andere opties. Op de tab Output ziet u de momenteel uitgevoerde opdracht van GRASSv.in.ogr -o dsn=/pad/naar/lakes.gml output=lakes\_grass
.Klik, wanneer het zegt Met succes voltooid, op Uitvoer bekijken. De vectorlaag
lakes_grass
is nu geïmporteerd in GRASS en zal worden gevisualiseerd in het kaartvenster van QGIS.
22.9.1. Maken van een nieuwe GRASS LOCATION¶
Als voorbeeld is hier het voorbeeld GRASS LOCATION alaska
, wat is geprojecteerd in de projectie Albers Equal Area met behulp van feet als eenheid. Dit voorbeeld GRASS LOCATION alaska
zal worden gebruikt voor alle voorbeelden en oefeningen in de volgende aan GRASS gerelateerde gedeelten. Het is nuttig om de gegevensset naar uw computer te downloaden en te installeren (zie Voorbeeldgegevens downloaden).
Start QGIS en zorg er voor dat de plug-in GRASS is geladen.
Visualiseer het shapefile
alaska.shp
(zie gedeelte Een laag uit een bestand laden) uit de gegevensset Alaska van QGIS (zie Voorbeeldgegevens downloaden).Klik, op de werkbalk van GRASS, op het pictogram Nieuwe mapset om de assistent MAPSET te laten verschijnen.
Selecteer een bestaande GRASS-database (GISDBASE) map
grassdata
, of maak een nieuweLOCATION
met behulp van een bestandsbeheerder op uw computer. Klik dan op Next.We kunnen deze assistent gebruiken om een nieuwe
MAPSET
binnen een bestaandeLOCATION
te maken (zie het gedeelte Toevoegen van een nieuwe MAPSET) of om een geheel nieuweLOCATION
te maken. Selecteer Nieuwe locatie maken (zie Fig. 22.2).Voer een naam in voor de
LOCATION
– wij gebruikten ‘alaska’ – en klik op Next.Definieer de projectie door te klikken op de optieknop Projectie om de lijst met projecties in te schakelen.
We gebruiken de projectie Albers Equal Area Alaska (feet). Omdat wij weten dat die wordt weergegeven door de EPSG ID 2964, voeren we die in het zoekvak in. (Opmerking: Als u dit proces wilt herhalen voor een andere
LOCATION
en projectie en vergeten bent het EPSG ID te onthouden, klik op het pictogram CRS Status in de rechterbenedenhoek van de statusbalk (zie gedeelte Werken met projecties)).In Filter, voer 2964 in om de projectie te selecteren.
Klik op Next.
We moeten de grenzen voor de
LOCATION
in de richtingen Noord, Zuid, Oost en West invoeren, om de standaardregio te definiëren. Hier klikken we eenvoudigweg op de knop Gebruik huidige QGIS -bereik, om het bereik van de geladen laagalaska.shp
als bereik voor de standaard regio in GRASS toe te passen.Klik op Next.
We moeten ook een
MAPSET
definiëren binnen onze nieuweLOCATION
(dit is nodig bij het maken van een nieuweLOCATION
). U mag het de naam geven die u wilt - wij gebruikten ‘demo’. GRASS maakt automatisch een specialeMAPSET
, genaamdPERMANENT
, ontworpen om de brongegevens voor het project op te slaan, het standaard ruimtelijke bereik en de definities van het coördinatensysteem (zie Neteler & Mitasova 2008 in Verwijzingen naar literatuur en web).Controleer de samenvatting om te zien of die juist is en klik op Finish.
De nieuwe
LOCATION
, ‘alaska’, en de tweeMAPSETs
, ‘demo’ en ‘PERMANENT’, zijn gemaakt. De momenteel geopende werkset is ‘demo’, zoals u heeft gedefinieerd.Merk op dat enkele gereedschappen op de werkbalk van GRASS, die uitgeschakeld waren, nu zijn ingeschakeld.
Als dat veel stappen lijken te zijn, het is eigenlijk niet zo slecht en een hele snelle manier om een LOCATION
te maken. De LOCATION
‘alaska’ is nu gereed voor het importeren van gegevens (zie gedeelte Importeren van gegevens in een GRASS LOCATION). U kunt ook de reeds bestaande vector- en rastergegevens gebruiken uit het voorbeeld van GRASS LOCATION
‘alaska’, opgenomen in de gegevensset ‘Alaska’ van QGIS Voorbeeldgegevens downloaden, en doorgaan naar het gedeelte Het GRASS vectorgegevensmodel.
22.9.2. Toevoegen van een nieuwe MAPSET¶
Een gebruiker heeft alleen schrijfrechten voor een MAPSET
van GRASS die hij of zij zelf heeft gemaakt. Dit betekent dat, naast toegang tot uw eigen MAPSET
, u mappen in MAPSET's
van andere gebruikers kunt lezen (en zij kunnen die van u lezen), maar u kunt alleen mappen aanpassen of verwijderen vanuit uw eigen MAPSET
.
Alle MAPSET's
bevatten een bestand WIND
dat de huidige waarden voor coördinaten voor de grenzen opslaat en de huidige geselecteerd rasterresolutie (zie Neteler & Mitasova 2008 in Verwijzingen naar literatuur en web, en het gedeelte Het GRASS–gereedschap regio).
Start QGIS en zorg er voor dat de plug-in GRASS is geladen.
Klik, op de werkbalk van GRASS, op het pictogram Nieuwe mapset om de assistent MAPSET te laten verschijnen.
Selecteer de GRASS database (GISDBASE)-map
grassdata
met deLOCATION
‘alaska’, waar we nog eenMAPSET
zullen toevoegen, genaamd ‘test’.Klik op Next.
We kunnen deze assistent gebruiken om een nieuwe
MAPSET
binnen een bestaandeLOCATION
te maken of om een geheel nieuweLOCATION
te maken. Klik op de optieknop Selecteer een locatie (zie Fig. 22.2) en klik op Next.Voer de naam
test
in voor de nieuweMAPSET
. Onder in de assistent ziet u een lijst van bestaandeMAPSET's
en corresponderende eigenaren.Klik op Next, controleer de samenvatting om te zien of die juist is en klik op Finish.
22.10. Het GRASS vectorgegevensmodel¶
Het is belangrijk om het GRASS vectorgegevensmodel te begrijpen, voorafgaande aan het digitaliseren. In het algemeen gebruikt GRASS een topologisch vectormodel. Dit betekent dat gebieden niet worden weergegeven als gesloten polygonen, maar door één of meer grenzen. Een grens tussen twee aaneengesloten gebieden wordt slechts één keer gedigitaliseerd, en het wordt gedeeld door beide gebieden. Grenzen moeten zijn verbonden en zonder gaten zijn gesloten. Een gebied wordt geïdentificeerd (en gelabeld) door het zwaartepunt van het gebied.
Naast grenzen en zwaartepunten kan een vectorkaart ook punten en lijnen bevatten. Al deze elementen voor geometrie kunnen worden gemixt in één vector en zullen worden weergegeven in verschillende, zogenaamde ‘lagen’, binnen één vectorkaart van GRASS. Dus in GRASS, is een laag geen vector- of rasterkaart, maar een niveau binnen een vectorlaag. Het is belangrijk om dit verschil zorgvuldig te onderscheiden. (Hoewel het mogelijk is om elementen voor geometrie te mixen, het is ongebruikelijk en, zelfs in GRASS, alleen gebruikt in speciale gevallen, zoals vector netwerkanalyses. Normaal gesproken zou u de voorkeur hebben voor het opslaan van verschillende elementen voor geometrie in verschillende lagen.)
Het is mogelijk om verscheidene ‘lagen’ op te slaan in één vector-gegevensset. Bijvoorbeeld: velden, bossen en meren kunnen worden opgeslagen in één vector. Een aansluitend bos en meer kunnen dezelfde grens delen, maar zij hebben afzonderlijk attributentabellen. Het is ook mogelijk attributen te verbinden aan grenzen. Een voorbeeld zou kunnen zijn het geval waar de grens tussen een meer en een bos een weg is, dus kan het een verschillende attributentabel hebben.
De ‘laag’ van het object wordt gedefinieerd door de ‘laag’ binnen GRASS. ‘Laag’ is het getal dat definieert of er meer dan één laag binnen de gegevensset is (bijv. als de geometrie bos of meer is). Momenteel mag het alleen een getal zijn. In de toekomst zal GRASS ook namen als velden in de gebruikersinterface ondersteunen.
Attributen kunnen binnen de LOCATION
van GRASS worden opgeslagen als dBase, SQLite3 of in externe databasetabellen, bijvoorbeeld PostgreSQL, MySQL, Oracle, etc.
Attributen in databasetabellen worden aan elementen van geometrie gekoppeld door middel van een waarde ‘categorie’.
‘Category’ (sleutel, ID) is een integer die is verbonden met geometrie-primitieven, en het wordt gebruikt als de koppeling naar één sleutelkolom in de databasetabel.
Tip
Het GRASS vectorgegevensmodel leren
De beste manier om het vectormodel van GRASS en de mogelijkheden daarvan te leren is om één van de vele handleidingen voor GRASS te downloaden waar het vectormodel dieper wordt beschreven. Zie https://grass.osgeo.org/documentation/manuals/ voor meer informatie, boeken en handleidingen in verschillende talen.
22.11. Maken van een nieuwe GRASS vectorlaag¶
Selecteer een van de volgende items uit het contextmenu van de mapset in de browser om een nieuwe vectorlaag voor GRASS te maken:
Nieuwe puntlaag
Nieuwe lijnlaag
Nieuwe polygoonlaag
en voer een naam in in het dialoogvenster. Een nieuwe vectorkaart zal worden gemaakt en de laag zal worden toegevoegd aan het kaartvenster en bewerken gestart. Selecteren van het type laag beperkt niet de typen geometrie die kunnen worden gedigitaliseerd in de vectorkaart. In GRASS is het mogelijk alle soorten typen geometrie (punt, lijn en polygoon) in één vectorkaart te organiseren. Het type wordt alleen gebruikt om de laag toe te voegen aan het kaartvenster, omdat QGIS vereist dat een laag een specifiek type moet hebben.
Het is ook mogelijk lagen toe te voegen aan bestaande vectorkaarten door een van de items te selecteren die hierboven zijn beschreven in het contextmenu van de bestaande vectorkaart.
In GRASS is het mogelijk alle soorten typen geometrie (punt, lijn en gebied) te beheren in één laag, omdat GRASS een topologisch vectormodel gebruikt, dus hoeft u niet het type geometrie te selecteren bij het maken van een nieuwe vector in GRASS. Dit verschilt van het maken van een shapefile met QGIS omdat shapefiles het vectormodel Eenvoudig object gebruiken (zie gedeelte Nieuwe vectorlagen maken).
22.12. Digitaliseren en bewerken van een GRASS vectorlaag¶
Vectorlagen van GRASS kunnen worden gedigitaliseerd met behulp van de standaardgereedschappen voor digitaliseren van QGIS. Er zijn echter enige bijzonderheden die u zou moeten weten, vanwege
GRASS topologisch model versus QGIS eenvoudige object
complexiteit van het model van GRASS
meerdere lagen in enkele kaarten
meerdere typen geometrie in enkele kaarten
delen van geometrie door meerdere objecten vanuit meerdere lagen
De bijzonderheden worden besproken in de volgende gedeelten.
Opslaan, wijzigingen verwerpen, ongedaan maken, opnieuw
Waarschuwing
Alle wijzigingen die tijdens het bewerken worden gemaakt, worden onmiddellijk weggeschreven naar de vectorkaart en gerelateerde attributentabellen.
Wijzigingen worden weggeschreven na elke bewerking, het is echter mogelijk wijzigingen ongedaan te maken/opnieuw te doen of te verwerpen bij het afsluiten van het bewerken. Als ongedaan maken of wijzigingen verwerpen zijn gebruikt, wordt de originele status opnieuw weggeschreven naar de vectorkaart en de attributentabellen.
Er zijn twee belangrijke redenen voor dit gedrag:
Het zit in de genen van GRASS vectors vanuit de overtuiging dat de gebruiker weet wat hij doet en dat het beter is om de gegevens opgeslagen te hebben als het werk plotseling wordt onderbroken (bijvoorbeeld uitval van electriciteit)
Noodzakelijk voor het effectief bewerken van topologische gegevens is gevisualiseerde informatie over topologische juistheid, zoals wanneer informatie alleen kan worden verkregen van een GRASS vectorkaart als wijzigingen naar de kaart zijn weggeschreven.
Werkbalk
De ‘werkbalk Digitaliseren’ heeft enkele specifieke gereedschappen wanneer een laag van GRASS wordt bewerkt:
Pictogram |
Gereedschap |
Doel |
---|---|---|
Nieuw punt |
Nieuw punt digitaliseren |
|
Nieuwe lijn |
Nieuwe lijn digitaliseren |
|
Nieuwe grens |
Nieuwe grens digitaliseren |
|
Nieuw zwaartepunt |
Nieuw zwaartepunt digitaliseren (label bestaand gebied) |
|
Nieuwe gesloten grens |
Nieuwe gesloten grens digitaliseren |
Tabel GRASS Digitaliseren: GRASS Gereedschap Digitaliseren
Tip
Digitaliseren van polygonen in GRASS
Wanneer u een polygoon wilt maken in GRASS, digitaliseert u eerst de grens van de polygoon. Dan voegt u een zwaartepunt (labelpunt) in de gesloten begrenzing in. De reden hiervoor is dat een topologisch vectormodel de informatie voor het attribuut van een polygoon altijd koppelt aan het zwaartepunt en niet aan de grens.
Categorie
Categorie, vaak cat genaamd, is een soort ID. De naam komt uit de tijd dat GRASS vectors slechts één enkel attribuut hadden “category”. Categorie wordt gebruikt als een koppeling tussen geometrie en attributen. Eén enkele geometrie kan meerdere categorieën hebben en dus meerdere objecten in verschillende lagen weergeven. Momenteel is het mogelijk slechts één categorie per laag toe te wijzen met behulp van de gereedschappen voor bewerken van QGIS. Nieuwe objecten krijgen automatisch een nieuwe unieke categorie toegewezen, behalve begrenzingen. Begrenzingen vormen gewoonlijk alleen gebieden en geven geen lineaire objecten weer, het is echter mogelijk om attributen voor een begrenzing later te definiëren, bijvoorbeeld op een andere laag.
Nieuwe categorieën worden altijd alleen gemaakt in de momenteel bewerkte laag.
Het is niet mogelijk meerdere categorieën toe te wijzen aan geometrie met behulp van bewerken van QGIS, dergelijke gegevens worden juist weergegeven als meerdere objecten, en individuele objecten, zelfs uit verschillende lagen, kunnen worden verwijderd.
Attributen
Alleen attributen van de momenteel bewerkte laag kunnen worden gewijzigd. Als de vectorkaart meer lagen bevat, zullen de objecten van alle andere lagen alle attributen hebben ingesteld op ‘<not editable (layer #)>’ om u te waarschuwen dat een dergelijk attribuut niet te bewerken is. De reden hiervoor is, dat andere lagen verschillende sets velden zouden kunnen hebben, en gewoonlijk ook hebben, terwijl QGIS slechts één vaste set velden per laag ondersteunt.
Als een geometrie primitief geen toegewezen categorie heeft, wordt automatisch een nieuwe unieke categorie toegewezen en wordt een nieuw record in de attributentabel gemaakt wanneer een attribuut van die geometrie wordt gewijzigd.
Tip
Als u een bulk update van attributen in de tabel wilt doen, bijvoorbeeld met behulp van ‘Veldberekening’ (Veldberekening gebruiken), en er zijn objecten zonder categorie die u niet wilt bijwerken (gewoonlijk grenzen), kunt u die er uit filteren door ‘Advanced Filter’ in te stellen op cat is not null
.
Stijl bewerken
De topologische symbologie is essentieel voor effectief bewerken van topologische gegevens. Wanneer het bewerken begint, wordt een speciale renderer ‘GRASS Edit’ automatisch op de laag ingesteld en de originele renderer wordt hersteld als het bewerken wordt afgesloten. De stijl kan worden aangepast in de Laageigenschappen op de tab ‘Stijl’. De stijl kan ook worden opgeslagen in het projectbestand of in een afzonderlijk bestand zoals elke andere stijl. Als u de stijl aanpast, wijzig dan niet de naam, omdat die wordt gebruikt om de stijl te herstellen als het bewerken weer opnieuw wordt gestart.
Tip
Sla het projectbestand niet op wanneer de laag niet wordt bewerkt, de laag zou worden opgeslagen met ‘Stijl bewerken’ wat geen betekenis heeft als de laag niet wordt bewerkt.
De stijl is gebaseerd op topologische informatie die tijdelijk aan de attributentabel wordt toegevoegd als het veld ‘topo_symbol’. Het veld wordt automatisch verwijderd als het bewerken wordt afgesloten.
Tip
Verwijder niet het veld ‘topo_symbol’ uit de attributentabel, dat zou objecten onzichtbaar maken omdat de renderer is gebaseerd op die kolom.
Snappen
Hoekpunten van verbonden grenzen moeten exact dezelfde coördinaten hebben om een gebied te vormen. Dit kan alleen worden bereikt met behulp van het gereedschap Snappen als het kaartvenster en vectorkaart hetzelfde CRS hebben. Anders kunnen, vanwege de conversie van kaartcoördinaten naar kaart en terug, de coördinaten enigszins anders worden vanwege de fout in de weergave en transformaties van CRS.
Tip
CRS van lagen ook gebruiken bij bewerken van kaartvenster.
Beperkingen
Gelijktijdig bewerken van meerdere lagen in dezelfde vector op hetzelfde moment wordt niet ondersteund. Dat komt vooral door de onmogelijkheid van het afhandelen van meerdere stapels Ongedaan maken voor één enkele gegevensbron.
Op Linux en macOS kan slechts één laag voor GRASS op enig moment worden bewerkt. Dit is vanwege een bug in GRASS die niet toestaat om besturingsprogramma’s voor databases te sluiten in willekeurige volgorde. Dit wordt opgelost met ontwikkelaars van GRASS.
Tip
GRASS Rechten voor bewerken
U moet de eigenaar zijn van de MAPSET
van GRASS die u wilt bewerken. Het is onmogelijk om gegevenslagen te bewerken in een MAPSET
die niet van u is, zelfs niet als u schrijfrechten heeft.
22.13. Het GRASS–gereedschap regio¶
De definitie van een regio (instellen van een ruimtelijk werkvenster) in GRASS is belangrijk voor het werken met rasterlagen. Vectoranalyses zijn standaard niet beperkt tot definities van gedefinieerde regio´s. Maar alle nieuwe gemaakte rasters zullen de ruimtelijke extensie en resolutie van de huidige gedefinieerde regio in GRASS hebben, ongeacht hun originele extensie en resolutie. De huidige regio van GRASS is opgeslagen in het bestand $LOCATION/$MAPSET/WIND
, en het definieert de grenzen voor Noord, Zuid, Oost en West, aantal kolommen en rijen, horizontale en verticale ruimtelijke resolutie.
Het is mogelijk de visualisatie van de regio van GRASS in het kaartvenster van QGIS in of uit te schakelen met behulp van de knop Huidige GRASS-regio tonen.
De regio kan worden aangepast op de tab ‘Regio’ in het vastgezette widget ‘GRASS-gereedschap’. Typ de nieuwe grenzen voor de regio in en de resolutie, en klik op Apply. Als u klikt op Selecteer het bereik door te slepen over het kaartvenster kunt u interactief een nieuwe regio kiezen met uw muis op het kaartvenster van QGIS door een rechthoek te slepen.
De module voor GRASS g.region
verschaft nog veel meer parameters om een toepasselijk bereik voor een regio en resolutie voor uw rasteranalyses te definiëren. U kunt deze parameters gebruiken met de Toolbox voor GRASS, beschreven in het gedeelte De Toolbox voor GRASS.
22.14. De Toolbox voor GRASS¶
Het vak GRASS-gereedschap openen verschaft functionaliteiten voor modules van GRASS om met gegevens binnen een geselecteerde LOCATION
en MAPSET
voor GRASS te werken. U dient een LOCATION
en MAPSET
te openen waarvoor u schrijfrechten heeft toegekend gekregen (gewoonlijk toegekend als u de MAPSET
zelf maakte) om de Toolbox voor GRASS te kunnen gebruiken. Dit is nodig omdat nieuwe raster- of vectorlagen die worden gemaakt gedurende analyses moeten worden weggeschreven naar de momenteel geselecteerde LOCATION
en MAPSET
.
22.14.1. Werken met modules van GRASS¶
De GRASS-shell binnen de Toolbox voor GRASS verschaft toegang tot bijna alle (meer dan 300) modules voor GRASS in een interface voor de opdrachtregel. Ongeveer 200 van de beschikbare modules en functionaliteiten voor GRASS zijn ook voorzien van grafische dialoogvensters binnen de Toolbox van de plug-in GRASS om een meer gebruikersvriendelijker werkomgeving te bieden.
Een volledige lijst van modules voor GRASS, die beschikbaar zijn in de grafische Toolbox in QGIS versie 3.16, is beschikbaar in de wiki van GRASS op https://grasswiki.osgeo.org/wiki/GRASS-QGIS_relevant_module_list.
Het is ook mogelijk de inhoud van de Toolbox van GRASS aan te passen. Deze procedure wordt beschreven in het gedeelte Aanpassen van de Toolbox van GRASS.
Zoals weergegeven in Fig. 22.3 kunt u naar de toepasselijke module voor GRASS zoeken met behulp van de thematisch gegroepeerde Modulenboom of de te doorzoeken tab Modules.
Door te klikken op een grafisch pictogram voor een module zal een nieuwe tab worden toegevoegd aan het dialoogvenster van de Toolbox, die drie nieuwe sub-tabs verschaft: Opties, Output en Handleiding.
Opties
De tab Opties verschaft een vereenvoudigd dialoogvenster voor de module waar u gewoonlijk een raster- of vectorlaag, die is gevisualiseerd in het kaartvenster van QGIS, kunt selecteren en meer module-specifieke parameters kunt invullen om de module uit te voeren.
De verschafte parameters voor de module zijn vaak niet compleet om het dialoogvenster eenvoudig te houden. Als u meer parameters en vlaggen voor de module wilt gebruiken, dient u de GRASS-shell te starten en de module uit te voeren op de opdrachtregel.
Een nieuwe mogelijkheid sinds QGIS 1.8 is de ondersteuning voor een knop Geavanceerde opties tonen onder het vereenvoudigde dialoogvenster voor de module op de tab Opties. Op dit moment is het alleen toegevoegd aan de module v.in.ascii
als gebruiksvoorbeeld, maar het zal waarschijnlijk deel gaan uitmaken van de meeste of alle modules in de Toolbox voor GRASS in toekomstige versies van QGIS. Dit stelt u in staat de volledige opties voor de module voor GRASS te gebruiken zonder dat u hoeft over te schakelen naar de GRASS-shell.
Output
De tab Output verschaft informatie over de uitvoerstatus van de module. Wanneer u klikt op de knop Uitvoeren, schakelt de module naar de tab Output en ziet u informatie over het analyseproces. Als alles goed werkt ziet u uiteindelijk een bericht Met succes voltooid
.
Handleiding
De tab Handleiding geeft de HTML Help-pagina van de module voor GRASS weer. U kunt die gebruiken om te controleren op meer parameters en vlaggen voor de module of om een beter inzicht te krijgen over het doel van de module. Aan het einde van elke pagina met de handleiding van de module zult u verder koppelingen zien naar de Main index
, de Thematische index
en de Full index
. Deze koppelingen verschaffen dezelfde informatie als de module g.manual
.
Tip
Resultaten onmidellijk weergeven
Als u uw resultaten van de berekeningen direct wilt weergeven in uw kaartvenster, kunt u de knop ‘Uitvoer bekijken’ onder op de tab van de module gebruiken.
22.14.2. GRASS voorbeelden van modules¶
De volgende voorbeelden zullen de kracht van enkele van de modules van GRASS demonstreren.
22.14.2.1. Contourlijnen maken¶
Het eerste voorbeeld maakt een vector contourenkaart uit een hoogteraster (DEM). Hier wordt aangenomen dat u de LOCATION
Alaska heeft ingesteld zoals uitgelegd in het gedeelte Importeren van gegevens in een GRASS LOCATION.
Open eerst de locatie door te klikken op de knop Mapset openen en de locatie Alaska te kiezen.
In de lijst met categorieën gereedschap, dubbelklik op
.Nu zal een enkele klik op het gereedschap r.contour het dialoogvenster voor het gereedschap openen zoals boven uitgelegd (zie Werken met modules van GRASS).
Voer, in het vak Name of input raster map,
gtopo30
in.Typ in het vak Increment between Contour levels de waarde 100. (Dit zal contourlijnen maken met een interval van 100 meter.)
Typ in het vak Name for output vector map de naam
ctour_100
.Klik op Uitvoeren om het proces te beginnen. Wacht even totdat het bericht
Met succes voltooid
verschijnt in het uitvoervenster. Klik dan op Uitvoer bekijken en Sluiten.
Omdat dit een grote regio is zal het even duren voordat alles wordt weergegeven. Nadat het renderen is voltooid, kunt u het venster Laageigenschappen openen om de lijnkleur te wijzigen zodat de contouren duidelijk over het hoogteraster te zien zijn, zoals in Het dialoogvenster Vectoreigenschappen.
Zoom vervolgens in op een klein bergachtig gebied in het midden van Alaska. Bij het veel inzoomen zult u opmerken dat de contouren scherpe hoeken hebben. GRASS biedt het gereedschap v.generalize om vectorkaarten lichtjes te wijzigen met behoud van hun overall-vorm. Het gereedschap gebruikt verscheidene verschillende algoritmen met verschillende doeleinden. Sommig algoritmen (d.i., Douglas Peuker en Vertex Reduction) vereenvoudigen de lijn door enkele punten te verwijderen. De resulterende vector zal sneller laden. Dit proces is nuttig als u een vector met veel detail heeft, maar u maakt een kaart op zeer kleine schaal, dus detail is niet nodig.
Tip
Het gereedschap Vereenvoudigen
Onthoud dat QGIS een gereedschap
heeft dat net zo werkt als het GRASS v.generalize Douglas-Peuker algoritme.Echter, het doel van dit voorbeeld is anders. De contourlijnen die zijn gemaakt door r.contour
hebben scherpe hoeken die gladder zouden moeten. Tussen de algoritmen voor v.generalize staat Chaiken’s, wat precies dat doet (ook Hermite-splines). Onthoud dat deze algoritmen aanvullende hoeken kunnen toevoegen aan de vector, waardoor het nog langzamer is te laden.
Open de Toolbox voor GRASS en dubbelklik op categorieën
, klik dan op de module v.generalize om het venster Opties daarvan te openen.Controleer of de vectorlaag ‘ctour_100’ verschijnt in het vak Name of input vector.
Kies Chaiken’s Algorithm uit de lijst met algoritmen. Laat alle andere opties op hun standaard staan en scroll naar beneden naar de laatste rij om in het veld Name for output vector map ‘ctour_100_smooth’ in te vullen en klik op Uitvoeren.
Het proces duurt enige tijd. Als eenmaal
Met succes voltooid
verschijnt in het uitvoervenster, klik dan op Uitvoer bekijken en dan op Sluiten.U zou de kleur van de vectorlaag kunnen wijzigen om die duidelijk weer te geven tegen de achtergrond van het raster en om contrast te krijgen met de originele contourlijnen. Het zal u opvallen dat de nieuwe contourlijnen gladdere hoeken hebben dan de originele terwijl zij nog voldoen aan de originele overall-vorm.
Tip
Ander gebruik voor r.contour
De hierboven beschreven procedure kan in equivalente andere situaties worden gebruikt. Als u een rasterkaart heeft met gegevens over neerslag, bijvoorbeeld, dan kan dezelfde methode worden gebruikt om een vectorkaart met isohyetale (constante neerslag) lijnen te maken.
22.14.2.2. Een 3D heuvels met schaduw-effect maken¶
Verscheidene methoden worden gebruikt om hoogtelagen weer te geven en een 3D-effect aan kaarten te geven. Het gebruiken van contourlijnen, zoals hierboven weergegeven, is een populaire methode die vaak gekozen wordt om topografische kaarten te produceren. Een andere manier om een 3D-effect weer te geven is door schaduw op heuvels. Het effect van schaduw op heuvels wordt gemaakt vanuit een DEM (hoogte)raster door eerst de helling en aspect van elke cel te berekenen, dan de positie van de zon in de lucht te simuleren en een waarde van reflectie te geven aan elke cel. U krijgt dus lichte hellingen in de zon; de hellingen die uit de zon liggen (in de schaduw) worden donkerder.
Begin dit voorbeeld met het laden van het hoogteraster
gtopo30
. Start de Toolbox voor GRASS en onder de categorie Raster, dubbelklik om te openen.Klik dan op r.shaded.relief om de module te openen.
Voer
gtopo30_shade
in voor het nieuwe raster met schaduw voor de heuvels en klik op Uitvoeren.Wanneer het proces voltooid is, voeg dan het raster met schaduw voor de heuvels toe aan de kaart. U zou die nu moeten zien weergegeven in grijswaarden.
Verplaats de kaart met schaduw op de heuvels naar onder de kaart
gtopo30
in de inhoudsopgave, open dan het venster vangtopo30
, schakel naar de tab Transparantie en stel het niveau voor transparantie in op ongeveer 25% om zowel de schaduw op de heuvels als de kleuren vangtopo30
samen te zien.
U zou nu de hoogte gtopo30
moeten hebben met zijn kleurenkaart en transparante instelling weergegeven boven de kaart van de heuvels met schaduw in grijswaarden. Schakel, om de visuele effecten van de schaduw op de hevels te zien, de kaart gtopo30_shade
uit en schakel die dan weer in.
Gebruiken van de GRASS-shell
De plug-in GRASS in QGIS is ontworpen voor gebruikers voor wie GRASS nieuw is en die niet bekend zijn met alle modules en opties. Daarom geven sommige modules in de Toolbox niet alle beschikbare opties weer, en sommige modules verschijnen in het geheel niet. De GRASS-shell (of console) geeft de gebruiker toegang tot deze aanvullende modules van GRASS die niet in de boom van Toolbox verschijnen en ook tot enkele aanvullende opties voor de modules die in de Toolbox staan met de eenvoudigste standaardparameters. Dit voorbeeld demonstreert het gebruiken van een aanvullende optie in de module r.shaded.relief die hierboven werd weergegeven.
De module r.shaded.relief mag een parameter zmult
hebben, die de waarden voor hoogte relatief vermenigvuldigt ten opzichte van de eenheden van de XY-coördinaten zodat het effect van schaduw op de heuvels nog meer geprononceerd is.
Laad het hoogteraster
gtopo30
zoals hierboven en start dan de Toolbox voor GRASS en klik op de GRASS-shell. Typ, in het venster van de shell, de opdrachtr.shaded.relief map=gtopo30 shade=gtopo30_shade2 azimuth=315 zmult=3
en druk op Enter.Schakel, nadat het proces is voltooid, over naar de tab Browser en dubbelklik op het nieuwe raster
gtopo30_shade2
om het weer te geven in QGIS.Zoals hierboven uitgelegd, verplaats het raster met het schaduw-reliëf tot onder het raster
gtopo30
in de inhoudsopgave en controleer de transparantie van de gekleurde laaggtopo30
. U zou moeten zien dat het 3D-effect sterker naar voren komt vergeleken met de eerste kaart met schaduw-reliëf.
22.14.2.3. Rasterstatistieken in een vectorkaart¶
Het volgende voorbeeld laat zien hoe een module van GRASS rastergegevens kan aggregeren en kolommen voor statistieken voor elke polygoon in een vectorkaart kan toevoegen.
Gebruik opnieuw de gegevens voor Alaska, bekijk Importeren van gegevens in een GRASS LOCATION om het
shapefiles/trees.shp
te importeren in GRASS.Nu is een tussenstap vereist: zwaartepunten moeten worden toegevoegd aan de geïmporteerde kaart trees om het een volledige gebiedsvector voor GRASS te maken (inclusief beide grenzen en zwaartepunten).
Kies, vanuit de Toolbox,
en open de module v.centroids.Voer als output vector map in ‘forest_areas’ en voer de module uit.
Laad vervolgens de laag
forest_areas
en visualiseer de karakteristieken - naaldbos (evergreen), loofbos (deciduous) of gemengd (mixed) - in verschillende kleuren. Selecteer in het venster van de laag Eigenschappen, de tab Symbologie en selecteer uit Legenda type ‘Unieke waarde’ en vervolgens het Classificatie veld ‘VEGDESC’. (Bekijk voor de uitleg over de tab Symbologie Eigenschappen Symbologie in het gedeelte vector.)Vervolgens, open de Toolbox voor GRASS opnieuw en open
.Klik op de module v.rast.stats. Voer
gtopo30
enforest_areas
in.Er is slechts één aanvullende parameter nodig: Voer column prefix
elev
in en klik op Uitvoeren. Dit is een qua berekeningen zware bewerking die geruime tijd zal vergen (waarschijnlijk meer dan twee uur).Tenslotte, open de attributentabel van
forest_areas
en verifieer dat verschillende nieuwe kolommen zijn toegevoegd, inclusiefelev_min
,elev_max
,elev_mean
, etc., voor elk polygoon bos.
22.14.3. Aanpassen van de Toolbox van GRASS¶
Nagenoeg alle modules voor GRASS kunnen worden toegevoegd aan de Toolbox voor GRASS. Een XML-interface wordt verschaft voor het parsen van de vrij eenvoudige XML-bestanden die het uiterlijk en parameters van de module binnen de Toolbox configureren.
Een voorbeeld XML-bestand voor het maken van de module v.buffer
(v.buffer.qgm) ziet er uit zoals dit:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE qgisgrassmodule SYSTEM "http://mrcc.com/qgisgrassmodule.dtd">
<qgisgrassmodule label="Vector buffer" module="v.buffer">
<option key="input" typeoption="type" layeroption="layer" />
<option key="buffer"/>
<option key="output" />
</qgisgrassmodule>
De parser leest deze definitie en maakt een nieuwe tab binnen de Toolbox wanneer u de module selecteert. Een meer gedetailleerde beschrijving voor het toevoegen van nieuwe modules, wijzigen van een groep van een module, etc., is te vinden op https://qgis.org/nl/site/getinvolved/development/addinggrasstools.html.