Viktigt

Översättning är en gemenskapsinsats du kan gå med i. Den här sidan är för närvarande översatt till 99.23%.

11.2. Skapa lager

Lager kan skapas på många olika sätt, bland annat:

  • tomma lager från början

  • lager från befintliga lager

  • lager från urklipp

  • lager som ett resultat av en SQL-liknande fråga baserad på ett eller flera lager (virtual layers)

QGIS innehåller också verktyg för att importera/exportera från/till olika format.

11.2.1. Skapa nya vektorlager

I QGIS kan du skapa nya lager i olika format. Det finns verktyg för att skapa GeoPackage-, Shapefile-, SpatiaLite-, GPX-format och Temporary Scratch-lager (även kallade minneslager). Skapande av ett nytt GRASS-lager stöds inom GRASS-tillägget.

11.2.1.1. Skapa ett nytt GeoPackage-lager

Du skapar ett nytt GeoPackage-lager genom att trycka på knappen newGeoPackageLayer New GeoPackage Layer… i menyn Layer ► Create Layer ► eller i verktygsfältet Data Source Manager. Du kan också skapa ett nytt GeoPackage-lager via Browser Panel genom att välja Create Database and Layer…. Dialogrutan New GeoPackage Layer visas enligt bilden i Fig. 11.24.

../../../_images/editNewGeoPackage.png

Fig. 11.24 Skapa en ny dialogruta för GeoPackage-lager

  1. Det första steget är att ange databasfilens plats. Detta kan göras genom att trycka på knappen till höger om fältet Database och välja en befintlig GeoPackage-fil eller skapa en ny. QGIS kommer automatiskt att lägga till rätt tillägg till det namn du anger.

  2. Ge det nya lagret / tabellen ett namn (Tabellnamn)

  3. Definiera Geometri typ. Om det inte är ett geometrilöst lager kan du ange om det ska Inkludera Z-dimension och/eller Inkludera M-värden.

  4. Ange referenssystemet för koordinaterna med hjälp av knappen setProjection

För att lägga till fält i det lager du skapar:

  1. Ange fältets Namn

  2. Välj data Type. Följande typer stöds: Textdata, Hela tal (både heltal och heltal64), Decimaltal, Datum och Datum och tid, Binär (BLOB) och Boolean.

  3. Ange värdenas Maximala längd beroende på det valda dataformatet.

  4. Klicka på knappen newAttribute Add to Fields List (Lägg till i listan över fält)

  5. Upprepa stegen ovan för varje fält som du behöver lägga till

  6. Du kan senare ändra fältordningen med hjälp av knapparna pil upp Flytta upp och pilNed Flytta ner

  7. När du är nöjd med attributen klickar du på OK. QGIS lägger till det nya lagret i teckenförklaringen och du kan redigera det enligt beskrivningen i avsnitt Digitalisering av ett befintligt lager.

När ett GeoPackage-lager skapas genererar QGIS som standard en Feature id column som kallas fid och som fungerar som primärnyckel för lagret. Namnet kan ändras. Geometrifältet, om det finns, får namnet geometry och du kan välja att Create a spatial index på det. Dessa alternativ finns under Advanced Options tillsammans med Layer identifier (kort mänskligt läsbart namn på lagret) och Layer description.

Ytterligare hantering av GeoPackage-lager kan göras med DB Manager.

11.2.1.2. Skapa ett nytt Shapefile-lager

Om du vill skapa ett nytt lager i ESRI Shapefile-format trycker du på knappen newVectorLayer Nytt Shapefil-lager… i menyn Lager ► Skapa lager ► eller i verktygsfältet Datakällshanterare. Dialogrutan Nytt Shapefil-lager visas som visas i Fig. 11.25.

  1. Ange en sökväg och ett filnamn med hjälp av knappen bredvid Filnamn. QGIS kommer automatiskt att lägga till rätt tillägg till det namn du anger.

  2. Ange sedan Filkodning för data

  3. Välj Geometrityp för lagret: Ingen geometri (resulterar i en fil i formatet .DBF), punkt, multipunkt, linje eller polygon

  4. Ange om geometrin ska ha ytterligare dimensioner: None, Z (+ M värden) eller M värden

  5. Ange referenssystemet för koordinaterna med hjälp av knappen setProjection

../../../_images/editNewVector.png

Fig. 11.25 Skapa en ny Shapefile-lagerdialog

För att lägga till fält i det lager du skapar:

  1. Ange fältets Namn

  2. Välj data Typ. Endast attributen Decimal number, Whole number, Text data, Date och Boolean stöds.

  3. Beroende på valt dataformat anger du Längd och Precision.

  4. Klicka på knappen newAttribute Add to Fields List (Lägg till i listan över fält)

  5. Upprepa stegen ovan för varje fält som du behöver lägga till

  6. Du kan senare ändra fältordningen med hjälp av knapparna pil upp Flytta upp och pilNed Flytta ner

  7. När du är nöjd med attributen klickar du på OK. QGIS lägger till det nya lagret i teckenförklaringen och du kan redigera det enligt beskrivningen i avsnitt Digitalisering av ett befintligt lager.

Som standard läggs en kolumn med första heltalet id till, men den kan tas bort.

11.2.1.3. Skapa ett nytt SpatiaLite-lager

För att skapa ett nytt SpatiaLite-lager trycker du på knappen newSpatiaLiteLayer Nytt SpatiaLite-lager… i menyn Lager ► Skapa lager ► eller i verktygsfältet Datakällshanterare. Dialogrutan Nytt SpatiaLite-lager kommer att visas som visas i Fig. 11.26.

../../../_images/editNewSpatialite.png

Fig. 11.26 Skapa en dialogruta för ett nytt SpatiaLite-lager

  1. Det första steget är att ange databasfilens plats. Detta kan göras genom att trycka på -knappen till höger om Database-fältet och välja en befintlig SpatiaLite-fil eller skapa en ny. QGIS kommer automatiskt att lägga till rätt tillägg till det namn du anger.

  2. Ange ett namn (Lagernamn) för det nya lagret

  3. Definiera Geometri typ. Om det inte är ett geometrilöst lager kan du ange om det ska Inkludera Z-dimension och/eller Inkludera M-värden.

  4. Ange referenssystemet för koordinaterna med hjälp av knappen setProjection.

För att lägga till fält i det lager du skapar:

  1. Ange fältets Namn

  2. Välj datatyp Type. Följande typer stöds: Textdata, Hela tal, Decimaltal, Datum och Datumtid.

  3. Klicka på knappen newAttribute Add to Fields List (Lägg till i listan över fält)

  4. Upprepa stegen ovan för varje fält som du behöver lägga till

  5. Du kan senare ändra fältordningen med hjälp av knapparna pil upp Flytta upp och pilNed Flytta ner

  6. När du är nöjd med attributen klickar du på OK. QGIS lägger till det nya lagret i teckenförklaringen och du kan redigera det enligt beskrivningen i avsnitt Digitalisering av ett befintligt lager.

Om du vill kan du markera checkbox Create an autoincrementing primary key under avsnittet Advanced Options. Du kan också byta namn på kolumnen Geometry (geometry som standard).

Ytterligare hantering av SpatiaLite-lager kan göras med DB Manager.

11.2.1.4. Skapa ett nytt Mesh-lager

För att skapa ett nytt Mesh-lager, tryck på knappen newMeshLayer Nytt nätlager… i menyn Lager ► Skapa lager ► eller från verktygsfältet Data Source Manager. Dialogrutan Nytt nätlager kommer att visas som visas i Fig. 11.27.

../../../_images/editNewMesh.png

Fig. 11.27 Skapa en dialogruta för ett nytt mesh-lager

  1. Det första steget är att ange platsen för mesh-filen. Detta kan göras genom att trycka på knappen till höger om fältet Filnamn och välja en befintlig mesh-fil eller skapa en ny.

  2. Ange ett namn (Lagernamn), dvs. det namn som lagret visas med i panelen Lager)

  3. Välj File format: för närvarande stöds följande mesh-filformat: 2DM Mesh File (*.2dm), Selafin File (*.slf) och UGRID (*.nc).

  4. Ange Koordinatreferenssystem som ska tilldelas datasetet

  5. Ovanstående steg genererar ett tomt lager som du sedan kan digitalisera vertikaler och lägga till datasetgrupper i. Det är dock också möjligt att initiera lagret med ett befintligt mesh-lager, dvs. fylla det nya lagret med vertikaler eller ytor från det andra lagret. För att göra detta:

    1. Check checkbox Initialisera nät med hjälp av

    2. och välj antingen en Mesh från det aktuella projektet eller Mesh från en fil. Information om den valda mesh-filen visas för kontroll.

    Observera att endast ramen för mesh-lagret överförs till det nya lagret; deras dataset kopieras inte.

11.2.1.5. Skapa ett nytt GPX-lager

Så här skapar du en ny GPX-fil:

  1. Välj Skapa lager ► newGpx Nytt GPX-lager… från menyn Lager.

  2. I dialogrutan väljer du var du vill spara den nya filen, namnger den och trycker på Save.

  3. Tre nya lager läggs till i Lagerpanel:

    • ett punktlager för att digitalisera platser (waypoints) med fält som lagrar namn, höjd, kommentar, beskrivning, källa, webbadress och webbadressnamn

    • ett linjelager för att digitalisera sekvenser av platser som utgör en planerad rutt (routes) med fält som lagrar namn, symbol, nummer, kommentar, beskrivning, källa, url, url-namn

    • och ett linjelager för att spåra mottagarens rörelse över tiden (spår) med fält som lagrar namn, symbol, nummer, kommentar, beskrivning, källa, webbadress, webbadressnamn.

  4. Du kan nu redigera vilket som helst av dem enligt beskrivningen i avsnitt Digitalisering av ett befintligt lager.

11.2.1.6. Skapa ett nytt temporärt skrapskikt

Temporary Scratch Layers är minneslager, vilket innebär att de inte sparas på disk och kommer att kasseras när QGIS stängs. De kan vara praktiska för att lagra funktioner som du behöver tillfälligt eller som mellanlager under geobearbetning.

För att skapa ett nytt Temporary Scratch-lager, välj posten createMemory New Temporary Scratch Layer… i menyn Layer ► Create Layer ► eller i verktygsfältet Data Source Manager. Dialogrutan New Temporary Scratch Layer kommer att visas som visas i Fig. 11.28. Och så vidare:

  1. Ange Lagernamn

  2. Välj Geometri typ. Här kan du skapa en:

    • lager av typen No geometry, används som enkel tabell,

    • Point eller MultiPoint lager,

    • LineString/CompoundCurve eller MultiLineString/MultiCurve lager,

    • Polygon/CurvePolygon eller MultiPolygon/MultiSurface lager.

  3. För geometriska typer anger du datauppsättningens dimensioner: kontrollera om den ska Include Z dimension och/eller Include M values

  4. Ange referenssystemet för koordinaterna med hjälp av knappen setProjection.

  5. Lägg till fält i lagret. Observera att till skillnad från många andra format kan tillfälliga lager skapas utan några fält. Detta steg är alltså valfritt.

    1. Ange fältets Namn

    2. Välj data Type: Text, Whole number, Decimal number, Boolean, Date, Time, Date & Time och Binary (BLOB) stöds.

    3. Beroende på det valda dataformatet anger du Längd och Precision

    4. Klicka på knappen newAttribute Add to Fields List (Lägg till i listan över fält)

    5. Upprepa stegen ovan för varje fält som du behöver lägga till

    6. Du kan senare ändra fältordningen med hjälp av knapparna pil upp Flytta upp och pilNed Flytta ner

  6. När du är nöjd med inställningarna klickar du på OK. QGIS lägger till det nya lagret i panelen Lager, och du kan redigera det enligt beskrivningen i avsnitt Digitalisering av ett befintligt lager.

../../../_images/editNewTemporaryLayer.png

Fig. 11.28 Skapa en ny dialogruta för lagret Temporary Scratch

Du kan också skapa förfyllda tillfälliga scratch-lager med hjälp av t.ex. urklipp (se Skapa nya lager från urklipp) eller som ett resultat av en Processing algorithm.

Tips

Permanent lagring av ett minneslager på disk

För att undvika dataförlust när du avslutar ett projekt med tillfälliga scratch-lager kan du spara dessa lager i valfritt vektorformat som stöds av QGIS:

  • genom att klicka på indikatorikonen indicatorMemory bredvid lagret;

  • genom att välja Make permanent i lagrets kontextuella meny;

  • med hjälp av Exportera ► i snabbmenyn eller Lager ► Spara som… i menyn.

Alla dessa kommandon öppnar dialogrutan Spara vektorlager som som beskrivs i avsnittet Skapa nya lager från ett befintligt lager och den sparade filen ersätter den tillfälliga filen i panelen Lager.

11.2.2. Skapa nya lager från ett befintligt lager

Lager (raster, vektor och punktmoln) kan sparas i ett annat format och/eller omprojiceras till ett annat koordinatreferenssystem (CRS) med hjälp av menyn Layer ► Save As… eller genom att högerklicka på lagret i Layers panel och välja:

  • Export ► Spara som… för raster- och punktmolnslager

  • Exportera ► Spara funktioner som… eller Exportera ► Save valda funktioner som… för vektorlager.

  • Dra och släpp lagret från lagerträdet till PostGIS-posten i Browser Panel. Observera att du måste ha en PostGIS-anslutning i Browser Panel.

11.2.2.1. Vanliga parametrar

Dialogrutan Save Layer as… visar flera parametrar för att ändra beteendet när lagret sparas. Några av de vanligaste parametrarna för raster och vektor är:

  • Filnamn: Filens plats på hårddisken. Den kan hänvisa till utdatalagret eller till en behållare som lagrar lagret (t.ex. databasliknande format som GeoPackage, SpatiaLite eller Open Document Spreadsheets).

  • CRS: kan ändras för att återföra data

  • Extent: begränsar omfattningen av den indata som ska exporteras med hjälp av widgeten extent_selector

  • Lägg till sparad fil på kartan: för att lägga till det nya lagret på duken

Vissa parametrar är dock specifika för vissa format:

11.2.2.2. Raster-specifika parametrar

Beroende på exportformat är det möjligt att vissa av dessa alternativ inte är tillgängliga:

  • Utmatningsläge (det kan vara raw data eller renderad bild)

  • Format: exporterar till alla rasterformat som GDAL kan skriva till, t.ex. GeoTiff, GeoPackage, MBTiles, Geospatial PDF, SAGA GIS Binary Grid, Intergraph Raster, ESRI .hdr Labelled…

  • Resolution

  • Create Options: använd avancerade alternativ (filkomprimering, blockstorlekar, kolorimetri …) när du genererar filer, antingen från fördefinierade skapande profiler relaterade till utdataformatet eller genom att ställa in varje parameter.

  • Pyramider skapelse

  • VRT Tiles ifall du valde att checkbox Create VRT

  • Inga datavärden

../../../_images/saveasraster.png

Fig. 11.29 Spara som ett nytt rasterlager

11.2.2.3. Vektorspecifika parametrar

Beroende på exportformat kan några av dessa alternativ vara tillgängliga:

  • Format: exporterar till alla vektorformat som GDAL kan skriva till, t.ex. GeoPackage, GML, ESRI Shapefile, AutoCAD DXF, ESRI FileGDB, Mapinfo TAB eller MIF, SpatiaLite, CSV, KML, ODS, …

  • Lagernamn: tillgänglig när Filnamn hänvisar till ett containerliknande format, denna post representerar utmatningslagret.

  • Kodning

  • Spara endast utvalda funktioner

  • Välj fält som ska exporteras och deras exportalternativ: ger möjlighet att exportera fält med anpassade namn och form widget-inställningar:

    • Markera raderna under kolumnen Name för att välja fält som ska behållas i utdatalagret, eller tryck på knapparna Markera allt eller Avmarkera allt

    • Aktivera kryssrutan Use aliases for exported name för att fylla i kolumnen Export name med motsvarande fältalias eller återställa till det ursprungliga fältnamnet. Om du dubbelklickar på en cell redigeras även namnet.

    • Beroende på om widgetar för attributformulär används kan du ersätta alla valda råa fältvärden med visade värden. Om t.ex. en widget för ”värdekarta” används för ett fält kommer utdatalagret att innehålla beskrivningsvärdena i stället för de ursprungliga värdena. Ersättningen kan också göras fält för fält, i kolumnen Replace with displayed values (Ersätt med visade värden).

  • Persist layer metadata: säkerställer att alla lager metadata som finns i källlagret kopieras och lagras:

    • i det nyskapade lagret, om utdata är i GeoPackage-format

    • som en .qmd-fil tillsammans med utdatalagret, för andra format. Observera att filbaserade format som stöder mer än en dataset (t.ex. SpatiaLite, DXF, …) kan ha ett oavsiktligt beteende.

  • Symbology export: kan användas främst för DXF-export och för alla filformat som hanterar OGR-funktionsstilar (se anmärkning nedan) som DXF-, KML-, tab-filformat:

    • Ingen symbologi: standardstil för den applikation som läser data

    • Feature symbology: spara stil med OGR Feature Styles (se anmärkning nedan)

    • Symbollagersymbologi: spara med OGR Feature Styles (se anmärkning nedan) men exportera samma geometri flera gånger om det finns flera symbolskiktssymboler som används

    • Ett Scale-värde kan tillämpas på de senaste alternativen

Observera

OGR Feature Styles är ett sätt att lagra stil direkt i data som ett dolt attribut. Endast vissa format kan hantera den här typen av information. KML-, DXF- och TAB-filformat är sådana format. För avancerade detaljer kan du läsa dokumentet OGR Feature Styles specification.

  • Geometry: du kan konfigurera geometrifunktionerna för utdatalagret

    • geometry type: behåller den ursprungliga geometrin för objekten när den är inställd på Automatic, annars tas den bort eller ersätts med valfri typ. Du kan lägga till en tom geometrikolumn i en attributtabell och ta bort geometrikolumnen i ett spatialt lager.

    • Force multi-type: tvingar fram skapandet av multigeometriska funktioner i lagret.

    • Inkludera z-dimension till geometrier.

Tips

Genom att åsidosätta lagrets geometrityp kan du t.ex. spara en geometrilös tabell (t.ex. .csv-fil) i en shapefil MED valfri geometrityp (punkt, linje, polygon), så att geometrier sedan kan läggas till manuellt i raderna med verktyget addPart Add Part.

  • Datasource Options, Layer Options eller Custom Options som gör att du kan konfigurera avancerade parametrar beroende på utdataformat. Vissa beskrivs i Utforska dataformat och fält men för fullständiga detaljer, se dokumentationen för drivrutinen GDAL. Varje filformat har sina egna anpassade parametrar, t.ex. för formatet GeoJSON, se dokumentationen för GDAL GeoJSON.

../../../_images/saveasvector.png

Fig. 11.30 Spara som ett nytt vektorlager

När du sparar ett vektorlager i en befintlig fil kan användaren, beroende på kapaciteten i utdataformatet (Geopackage, SpatiaLite, FileGDB …), bestämma om den ska:

  • skriva över hela filen

  • skriva över endast mållagret (lagernamnet är konfigurerbart)

  • lägga till funktioner till det befintliga mållagret

  • lägg till funktioner, lägg till nya fält om det finns några.

För format som ESRI Shapefile, MapInfo .tab är det också möjligt att lägga till funktioner.

11.2.2.4. Specifika parametrar för punktmoln

På samma sätt som raster- och vektorlager kan punktmolnslager sparas i ett annat format och/eller omprojiceras till ett annat koordinatreferenssystem (CRS). Detta gör att du kan exportera ett punktmolnslager till vektor- eller punktmolnsformat. Format som stöds för närvarande är: Temporary scratch (minneslager), GeoPackage, ESRI Shapefile, DXF och LAS/LAZ punktmoln. Förutom de vanliga parametrarna som anges ovan innehåller export av punktmolnslager följande alternativ:

  • Filtrera efter polygonlager: Gör att du kan filtrera punktmolnsdata baserat på ett polygonlager.

  • Elevation Range: Möjliggör filtrering av punktmolnsdata baserat på ett specificerat Z-intervall.

  • Begränsa antalet punkter: Ger ett alternativ för att begränsa antalet punkter som exporteras från punktmolnslagret.

../../../_images/saveas_pointcloud.png

Fig. 11.31 Spara ett punktmolnslager som ett nytt lager

11.2.3. Skapa nya DXF-filer

Förutom dialogen Save As… som innehåller alternativ för att exportera ett enskilt lager till ett annat format, inklusive *.DXF, innehåller QGIS ett annat verktyg för att exportera flera lager som ett enda DXF-lager. Det finns tillgängligt i menyn Project ► Import/Export ► Export Project to DXF….

../../../_images/export_dxf.png

Fig. 11.32 Exportera ett projekt till DXF-dialogrutan

I dialogrutan DXF Export:

  1. Ange destinationsfilen.

  2. Välj symbologiläge och skala (se anmärkningen OGR Feature Styles), om tillämpligt.

  3. Välj data Encoding.

  4. Välj den CRS som ska tillämpas: de valda lagren kommer att reprojiceras till den angivna CRS.

  5. Välj de lager som ska ingå i DXF-filerna antingen genom att markera dem i tabellwidgeten eller genom att automatiskt välja dem från ett befintligt map theme. Knapparna Markera allt och Avmarkera allt kan hjälpa till att snabbt ställa in vilka data som ska exporteras.

    För varje lager kan du:

    • Åsidosätt namnet på utdatalagret utan att ändra det ursprungliga projektlagret. Klicka på Layer-namnet i dialogrutan och skriv det utdatanamn som ska användas.

    • Attribut för utmatningslager: Välj om du vill exportera alla funktioner i ett enda DXF-lager eller förlita dig på ett fält vars värden används för att dela upp funktionerna i lager i DXF-utdata. I det senare fallet kommer varje lager att få sitt namn från motsvarande fältvärde.

    • Tillåt datadefinierade symbolblock:

    • Maximalt antal symbolblock: skapar symbolblock upp till den angivna gränsen och börjar med de block som innehåller flest referenser. De andra symbolerna skrivs som de är. -1 betyder ingen begränsning.

Alternativt kan du också välja att:

  • unchecked Använd lagrets titel som namn om det är inställt istället för själva lagernamnet: titeln hämtas från lagrets egenskaper metadata eller server;

  • unchecked Exportera funktioner som skär den aktuella kartutbredningen;

  • unchecked Tvinga fram 2d-utdata (t.ex. för att stödja polylinjebredd);

  • checkbox Exportera etikett som MTEXT-element eller TEXT-element;

  • unchecked Använd endast utvalda funktioner;

  • unchecked Exportera linjer med noll bredd: alla linjer exporteras med minimal bredd 0 (hårlinje) om den är aktiverad. Detta hjälper till att hålla linjerna minimala i filen oavsett zoomnivå, och kan vara praktiskt för att göra ytterligare CAD-redigering med den exporterade dxf, särskilt om det finns många funktioner bredvid varandra på kartan.

Observera

Prioriteringen för att definiera namnet på utdatalagret är följande:

  1. Fältvärdet från Output layer attribute

  2. Det åsidosatta namnet i Layer-kolumnen

  3. Alternativet Använd lagrets titel som namn om det är inställt

  4. Lagrets namn

Aktuella inställningar som definieras i dialogrutan DXF Export kan lagras i en XML-fil så att de kan återanvändas i andra sessioner. För detta har kombinationsrutan Settings två alternativ: Load Settings from File… och Save Settings to File….

11.2.4. Skapa nya lager från urklipp

Funktioner som finns i urklippet kan klistras in i ett nytt lager. Detta gör du genom att välja några funktioner, kopiera dem till urklippet och sedan klistra in dem i ett nytt lager med Edit ► Paste Features as ► och välja:

Ett nytt lager, fyllt med valda funktioner och deras attribut, skapas (och läggs till i kartbilden).

Observera

Det är möjligt att skapa lager från urklipp med objekt som markerats och kopierats i QGIS samt objekt från ett annat program, så länge deras geometrier definieras med hjälp av välkänd text (WKT).

11.2.5. Skapa virtuella lager

Ett virtuellt lager är en speciell typ av vektorlager. Det gör att du kan definiera ett lager som resultatet av en SQL-fråga som involverar ett valfritt antal andra vektorlager som QGIS kan öppna. Virtuella lager innehåller inte data i sig utan kan ses som vyer.

För att skapa ett virtuellt lager öppnar du dialogrutan för skapande av virtuella lager:

  • välja posten addVirtualLayer Lägg till/redigera virtuellt lager i menyn Lager ► Lägg till lager ►;

  • aktivera fliken addVirtualLayer Lägg till virtuellt lager i dialogrutan Datakällshanterare;

  • eller med hjälp av dialogrutan DB Manager.

I dialogrutan kan du ange en Layer name och en SQL Query. Frågan kan använda namnet (eller id) på laddade vektorlager som tabeller, samt deras fältnamn som kolumner.

Om du till exempel har ett lager som heter airports kan du skapa ett nytt virtuellt lager som heter public_airports med en SQL-fråga som:

SELECT *
FROM airports
WHERE USE = "Civilian/Public"

SQL-frågan kommer att köras, oavsett den underliggande leverantören av lagret airports, även om denna leverantör inte direkt stöder SQL-frågor.

../../../_images/create_virtual_layers.png

Fig. 11.33 Skapa dialog för virtuella lager

Joins och komplexa frågor kan också skapas, till exempel för att koppla samman flygplatser och landinformation:

SELECT airports.*, country.population
FROM airports
JOIN country
ON airports.country = country.name

Observera

Det är också möjligt att skapa virtuella lager med hjälp av SQL-fönstret i DB Manager Plugin.

11.2.5.1. Inbäddning av lager för användning i frågor

Förutom de vektorlager som finns tillgängliga i kartbilden kan användaren lägga till lager i listan Embedded layers, som kan användas i frågor utan att de behöver visas i kartbilden eller panelen Layers.

För att bädda in ett lager klickar du på Lägg till och anger Lokalt namn, Datakälla, Kodning och sökvägen till Källa.

Med knappen Import kan du lägga till lager i kartbilden i listan Inbäddade lager. Dessa lager kan sedan tas bort från panelen Lager utan att befintliga frågor bryts.

11.2.5.2. Frågespråk som stöds

Den underliggande motorn använder SQLite och SpatiaLite för att fungera.

Det innebär att du kan använda all SQL som din lokala installation av SQLite förstår.

Funktioner från SQLite och spatiala funktioner från SpatiaLite kan också användas i en virtuell lagerfråga. Om du t.ex. vill skapa ett punktlager av ett lager med enbart attribut kan du göra det med en fråga som liknar:

SELECT id, MakePoint(x, y, 4326) as geometry
FROM coordinates

Funktioner i QGIS-uttrycken kan också användas i en virtuell lagerfråga.

För att referera till geometrikolumnen i ett lager, använd namnet geometry.

I motsats till en ren SQL-fråga måste alla fält i en virtuell lagerfråga namnges. Glöm inte att använda nyckelordet as för att namnge dina kolumner om de är resultatet av en beräkning eller ett funktionsanrop.

11.2.5.3. Problem med prestanda

Med standardparametrar kommer den virtuella lagermotorn att göra sitt bästa för att upptäcka typen av de olika kolumnerna i frågan, inklusive typen av geometrikolumn om en sådan finns.

Detta görs genom att introspektera frågan när det är möjligt eller genom att hämta den första raden i frågan (LIMIT 1) som en sista utväg. Att hämta den första raden i resultatet bara för att skapa lagret kan vara oönskat av prestandaskäl.

Parametrar för dialogrutan för skapande:

  • Unique identifier column: anger ett fält i frågan som representerar unika heltalsvärden som QGIS kan använda som radidentifierare. Som standard används ett automatiskt ökande heltalsvärde. Om du definierar en kolumn för unika identifierare går det snabbare att välja rader efter id.

  • Ingen geometri: tvingar det virtuella lagret att ignorera alla geometriska fält. Det resulterande lagret är ett lager med enbart attribut.

  • Geometry Column: anger namnet på geometrikolumnen.

  • Geometry Type: anger geometrins typ.

  • Geometry CRS: anger det virtuella lagrets referenssystem för koordinater.

11.2.5.4. Särskilda kommentarer

Motorn för det virtuella lagret försöker fastställa typen för varje kolumn i frågan. Om det misslyckas hämtas den första raden i frågan för att fastställa kolumntyperna.

Typen av en viss kolumn kan anges direkt i frågan med hjälp av några speciella kommentarer.

Syntaxen är följande: /*:typ*/. Den måste placeras precis efter namnet på en kolumn. type kan vara antingen int för heltal, real för flyttal eller text.

Till exempel:

SELECT id+1 as nid /*:int*/
FROM table

Geometrikolumnens typ och koordinatreferenssystem kan också ställas in med hjälp av särskilda kommentarer med följande syntax /*:gtype:srid*/ där gtype är geometritypen (point, linestring, polygon, multipoint, multilinestring eller multipolygon) och srid ett heltal som representerar EPSG-koden för ett koordinatreferenssystem.

11.2.5.5. Användning av index

När du begär ett lager via ett virtuellt lager kommer källlagrets index att användas på följande sätt:

  • om ett =-predikat används på lagrets primärnyckelkolumn, kommer den underliggande dataleverantören att tillfrågas om ett visst id (FilterFid)

  • för alla andra predikat (>, <=, !=, etc.) eller på en kolumn utan primärnyckel, kommer en begäran byggd från ett uttryck att användas för att begära den underliggande vektordataleverantören. Det betyder att index kan användas på databasleverantörer om de finns.

Det finns en specifik syntax för att hantera spatiala predikat i förfrågningar och utlöser användningen av ett spatialt index: en dold kolumn med namnet _search_frame_ finns för varje virtuellt lager. Den här kolumnen kan jämföras med en bounding box för att visa att den är lika. Ett exempel:

SELECT *
FROM vtab
WHERE _search_frame_=BuildMbr(-2.10,49.38,-1.3,49.99,4326)

Spatiala binära predikat som ST_Intersects snabbas upp avsevärt när de används tillsammans med denna spatiala indexsyntax.