Viktigt
Översättning är en gemenskapsinsats du kan gå med i. Den här sidan är för närvarande översatt till 100.00%.
22. GRASS GIS-integration
GRASS-integration ger tillgång till GRASS GIS-databaser och funktioner (se GRASS-PROJEKT i Litteratur- och webbreferenser). Integrationen består av två delar: provider och plugin. Providern gör det möjligt att bläddra bland, hantera och visualisera GRASS raster- och vektorlager. Insticksprogrammet kan användas för att skapa nya GRASS-platser och kartuppsättningar, ändra GRASS-region, skapa och redigera vektorlager och analysera GRASS 2-D- och 3-D-data med mer än 400 GRASS-moduler. I det här avsnittet presenterar vi providern och plugin-funktionerna och ger några exempel på hur man hanterar och arbetar med GRASS-data.
Providern stöder GRASS version 6 och 7, insticksprogrammet stöder GRASS 6 och 7 (från och med QGIS 2.12). QGIS-distributionen kan innehålla provider/plugin för antingen GRASS 6 eller GRASS 7 eller för båda versionerna samtidigt (binärerna har olika filnamn). Endast en version av providern/pluginet kan dock laddas vid körning.
22.1. Demo dataset
Som exempel använder vi QGIS Alaska-datauppsättningen (se avsnitt Nedladdning av exempeldata). Den innehåller ett litet GRASS-prov LOCATION
med tre vektorlager och en rasterhöjdkarta. Skapa en ny mapp som heter grassdata
, ladda ner QGIS ’Alaska’-datasetet qgis_sample_data.zip
från https://download.qgis.org//downloads/data/ och packa upp filen i grassdata
.
Fler exempel på GRASS LOCATIONs
finns tillgängliga på GRASS webbplats.
22.2. Ladda GRASS raster- och vektorlager
Om providern laddas i QGIS läggs platsobjektet med GRASS -ikonen till i webbläsarträdet under varje mappobjekt som innehåller GRASS-plats. Gå till mappen
grassdata
och expandera location alaska
och mapset demo
.
Du kan ladda GRASS raster- och vektorlager som vilket annat lager som helst från webbläsaren, antingen genom att dubbelklicka på lagerobjektet eller genom att dra och släppa det på kartbilden eller i teckenförklaringen.
Tips
GRASS-dataladdning
Om du inte ser GRASS platsobjekt, kontrollera i
om GRASS vektorprovider är laddad.22.3. Importera data till en GRASS LOCATION via dra och släpp
I detta avsnitt ges ett exempel på hur man importerar raster- och vektordata till en GRASS-kartuppsättning.
I QGIS browser navigerar du till den mapset som du vill importera data till.
I QGIS browser hittar du ett lager som du vill importera till GRASS, observera att du kan öppna en annan instans av browsern (Browser Panel (2)) om källdata är för långt från kartuppsättningen i trädet.
Dra ett lager och släpp det på målkartan. Importen kan ta lite tid för större lager, du kommer att se den animerade ikonen |import | framför det nya lagerobjektet tills importen är klar.
När rasterdata finns i olika CRS kan de återprojiceras med hjälp av en Approximate (snabb) eller Exact (exakt) transformation. Om en länk till källrastret skapas (med r.external
), källdata finns i samma CRS och formatet är känt för GDAL, kommer källdatans CRS att användas. Du kan ställa in dessa alternativ på fliken Browser i GRASS Alternativ.
Om ett källraster har fler band skapas en ny GRASS-karta för varje lager med .<band number> suffix och en grupp av alla kartor med ikonen skapas. Externa raster har en annan ikon
.
22.4. Hantera GRASS-data i QGIS Browser
Kopiering av kartor: GRASS-kartor kan kopieras mellan kartuppsättningar inom samma plats med hjälp av dra och släpp.
Radering av kartor: Högerklicka på en GRASS-karta och välj Delete från snabbmenyn.
Byta namn på kartor: Högerklicka på en GRASS-karta och välj Rename från kontextmenyn.
22.5. GRASS Alternativ
GRASS-alternativ kan ställas in i dialogen GRASS Options, som kan öppnas genom att högerklicka på platsen eller kartsetet i webbläsaren och sedan välja GRASS Options.
22.6. Starta insticksprogrammet GRASS
För att använda GRASS-funktioner i QGIS måste du välja och ladda GRASS-plugin med hjälp av Plugin Manager. Detta gör du genom att gå till menyn , markera kryssrutan| GRASS och klicka på OK.
Följande huvudfunktioner finns i GRASS-menyn (
) när du startar GRASS-plugin-programmet:|generellt| GRASS-alternativ
22.7. Öppna GRASS mapset
Ett GRASS-kapset måste öppnas för att få tillgång till GRASS-verktygen i insticksprogrammet (verktygen är inaktiverade om inget mapset är öppet). Du kan öppna ett mapset från webbläsaren: högerklicka på mapset-objektet och välj sedan Open mapset från snabbmenyn.
22.8. GRASS LOCATION och MAPSET
GRASS-data lagras i en katalog som kallas GISDBASE. Den här katalogen, som ofta kallas grassdata
, måste skapas innan du börjar arbeta med GRASS-tillägget i QGIS. I den här katalogen är GRASS GIS-data organiserade efter projekt som lagras i underkataloger som kallas LOCATIONs
. Varje LOCATION
definieras av sitt koordinatsystem, sin kartprojektion och sina geografiska gränser. Varje LOCATION
kan ha flera MAPSETs
(underkataloger till LOCATION
) som används för att dela upp projektet i olika ämnen eller delregioner, eller som arbetsytor för enskilda teammedlemmar (se Neteler & Mitasova 2008 i Litteratur- och webbreferenser). För att kunna analysera vektor- och rasterlager med GRASS-moduler måste du i allmänhet importera dem till en GRASS LOCATION
. (Detta är inte helt sant - med GRASS-modulerna r.external
och v.external
kan du skapa skrivskyddade länkar till externa GDAL-stödda dataset utan att importera dem. Detta är inte det vanliga sättet för nybörjare att arbeta med GRASS, därför kommer denna funktionalitet inte att beskrivas här)

Fig. 22.1 GRASS-data i alaska LOCATION
22.9. Importera data till en GRASS-lokalisering
Se avsnitt Importera data till en GRASS LOCATION via dra och släpp för att få reda på hur data enkelt kan importeras genom att dra och släppa i webbläsaren.
Detta avsnitt ger ett exempel på hur man importerar raster- och vektordata till GRASS LOCATION
’alaska’ som tillhandahålls av QGIS ’Alaska’-datasetet på traditionellt sätt, med hjälp av standard GRASS-moduler. Därför använder vi landcover-rasterkartan landcover.img
och vektor-GML-filen lakes.gml
från QGIS ’Alaska’-datasetet (se Nedladdning av exempeldata).
Starta QGIS och se till att GRASS-plugin-programmet är laddat.
I GRASS verktygsfält klickar du på ikonen
Open MAPSET för att få upp guiden MAPSET.
Välj som GRASS-databas mappen
grassdata
i QGIS Alaska dataset, somLOCATION
’alaska’, somMAPSET
’demo’ och klicka på OK.Klicka nu på ikonen
Öppna GRASS-verktyg. Dialogrutan GRASS Toolbox (se avsnitt GRASS verktygslåda) visas.
För att importera rasterkartan
landcover.img
, klicka på modulenr.in.gdal
i fliken Modules Tree. Med denna GRASS-modul kan du importera GDAL-stödda rasterfiler till en GRASSLOCATION
. Dialogrutan för modulen förr.in.gdal
visas.Bläddra till mappen
raster
i QGIS-datasetet ”Alaska” och välj filenlandcover.img
.Som namn på rasterutmatningen definierar du
landcover_grass
och klickar på Run. På fliken Output ser du det pågående GRASS-kommandotr.in.gdal -o input=/path/to/landcover.img output=landcover_grass
.När det står Succesfully finished klickar du på View Output. Rasterlagret
landcover_grass
är nu importerat till GRASS och kommer att visualiseras i QGIS canvas.För att importera vektor GML filen
lakes.gml
, klicka på modulenv.in.ogr
i Modules Tree fliken. Med denna GRASS-modul kan du importera OGR-stödda vektorfiler till en GRASSLOCATION
. Dialogrutan för modulen förv.in.ogr
visas.Bläddra till mappen
gml
i QGIS-datasetet ”Alaska” och välj filenlakes.gml
som OGR-fil.Som namn på vektorutdata anger du
lakes_grass
och klickar på Run. Du behöver inte bry dig om de andra alternativen i det här exemplet. På fliken Output ser du det pågående GRASS-kommandotv.in.ogr -o dsn=/path/to/lakes.gml output=lakes\_grass
.När det står Succesfully finished klickar du på View Output. Vektorlagret
lakes_grass
är nu importerat till GRASS och kommer att visualiseras i QGIS canvas.
22.9.1. Skapa en ny GRASS LOCATION
Som ett exempel visas här exemplet GRASS LOCATION alaska
, som är projicerat i Albers Equal Area-projektionen med fot som enhet. Detta exempel på GRASS LOCATION alaska
kommer att användas för alla exempel och övningar i följande GRASS-relaterade avsnitt. Det är bra att ladda ner och installera datasetet på din dator (se Nedladdning av exempeldata).
Starta QGIS och se till att GRASS-plugin-programmet är laddat.
Visualisera shapefilen
alaska.shp
(se avsnitt Läsa in ett lager från en fil) från QGIS Alaska-datasetet (se Nedladdning av exempeldata).I GRASS verktygsfält klickar du på ikonen
New mapset för att få upp guiden MAPSET.
Välj en befintlig GRASS databas (GISDBASE) mapp
grassdata
, eller skapa en för den nyaLOCATION
med hjälp av en filhanterare på din dator. Klicka sedan på Next.Vi kan använda den här guiden för att skapa en ny
MAPSET
inom en befintligLOCATION
(se avsnitt Lägga till en ny MAPSET) eller för att skapa en helt nyLOCATION
. VäljCreate new location (se Fig. 22.2).
Ange ett namn för
LOCATION
– vi använde ’alaska’ – och klicka på Next.Definiera projektionen genom att klicka på alternativknappen
Projection för att aktivera projektionslistan.
Vi använder Albers Equal Area Alaska (feet) projektion. Eftersom vi råkar veta att den representeras av EPSG ID 2964, skriver vi in det i sökrutan. (Obs: Om du vill upprepa denna process för en annan
LOCATION
och projektion och inte har memorerat EPSG-ID:t, klicka på ikonenCRS Status i statusfältets nedre högra hörn (se avsnitt Arbeta med projektioner)).
I Filter, sätt in 2964 för att välja projektion.
Klicka på Next.
För att definiera standardregionen måste vi ange gränserna för
LOCATION
i nordlig, sydlig, östlig och västlig riktning. Här klickar vi helt enkelt på knappen Set Current QGIS Extent, för att tillämpa utbredningen av det laddade skiktetalaska.shp
som GRASS standardregionutbredning.Klicka på Next.
Vi måste också definiera en
MAPSET
inom vår nyaLOCATION
(detta är nödvändigt när du skapar en nyLOCATION
). Du kan namnge den som du vill - vi använde ”demo”. GRASS skapar automatiskt en speciellMAPSET
som kallasPERMANENT
, som är utformad för att lagra kärndata för projektet, dess standard rumsliga utsträckning och koordinatsystemdefinitioner (se Neteler & Mitasova 2008 i Litteratur- och webbreferenser).Kontrollera att sammanfattningen är korrekt och klicka sedan på Finish.
Den nya
LOCATION
, ’alaska’, och tvåMAPSETs
, ’demo’ och ’PERMANENT’, skapas. Den arbetsuppsättning som för närvarande är öppen är ’demo’, som du definierade.Lägg märke till att några av de verktyg i GRASS verktygsfält som var inaktiverade nu är aktiverade.

Fig. 22.2 Skapa en ny GRASS LOCATION eller en ny MAPSET i QGIS
Om du tyckte att det verkade vara många steg, så är det inte så farligt och ett mycket snabbt sätt att skapa en LOCATION
. LOCATION
’alaska’ är nu redo för dataimport (se avsnitt Importera data till en GRASS-lokalisering). Du kan också använda de redan existerande vektor- och rasterdata i exemplet GRASS LOCATION
’alaska’, som ingår i QGIS-datasetet ’Alaska’ Nedladdning av exempeldata, och gå vidare till avsnitt GRASS-vektordatamodellen.
22.9.2. Lägga till en ny MAPSET
En användare har endast skrivrättigheter till en GRASS MAPSET
som han eller hon har skapat. Detta innebär att förutom tillgång till din egen MAPSET
, kan du läsa kartor i andra användares MAPSETs
(och de kan läsa dina), men du kan bara ändra eller ta bort kartorna i din egen MAPSET
.
Alla MAPSETs
innehåller en WIND
-fil som lagrar de aktuella gränskoordinatvärdena och den aktuella valda rasterupplösningen (se Neteler & Mitasova 2008 i Litteratur- och webbreferenser, och avsnitt GRASS-regionverktyget).
Starta QGIS och se till att GRASS-plugin-programmet är laddat.
I GRASS verktygsfält klickar du på ikonen
New mapset för att få upp guiden MAPSET.
Välj GRASS-databasens (GISDBASE) mapp
grassdata
medLOCATION
’alaska’, där vi vill lägga till ytterligare enMAPSET
med namnet ’test’.Klicka på Next.
Vi kan använda den här guiden för att skapa en ny
MAPSET
inom en befintligLOCATION
eller för att skapa en helt nyLOCATION
. Klicka på alternativknappenSelect location (se Fig. 22.2) och klicka på Next.
Ange namnet
test
för den nyaMAPSET
. Nedan i guiden ser du en lista över befintligaMAPSETs
och deras ägare.Klicka på Next, kolla sammanfattningen för att se att allt är korrekt och klicka på Finish.
22.10. GRASS-vektordatamodellen
Det är viktigt att förstå GRASS vektordatamodell före digitaliseringen. I allmänhet använder GRASS en topologisk vektormodell. Detta innebär att områden inte representeras som slutna polygoner, utan av en eller flera gränser. En gräns mellan två angränsande områden digitaliseras endast en gång, och den delas av båda områdena. Gränserna måste vara sammanhängande och slutna utan luckor. Ett område identifieras (och märks) med hjälp av områdets centroid.
Förutom gränser och centroider kan en vektorkarta också innehålla punkter och linjer. Alla dessa geometriska element kan blandas i en vektor och kommer att representeras i olika så kallade ”lager” i en GRASS-vektorkarta. I GRASS är ett lager alltså inte en vektor- eller rasterkarta utan en nivå i ett vektorlager. Detta är viktigt att skilja på noggrant. (Det är visserligen möjligt att blanda geometriska element, men det är ovanligt och används även i GRASS endast i speciella fall, t.ex. vid analys av vektornätverk. Normalt sett bör du föredra att lagra olika geometrielement i olika lager)
Det är möjligt att lagra flera ”lager” i ett vektordataset. Till exempel kan fält, skogar och sjöar lagras i en vektor. En intilliggande skog och sjö kan dela samma gräns, men de har separata attributtabeller. Det är också möjligt att koppla attribut till gränser. Ett exempel kan vara när gränsen mellan en sjö och en skog utgörs av en väg, och den kan därför ha en annan attributtabell.
Objektets ”lager” definieras av ”lagret” i GRASS. ”Layer” är det nummer som definierar om det finns mer än ett lager i datasetet (t.ex. om geometrin är skog eller sjö). För närvarande kan det bara vara ett nummer. I framtiden kommer GRASS även att stödja namn som fält i användargränssnittet.
Attribut kan lagras i GRASS LOCATION
som dBase, SQLite3 eller i externa databastabeller, t.ex. PostgreSQL, MySQL, Oracle, etc.
Attribut i databastabeller är länkade till geometrielement med hjälp av ett ”category”-värde.
”Category” (nyckel, ID) är ett heltal som är kopplat till geometriprimitiver och används som länk till en nyckelkolumn i databastabellen.
Tips
Lär dig GRASS vektormodell
Det bästa sättet att lära sig GRASS vektormodell och dess möjligheter är att ladda ner en av de många GRASS handledningarna där vektormodellen beskrivs mer djupgående. Se https://grass.osgeo.org/learn/manuals/ för mer information, böcker och handledningar på flera språk.
22.11. Skapa ett nytt GRASS-vektorlager
Om du vill skapa ett nytt GRASS-vektorlager väljer du något av följande alternativ från mapset-kontextmenyn i webbläsaren:
Nytt punktlager
Ny linje lager
Nytt polygonlager
och ange ett namn i dialogrutan. En ny vektorkarta skapas och lagret läggs till i arbetsytan och redigeringen påbörjas. Valet av lagertyp begränsar inte vilka geometrityper som kan digitaliseras i vektorkartan. I GRASS är det möjligt att organisera alla typer av geometri (punkt, linje och polygon) i en vektorkarta. Typen används endast för att lägga till lagret på duken, eftersom QGIS kräver att ett lager har en viss typ.
Det är också möjligt att lägga till lager i befintliga vektorkartor genom att välja ett av de objekt som beskrivs ovan i snabbmenyn för en befintlig vektorkarta.
I GRASS är det möjligt att organisera alla möjliga geometrityper (punkt, linje och yta) i ett lager, eftersom GRASS använder en topologisk vektormodell, så du behöver inte välja geometrityp när du skapar en ny GRASS-vektor. Detta skiljer sig från skapandet av shapefiler med QGIS, eftersom shapefiler använder vektormodellen Simple Feature (se avsnitt Skapa nya vektorlager).
22.12. Digitalisering och redigering av ett GRASS-vektorlager
GRASS-vektorskikt kan digitaliseras med hjälp av QGIS standardverktyg för digitalisering. Det finns dock vissa särdrag som du bör känna till, på grund av
GRASS topologisk modell jämfört med QGIS enkel funktion
gRASS-modellens komplexitet
flera lager i en enda karta
flera geometrityper i en enda karta
geometrisk delning av flera funktioner från flera lager
De särskilda omständigheterna diskuteras i följande avsnitt.
Spara, kassera ändringar, ångra, göra om
Varning
Alla ändringar som görs under redigeringen skrivs omedelbart in i vektorkartan och relaterade attributtabeller.
Ändringar skrivs efter varje operation, men det är dock möjligt att ångra/återställa eller kassera alla ändringar när redigeringen avslutas. Om ångra eller kassera ändringar används, skrivs originaltillståndet om i vektorkartan och attributtabellerna.
Det finns två huvudsakliga skäl till detta beteende:
Det ligger i GRASS-vektorns natur att komma från övertygelsen att användaren vill göra det han gör och att det är bättre att ha data sparade när arbetet plötsligt avbryts (t.ex. strömavbrott)
En förutsättning för effektiv redigering av topologiska data är visualiserad information om topologisk korrekthet, sådan information kan endast erhållas från GRASS vektorkarta om ändringar skrivs till kartan.
Verktygsrad
Verktygsfältet ”Digitizing Toolbar” har några specifika verktyg när ett GRASS-lager redigeras:
Ikon |
Verktyg |
Syfte |
---|---|---|
Ny punkt |
Digitalisera ny punkt |
|
Ny linje |
Digitalisera ny linje |
|
Ny gräns |
Digitalisera ny gräns |
|
Ny centroid |
Digitalisera ny centroid (märk ut befintligt område) |
|
Ny stängd gräns |
Digitalisera ny stängd gräns |
Tabell GRASS Digitalisering: Verktyg för GRASS-digitalisering
Tips
Digitalisering av polygoner i GRASS
Om du vill skapa en polygon i GRASS digitaliserar du först polygonens gräns. Sedan lägger du till en centroid (etikettpunkt) i den slutna gränsen. Anledningen till detta är att en topologisk vektormodell alltid länkar attributinformationen för en polygon till centroiden och inte till gränsen.
Kategori
Category, ofta kallat cat, är ett slags ID. Namnet kommer från tiden då GRASS-vektorer bara hade ett enda attribut ”category”. Kategorin används som en länk mellan geometri och attribut. En enda geometri kan ha flera kategorier och därmed representera flera funktioner i olika lager. För närvarande är det möjligt att tilldela endast en kategori per lager med hjälp av QGIS redigeringsverktyg. Nya funktioner har automatiskt tilldelats en ny unik kategori, utom gränser. Gränser bildar vanligtvis bara områden och representerar inte linjära funktioner, men det är dock möjligt att definiera attribut för en gräns senare, till exempel i ett annat skikt.
Nya kategorier skapas alltid endast i det lager som för närvarande redigeras.
Det är inte möjligt att tilldela fler kategorier till geometri med hjälp av QGIS-redigering, sådana data representeras korrekt som flera funktioner och enskilda funktioner, även från olika lager, kan raderas.
Attribut
Attribut för det aktuella redigerade lagret kan endast ändras. Om vektorkartan innehåller fler lager kommer alla attribut för funktioner i andra lager att anges till ”<inte redigerbart (lager #)>” för att varna dig för att ett sådant attribut inte är redigerbart. Anledningen är att andra lager kan ha och vanligtvis har olika uppsättningar fält medan QGIS endast stöder en fast uppsättning fält per lager.
Om en geometriprimitiv inte har någon kategori tilldelad, tilldelas en ny unik kategori automatiskt och en ny post i attributtabellen skapas när ett attribut för geometrin ändras.
Tips
Om du vill göra en massuppdatering av attribut i tabellen, till exempel med hjälp av ”Field Calculator” (Använda fältkalkylatorn), och det finns funktioner utan kategori som du inte vill uppdatera (vanligtvis gränser), kan du filtrera bort dem genom att ställa in ”Advanced Filter” på ”cat is not null”.
Redigeringsstil
Den topologiska symbologin är viktig för effektiv redigering av topologiska data. När redigeringen startar ställs en specialiserad ”GRASS Edit”-renderare in på skiktet automatiskt och den ursprungliga renderaren återställs när redigeringen avslutas. Stilen kan anpassas på fliken Style i skiktets egenskaper. Stilen kan också lagras i projektfilen eller i en separat fil som alla andra stilar. Om du anpassar stilen ska du inte ändra dess namn, eftersom det används för att återställa stilen när redigeringen startas igen.
Tips
Spara inte projektfilen när lagret redigeras, lagret skulle lagras med ”Edit Style” som inte har någon betydelse om lagret inte redigeras.
Stilen baseras på topologisk information som temporärt läggs till i attributtabellen som fältet ’topo_symbol’. Fältet tas bort automatiskt när redigeringen stängs.
Tips
Ta inte bort fältet ”topo_symbol” från attributtabellen, det skulle göra funktioner osynliga eftersom renderingsprogrammet är baserat på den kolumnen.
Snapping
För att bilda en yta måste hörnpunkterna i de anslutna gränserna ha exakt samma koordinater. Detta kan uppnås med hjälp av snäppverktyget endast om duken och vektorkartan har samma CRS. Annars kan koordinaterna bli något annorlunda på grund av konverteringen från kartkoordinater till canvas och tillbaka, på grund av representationsfel och CRS-transformationer.
Tips
Använd skiktets CRS även för canvas när du redigerar.
Begränsningar
Samtidig redigering av flera lager i samma vektor samtidigt stöds inte. Detta beror främst på att det är omöjligt att hantera flera ångra-stackar för en enda datakälla.
På Linux och macOS kan endast ett GRASS-lager redigeras åt gången. Detta beror på en bugg i GRASS som inte tillåter att databasdrivrutiner stängs i slumpmässig ordning. Detta problem håller på att lösas tillsammans med GRASS-utvecklare.
Tips
GRASS Redigera behörigheter
Du måste vara ägare till den GRASS MAPSET
som du vill redigera. Det är omöjligt att redigera datalager i en MAPSET
som inte är din, även om du har skrivbehörighet.
22.13. GRASS-regionverktyget
Regiondefinitionen (inställning av ett rumsligt arbetsfönster) i GRASS är viktig för att arbeta med rasterlager. Vektoranalys är som standard inte begränsad till några definierade regiondefinitioner. Men alla nyskapade raster kommer att ha samma rumsliga utsträckning och upplösning som den aktuella definierade GRASS-regionen, oavsett deras ursprungliga utsträckning och upplösning. Den aktuella GRASS-regionen lagras i filen $LOCATION/$MAPSET/WIND
och den definierar gränser i norr, söder, öster och väster, antal kolumner och rader, horisontell och vertikal rumslig upplösning.
Det är möjligt att slå på och av visualiseringen av GRASS-regionen i QGIS-rutan med hjälp av knappen Display current GRASS region.
Regionen kan ändras på fliken ”Region” i dockningswidgeten ”GRASS Tolls”. Skriv in de nya regiongränserna och upplösningen och klicka på Apply. Om du klickar på Select the extent by dragging on canvas kan du välja en ny region interaktivt med musen på QGIS canvas genom att dra en rektangel.
GRASS-modulen g.region
tillhandahåller många fler parametrar för att definiera en lämplig regionutbredning och upplösning för din rasteranalys. Du kan använda dessa parametrar med GRASS Toolbox, som beskrivs i avsnitt GRASS verktygslåda.
22.14. GRASS verktygslåda
Open GRASS Tools boxen tillhandahåller GRASS modulens funktioner för att arbeta med data i en vald GRASS
LOCATION
och MAPSET
. För att använda GRASS Toolbox måste du öppna en LOCATION
och en MAPSET
som du har skrivrättigheter till (vanligtvis beviljade om du skapade MAPSET
). Detta är nödvändigt eftersom nya raster- eller vektorlager som skapas under analysen måste skrivas till den aktuella LOCATION
och MAPSET
.

Fig. 22.3 GRASS verktygslåda och modulträd
22.14.1. Arbeta med GRASS-moduler
GRASS-skalet i GRASS Toolbox ger tillgång till nästan alla (mer än 300) GRASS-moduler via ett kommandoradsgränssnitt. För att erbjuda en mer användarvänlig arbetsmiljö tillhandahålls ca 200 av de tillgängliga GRASS-modulerna och funktionerna även via grafiska dialogrutor i GRASS plugin Toolbox.
En fullständig lista över GRASS-moduler som finns tillgängliga i den grafiska verktygslådan i QGIS version 3.40 finns i GRASS-wikin på https://grasswiki.osgeo.org/wiki/GRASS-QGIS_relevant_module_list.
Det är också möjligt att anpassa innehållet i GRASS Toolbox. Denna procedur beskrivs i avsnitt Anpassa GRASS verktygslåda.
Som visas i Fig. 22.3 kan du leta efter lämplig GRASS-modul med hjälp av den tematiskt grupperade Modules Tree eller den sökbara Modules List-fliken.
Genom att klicka på ikonen för en grafisk modul läggs en ny flik till i dialogrutan Toolbox, med tre nya underflikar: Options, Output och Manual.
Menyalternativ:
ellerFliken Options ger en förenklad moduldialog där du vanligtvis kan välja ett raster- eller vektorlager som visualiseras i QGIS-kanvasen och ange ytterligare modulspecifika parametrar för att köra modulen.

Fig. 22.4 Alternativ för GRASS Toolbox-modul
De medföljande modulparametrarna är ofta inte kompletta för att hålla dialogen enkel. Om du vill använda ytterligare modulparametrar och flaggor måste du starta GRASS-skalet och köra modulen på kommandoraden.
En ny funktion sedan QGIS 1.8 är stödet för en Show Advanced Options-knapp under den förenklade moduldialogen på Options-fliken. För tillfället är den bara tillagd i modulen v.in.ascii
som ett exempel på användning, men den kommer förmodligen att vara en del av fler eller alla moduler i GRASS Toolbox i framtida versioner av QGIS. Detta gör att du kan använda de kompletta GRASS-modulalternativen utan att behöva byta till GRASS-skalet.
Utdata

Fig. 22.5 GRASS Toolbox-modulens utdata
Fliken Output ger information om modulens utmatningsstatus. När du klickar på knappen Run växlar modulen till fliken Output och du ser information om analysprocessen. Om allt fungerar som det ska visas slutligen meddelandet Successfully finished
.
Manual

Fig. 22.6 GRASS Toolbox Modul Manual
Fliken Manual visar HTML-hjälpsidan för GRASS-modulen. Du kan använda den för att kontrollera ytterligare modulparametrar och flaggor eller för att få en djupare kunskap om modulens syfte. I slutet av varje sida i modulens manual finns länkar till Main Help index
, Thematic index
och Full index
. Dessa länkar ger samma information som modulen g.manual
.
Tips
Visa resultat omedelbart
Om du vill visa dina beräkningsresultat direkt i kartbilden kan du använda knappen ”View Output” längst ned på modulfliken.
22.14.2. Exempel på GRASS-moduler
Följande exempel visar hur kraftfulla några av GRASS-modulerna är.
22.14.2.1. Skapa konturlinjer
I det första exemplet skapas en vektorkonturkarta från ett höjdraster (DEM). Här förutsätts att du har Alaska LOCATION
konfigurerad enligt beskrivningen i avsnitt Importera data till en GRASS-lokalisering.
Först öppnar du platsen genom att klicka på knappen
Open mapset och välja platsen Alaska.
Dubbelklicka på
i listan över verktygskategorier.Nu kan du klicka på verktyget r.contour för att öppna verktygsdialogen enligt beskrivningen ovan (se Arbeta med GRASS-moduler).
I Namn på inmatad rasterkarta skriver du
gtopo30
.Skriv in värdet 100 i fältet Increment between Contour levels
. (Detta skapar konturlinjer med 100 meters intervall.)
Skriv in namnet
ctour_100
i :guilabel:Name for output vector map
.Klicka på Run för att starta processen. Vänta några ögonblick tills meddelandet
Successfully finished
visas i utdatafönstret. Klicka sedan på View Output och Close.
Eftersom detta är en stor region kommer det att ta ett tag att visa. När renderingen är klar kan du öppna fönstret för skiktegenskaper och ändra linjefärgen så att konturerna syns tydligt över höjdrastret, som i Dialogrutan Egenskaper för vektor.
Zooma sedan in på ett litet bergsområde i mitten av Alaska. Om du zoomar in på nära håll kommer du att märka att konturerna har skarpa hörn. GRASS erbjuder verktyget v.generalize för att ändra vektorkartor något samtidigt som deras övergripande form bibehålls. Verktyget använder flera olika algoritmer med olika syften. Vissa av algoritmerna (t.ex. Douglas Peuker och Vertex Reduction) förenklar linjen genom att ta bort några av hörnen. Den resulterande vektorn laddas snabbare. Denna process är användbar när du har en mycket detaljerad vektor, men du skapar en mycket småskalig karta, så detaljerna är onödiga.
Tips
Det förenklade verktyget
Observera att QGIS har ett
-verktyg som fungerar precis som GRASS v.generalize Douglas-Peuker-algoritm.Syftet med det här exemplet är dock annorlunda. De konturlinjer som skapats av r.contour
har skarpa vinklar som bör jämnas ut. Bland algoritmerna v.generalize finns Chaikens, som gör just detta (även Hermite splines). Var medveten om att dessa algoritmer kan lägga till ytterligare hörn till vektorn, vilket gör att den laddas ännu långsammare.
Öppna GRASS Toolbox och dubbelklicka på kategorierna
, klicka sedan på modulen v.generalize för att öppna dess alternativfönster.Kontrollera att vektorn ’ctour_100’ visas som Namn på indatavektor.
Välj Chaikens algoritm från listan över algoritmer. Låt alla andra alternativ vara standardinställningar och bläddra ner till sista raden för att i fältet Namn på utdataväxelkartan ange ’ctour_100_smooth’ och klicka på Kör.
Processen tar flera ögonblick. När
Successfully finished
visas i utdatafönstret klickar du på View Output och sedan på Close.Du kan ändra vektorfärgen för att visa den tydligt mot rasterbakgrunden och för att skapa kontrast mot de ursprungliga konturlinjerna. Du kommer att märka att de nya konturlinjerna har mjukare hörn än originalet, samtidigt som den ursprungliga övergripande formen bibehålls.

Fig. 22.7 GRASS-modul v.generalize för att jämna ut en vektorkarta
Tips
Andra användningsområden för r.contour
Det förfarande som beskrivs ovan kan användas i andra motsvarande situationer. Om du t.ex. har en rasterkarta med nederbördsdata kan samma metod användas för att skapa en vektorkarta med isohyetallinjer (konstant nederbörd).
22.14.2.2. Skapa en Hillshade 3-D-effekt
Flera metoder används för att visa höjdskikt och ge kartor en 3D-effekt. Konturlinjer, som visas ovan, är en populär metod som ofta används för att framställa topografiska kartor. Ett annat sätt att visa en 3-D-effekt är genom hillshading. Hillshade-effekten skapas från ett DEM-raster (höjd) genom att först beräkna lutningen och aspekten för varje cell, sedan simulera solens position på himlen och ge varje cell ett reflektansvärde. På så sätt får du solvända sluttningar upplysta; sluttningar som vetter bort från solen (i skugga) blir mörkare.
Börja detta exempel med att ladda höjdrastret
gtopo30
. Starta GRASS Toolbox, och under kategorin Raster, dubbelklicka för att öppna .Klicka sedan på r.shaded.relief för att öppna modulen.
Ange
gtopo30_shade
för det nya hillshade-rastret och klicka på Run.När processen är klar lägger du till hillshade-rastret på kartan. Du bör se att det visas i gråskala.
För att se både hillshading och färgerna i
gtopo30
tillsammans, flytta hillshade kartan undergtopo30
kartan i innehållsförteckningen, öppna sedan fönstret förgtopo30
, växla till Transparency` fliken och ställ in dess transparensnivå till ca 25%.
Du bör nu ha gtopo30
-höjden med dess färgkarta och transparensinställning visad över den gråskaliga hillshade-kartan. För att se de visuella effekterna av hillshading, stäng av kartan gtopo30_shade
och slå sedan på den igen.
Användning av GRASS-skalet
GRASS-insticksprogrammet i QGIS är utformat för användare som är nya i GRASS och inte känner till alla moduler och alternativ. Därför visar vissa moduler i verktygslådan inte alla tillgängliga alternativ, och vissa moduler visas inte alls. GRASS-skalet (eller konsolen) ger användaren tillgång till de ytterligare GRASS-moduler som inte visas i Toolbox-trädet, och även till några ytterligare alternativ för de moduler som finns i Toolbox med de enklaste standardparametrarna. Detta exempel demonstrerar användningen av ett ytterligare alternativ i r.shaded.relief-modulen som visades ovan.

Fig. 22.8 GRASS-skalet, modulen r.shaded.relief
Modulen r.shaded.relief kan ta en parameter zmult
, som multiplicerar höjdvärdena i förhållande till X-Y-koordinatenheterna så att hillshade-effekten blir ännu mer uttalad.
Ladda höjdrastret
gtopo30
enligt ovan, starta sedan GRASS Toolbox och klicka på GRASS-skalet. I skalfönstret skriver du kommandotr.shaded.relief map=gtopo30 shade=gtopo30_shade2 azimuth=315 zmult=3
och trycker på Enter`.När processen är klar växlar du till fliken Browse och dubbelklickar på det nya
gtopo30_shade2
-rastret för att visa det i QGIS.Som förklarats ovan flyttar du det skuggade reliefrastret under
gtopo30
-rastret i innehållsförteckningen och kontrollerar sedan transparensen i det färgadegtopo30
-lagret. Du bör se att 3D-effekten framträder tydligare jämfört med den första skuggade reliefkartan.

Fig. 22.9 Visning av skuggad relief skapad med GRASS-modulen r.shaded.relief
22.14.2.3. Rasterstatistik i en vektorkarta
Nästa exempel visar hur en GRASS-modul kan sammanställa rasterdata och lägga till kolumner med statistik för varje polygon i en vektorkarta.
Använd Alaska-data igen, se Importera data till en GRASS-lokalisering för att importera
shapefiles/trees.shp
-filen till GRASS.Nu krävs ett mellanliggande steg: centroider måste läggas till den importerade trädkartan för att göra den till en komplett GRASS-områdesvektor (inklusive både gränser och centroider).
I verktygslådan väljer du
och öppnar modulen v.centroids.Ange som output vector map ’forest_areas’ och kör modulen.
Ladda nu vektorn
forest_areas
och visa skogstyperna - lövskog, vintergrön skog, blandskog - i olika färger: I skiktets fönster Properties, fliken Symbology, välj från Legend type’Unique value’ och ställ in fältet Classification till ’VEGDESC’. (Se förklaringen av symbologifliken i Egenskaper för symbologi i vektoravsnittet)
Därefter öppnar du GRASS Toolbox igen och öppnar
med andra kartor.Klicka på modulen v.rast.stats. Ange
gtopo30
ochforest_areas
.Endast en ytterligare parameter behövs: Ange kolumnprefix
elev
, och klicka på Run. Det här är en beräkningstung operation som kommer att pågå under lång tid (troligen upp till två timmar).Öppna slutligen attributtabellen
forest_areas
och kontrollera att flera nya kolumner har lagts till, inklusiveelev_min
,elev_max
,elev_mean
, etc., för varje skogspolygon.
22.14.3. Anpassa GRASS verktygslåda
Nästan alla GRASS-moduler kan läggas till i GRASS Toolbox. Ett XML-gränssnitt tillhandahålls för att tolka de ganska enkla XML-filer som konfigurerar modulernas utseende och parametrar i verktygslådan.
Ett exempel på en XML-fil för att generera modulen v.buffer
(v.buffer.qgm) ser ut så här:
<?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>
Parsern läser denna definition och skapar en ny flik i verktygslådan när du väljer modulen.