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 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 Help ► Info ► Providers 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.

  1. Navigeer in de browser van QGIS naar de mapset waarin u gegevens wilt importeren.

  2. 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.

  3. Sleep een laag en zet die in de doel-mapset. Het importeren kan enige tijd vergen voor grote lagen, u zult een geanimeerd pictogram import 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 rasterGroup voor een groep van alle mappen. Externe rasters hebben een afwijkend pictogram rasterLink.

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 Plug-ins ► showPluginManager Plug-ins beheren en installeren…, selecteer checkbox GRASS en klik op OK.

De volgende belangrijkste mogelijkheden worden verschaft in het menu GRASS (Plug-ins ► GRASS) als u de plug-in GRASS start:

  • grassOpenMapset Mapset openen

  • grassNewMapset Nieuwe Mapset

  • grassCloseMapset Mapset sluiten

  • grassTools GRASS-gereedschap openen

  • grassRegion Huidige GRASS-regio weergeven

  • general GRASS opties

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.)

../../../_images/grass_location.png

Fig. 22.1 Gegevens voor GRASS op de LOCATION alaska

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).

  1. Start QGIS en zorg er voor dat de plug-in GRASS is geladen.

  2. Klik, op de werkbalk van GRASS, op het pictogram grassOpenMapset Mapset openen om de assistent MAPSET te laten zien.

  3. Selecteer als database van GRASS de map grassdata in de gegevensset Alaska van QGIS, als LOCATION ‘alaska’, als MAPSET ‘demo’ en klik op OK.

  4. Klik nu op het pictogram grassTools GRASS–gereedschap openen. Het dialoogvenster van de Toolbox van GRASS (zie gedeelte De Toolbox voor GRASS) verschijnt.

  5. Klik op de module r.in.gdal op de tab Modulen Boom om de rasterkaart landcover.img te importeren. Deze module voor GRASS stelt u in staat GDAL-ondersteunde rasterbestanden te importeren in een LOCATION van GRASS. Het dialoogvenster voor de module r.in.gdal verschijnt.

  6. Blader naar de map raster in de gegevensset ‘Alaska’ van QGIS en selecteer het bestand landcover.img.

  7. Definieer, als naam voor het uitvoer rasterbestand, landcover_grass en klik op Uitvoeren. Op de tab Output ziet u de momenteel uitgevoerde opdracht voor GRASS r.in.gdal -o input=/pad/naar/landcover.img output=landcover_grass.

  8. 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.

  9. Klik op de module v.in.ogr op de tab Modulen Boom om het vector GML-bestand lakes.gml te importeren. Deze module voor GRASS stelt u in staat OGR-ondersteunde vectorbestanden te importeren in een LOCATION van GRASS. Het dialoogvenster voor de module v.in.ogr verschijnt.

  10. Blader naar de map gml in de gegevensset ‘Alaska’ van QGIS en selecteer het bestand lakes.gml als OGR-bestand.

  11. 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 GRASS v.in.ogr -o dsn=/pad/naar/lakes.gml output=lakes\_grass.

  12. 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).

  1. Start QGIS en zorg er voor dat de plug-in GRASS is geladen.

  2. Visualiseer het shapefile alaska.shp (zie gedeelte Een laag uit een bestand laden) uit de gegevensset Alaska van QGIS (zie Voorbeeldgegevens downloaden).

  3. Klik, op de werkbalk van GRASS, op het pictogram grassNewMapset Nieuwe mapset om de assistent MAPSET te laten verschijnen.

  4. Selecteer een bestaande GRASS-database (GISDBASE) map grassdata, of maak een nieuwe LOCATION met behulp van een bestandsbeheerder op uw computer. Klik dan op Next.

  5. We kunnen deze assistent gebruiken om een nieuwe MAPSET binnen een bestaande LOCATION te maken (zie het gedeelte Toevoegen van een nieuwe MAPSET) of om een geheel nieuwe LOCATION te maken. Selecteer radioButtonOn Nieuwe locatie maken (zie Fig. 22.2).

  6. Voer een naam in voor de LOCATION – wij gebruikten ‘alaska’ – en klik op Next.

  7. Definieer de projectie door te klikken op de optieknop radioButtonOn Projectie om de lijst met projecties in te schakelen.

  8. 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 projectionEnabled CRS Status in de rechterbenedenhoek van de statusbalk (zie gedeelte Werken met projecties)).

  9. In Filter, voer 2964 in om de projectie te selecteren.

  10. Klik op Next.

  11. 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 laag alaska.shp als bereik voor de standaard regio in GRASS toe te passen.

  12. Klik op Next.

  13. We moeten ook een MAPSET definiëren binnen onze nieuwe LOCATION (dit is nodig bij het maken van een nieuwe LOCATION). U mag het de naam geven die u wilt - wij gebruikten ‘demo’. GRASS maakt automatisch een speciale MAPSET, genaamd PERMANENT, 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).

  14. Controleer de samenvatting om te zien of die juist is en klik op Finish.

  15. De nieuwe LOCATION, ‘alaska’, en de twee MAPSETs, ‘demo’ en ‘PERMANENT’, zijn gemaakt. De momenteel geopende werkset is ‘demo’, zoals u heeft gedefinieerd.

  16. Merk op dat enkele gereedschappen op de werkbalk van GRASS, die uitgeschakeld waren, nu zijn ingeschakeld.

../../../_images/create_grass_location.png

Fig. 22.2 Een nieuwe GRASS LOCATION of een nieuwe MAPSET in QGIS maken

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).

  1. Start QGIS en zorg er voor dat de plug-in GRASS is geladen.

  2. Klik, op de werkbalk van GRASS, op het pictogram grassNewMapset Nieuwe mapset om de assistent MAPSET te laten verschijnen.

  3. Selecteer de GRASS database (GISDBASE)-map grassdata met de LOCATION ‘alaska’, waar we nog een MAPSET zullen toevoegen, genaamd ‘test’.

  4. Klik op Next.

  5. We kunnen deze assistent gebruiken om een nieuwe MAPSET binnen een bestaande LOCATION te maken of om een geheel nieuwe LOCATION te maken. Klik op de optieknop radioButtonOn Selecteer een locatie (zie Fig. 22.2) en klik op Next.

  6. Voer de naam test in voor de nieuwe MAPSET. Onder in de assistent ziet u een lijst van bestaande MAPSET's en corresponderende eigenaren.

  7. 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

capturePoint

Nieuw punt

Nieuw punt digitaliseren

captureLine

Nieuwe lijn

Nieuwe lijn digitaliseren

captureBoundary

Nieuwe grens

Nieuwe grens digitaliseren

captureCentroid

Nieuw zwaartepunt

Nieuw zwaartepunt digitaliseren (label bestaand gebied)

capturePolygon

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.

nix osx 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 grassRegion 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 grassTools 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.

../../../_images/grass_toolbox_moduletree.png

Fig. 22.3 GRASS Toolbox en Modulenboom

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.

../../../_images/grass_module_option.png

Fig. 22.4 GRASS Toolbox Module-opties

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

../../../_images/grass_module_output.png

Fig. 22.5 GRASS Toolbox Module-uitvoer

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

../../../_images/grass_module_manual.png

Fig. 22.6 GRASS Toolbox Module 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 grassOpenMapset Mapset openen en de locatie Alaska te kiezen.

  • Open nu de Toolbox met de knop grassTools GRASS-gereedschap openen.

  • In de lijst met categorieën gereedschap, dubbelklik op Raster ► Surface management ► Generate vector contour lines.

  • 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 selectNumber 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 Vector ► Geometrie-gereedschappen ► Geometrieën vereenvoudigen ► 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 Vector ► Develop map ► Generalization, 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.

../../../_images/grass_toolbox_vgeneralize.png

Fig. 22.7 GRASS module v.generalize om een vectorkaart gladder te maken

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 Spatial analysis ► Terrain analysis te openen.

  • Klik dan op r.shaded.relief om de module te openen.

  • Wijzig azimuth angle selectNumber van 270 naar 315.

  • 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 Eigenschappen van gtopo30, 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 van gtopo30 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.

../../../_images/grass_toolbox_shell.png

Fig. 22.8 De GRASS-shell, r.shaded.relief module

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 opdracht r.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 laag gtopo30. U zou moeten zien dat het 3D-effect sterker naar voren komt vergeleken met de eerste kaart met schaduw-reliëf.

../../../_images/grass_toolbox_shadedrelief.png

Fig. 22.9 Weergeven van reliëf met schaduw, gemaakt met de module van GRASS r.shaded.relief

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, Vector ► Develop map ► Manage features 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 selectString ‘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 Vector ► Vector update by other maps.

  • Klik op de module v.rast.stats. Voer gtopo30 en forest_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, inclusief elev_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.