15.3. Gegevensindelingen en velden verkennen

15.3.1. Rastergegevens

GIS rastergegevens zijn matrices van afzonderlijke cellen die objecten / fenomenen weergeven op, boven of onder het oppervlak van de aarde. Elke cel in het raster heeft dezelfde grootte, en cellen zijn gewoonlijk rechthoekig (in QGIS zullen zij altijd rechthoekig zijn). Normale raster gegevenssets bevatten gegevens van remote sensing, zoals luchtfoto’s of satellietafbeeldingen en gemodelleerde gegevens, zoals hoogte of temperatuur.

Anders dan vectorgegevens, hebben rastergegevens gewoonlijk geen geassocieerd databaserecord voor elke cel. Zij zijn voorzien van geocoderingen op pixelresolutie en de X/Y-coördinaat van een hoekpixel van de rasterlaag. Dit stelt QGIS in staat de gegevens correct in het kaartvenster te plaatsen.

De indeling GeoPackage is handig voor het opslaan van rastergegevens bij het werken met QGIS. De populaire en krachtige indeling GeoTiff is een goed alternatief.

QGIS maakt gebruik van informatie over geo-verwijzingen in het rasterbestand zelf (bijvoorbeeld GeoTiff) of in een geassocieerd world file om de rastergegevens correct weer te geven.

15.3.2. Vectorgegevens

Veel mogelijkheden en gereedschappen die beschikbaar zijn in QGIS werken hetzelfde, ongeacht de bron voor de vectorgegevens. Echter, vanwege de verschillen in specificaties van indelingen (GeoPackage, ESRI Shapefile, MapInfo en MicroStation bestandsindelingen, AutoCAD DXF, PostGIS, SpatiaLite, Oracle Spatial, MSSQL Spatial, SAP HANA Spatial databases, en nog veel meer), zou QGIS sommige van hun eigenschappen verschillend af kunnen handelen. Ondersteuning wordt verschaft door de ``GDAL vector drivers <https://gdal.org/drivers/vector/index.html>`_. Dit gedeelte beschrijft hoe te werken met deze specifieken.

Notitie

QGIS ondersteunt objecttypen (multi)punt, (multi)lijn, (multi)polygoon, CircularString, CompoundCurve, CurvePolygon, MultiCurve, MultiSurface, alle optioneel met Z- en/of M-waarden.

U zou ook moeten onthouden dat sommige stuurprogramma’s enkele van deze objecttypen niet ondersteunen: zoals objecttype CircularString, CompoundCurve, CurvePolygon, MultiCurve, MultiSurface. QGIS zal ze converteren.

15.3.2.1. GeoPackage

De indeling GeoPackage (GPKG) is platform-onafhankelijk, en is geïmplementeerd als een container voor een database van SQLite, en kan worden gebruikt om zowel vector- als rastergegevens op te slaan. De indeling werd gedefinieerd door het Open Geospatial Consortium (OGC), en werd gepubliceerd in 2014.

GeoPackage kan worden gebruikt om het volgende op te slaan in een database van SQLite:

  • vector-objecten

  • tegel-matrixsets van afbeeldingen en raster-kaarten

  • attributen (niet ruimtelijke gegevens)

  • extensies

Sinds QGIS versie 3.8 kan GeoPackage ook projecten van QGIS opslaan. Lagen van GeoPackage mogen velden voor JSON hebben.

GeoPackage is de standaardindeling voor vectorgegevens in QGIS.

15.3.2.2. ESRI Shapefile-indeling

De indeling ESRI Shapefile is nog steeds een van de meest gebruikte vector bestandsindelingen, zelfs terwijl het enkele beperkingen heeft, vergeleken met andere bestandsindelingen, zoals GeoPackage en SpatiaLite.

Een gegevensset met een indeling ESRI Shapefile bestaat feitelijk uit meerdere bestanden. De volgende drie zijn vereist:

  1. .shp bestand dat de geometrieën van de objecten bevat

  2. .dbf bestand dat de attribuutwaarden bevat in de indeling voor dBase

  3. .shx het indexbestand

Een gegevensset met de indeling ESRI Shapefile kan ook een bestand bevatten met de bestandsextensie .prj, het projectiebestand dat informatie over het coördinatensysteem bevat. Alhoewel een projectiebestand erg handig is, is het niet noodzakelijk. Een gegevensset Shapefile kan daarnaast nog meer bestanden bevatten. Voor verdere details, bekijk de technische specificaties van ESRI op technical specification.

GDAL heeft ondersteuning voor lezen-schrijven voor gecomprimeerde indeling ESRI Shapefile (shz en shp.zip).

Verbeteren van de uitvoering voor gegevenssets in de indeling ESRI Shapefile

U kunt een ruimtelijke index maken om de uitvoering van het tekenen van gegevenssets met de indeling ESRI Shapefile te verbeteren. Een ruimtelijke index zal er voor zorgen dat u sneller kunt in- en uitzoomen en het beeld kunt verschuiven. Ruimtelijke indexen die gebruikt worden door QGIS hebben de extensie .qix na de bestandsnaam.

Gebruik de volgende stappen om de index te maken:

  1. Laad een gegevensset in de indeling ESRI Shapefile (zie Het paneel Browser)

  2. Open het dialoogvenster Laageigenschappen door in de legenda te dubbelklikken op de naam van de laag of door met rechts te klikken en Eigenschappen… te selecteren in het contextmenu

  3. Klik, op de tab Bron, op de knop Ruimtelijke index maken

Problemen bij het laden van een bestand .prj

Als u een gegevensset in de indeling ESRI Shapefile met een bestand .prj laadt en QGIS is niet in staat het coördinaten referentiesysteem uit dat bestand te lezen, moet u de juiste projectie handmatig definiëren op de tab Laageigenschappen ► Bron van de laag door te klikken op de knop setProjection CRS selecteren. Dit omdat bestanden .prj vaak niet de volledige parameters verschaffen zoals die worden gebruikt in QGIS en zijn vermeld in het dialoogvenster CRS.

Als u met QGIS een nieuwe gegevensset in de indeling ESRI Shapefile maakt worden, om dezelfde reden, twee verschillende projectiebestanden gemaakt: een bestand .prj met beperkte parameters voor projectie, compatibel met software voor ESRI, en een bestand .qpj, dat alle parameters van het CRS verschaft. Iedere keer wanneer QGIS een bestand .qpj vindt, zal dat worden gebruikt in plaats van het bestand .prj.

15.3.2.3. Tekstgescheiden bestanden

Tekengescheiden tekstbestanden komen veel voor en worden breed gebruikt vanwege hun simpliciteit en leesbaarheid – gegevens kunnen worden bekeken en bewerkt in een normale tekstbewerker. Een tekengescheiden tekstbestand is gegevens in kolommen, gescheiden door een gedefinieerd teken en rijen gescheiden door regeleinden. De eerste rij bevat normaal gesproken de namen van de kolommen. Een veel voorkomend type tekengescheiden tekstbestand is een CSV (Comma Separated Values = kommagescheiden waarden), met kolommen die zijn gescheiden door komma’s. Tekengescheiden tekstbestanden kunnen ook positionele informatie bevatten (zie Informatie over geometrie opslaan in tekengescheiden tekstbestanden).

QGIS stelt u in staat een tekengescheiden tekstbestand te laden als een gewone laag of als een gewone tabel (zie Het paneel Browser of Een tekstgescheiden bestand importeren). Controleer eerst of het bestand voldoet aan de volgende vereisten:

  1. Het bestand moet een gescheiden kopregel met veldnamen hebben. Dit moet de eerste regel in het tekstbestand zijn (idealiter de eerste rij in het tekstbestand).

  2. Als geometrie zou moeten zijn ingeschakeld, moet het bestand veld(en) bevatten die de geometrie definiëren. Deze veld(en) mogen elke naam hebben.

  3. De velden voor X- en Y-coördinaten (als de geometrie wordt gedefinieerd door coördinaten) moeten zijn gespecificeerd als getallen. Het coördinatensysteem is niet belangrijk.

  4. Als u een CSV-bestand hebt met kolommen die geen tekenreeks zijn, mag u een begeleidend bestand CSVT hebben (bekijk het gedeelte CSVT-bestand gebruiken voor beheren van de opmaak van velden).

Het gegevensbestand met hoogtepunten elevp.csv in de voorbeeld gegevensset in QGIS, (bekijk het gedeelte Voorbeeldgegevens downloaden), is een voorbeeld van een geldig tekstbestand:

X;Y;ELEV
-300120;7689960;13
-654360;7562040;52
1640;7512840;3
[...]

Enkele opmerkingen met betrekking tot het tekstbestand:

  1. Het voorbeeld tekstbestand gebruikt ; (puntkomma) als scheidingsteken (elk teken mag worden gebruikt om de velden te scheiden).

  2. De eerst rij is de kopregel. Deze bevat de velden X, Y en ELEV.

  3. Er worden geen aanhalingstekens (") gebruikt om tekstvelden te scheiden

  4. De X-coördinaten zijn opgenomen in het veld X

  5. De Y-coördinaten zijn opgenomen in het veld Y

Informatie over geometrie opslaan in tekengescheiden tekstbestanden

Gescheiden tekstbestanden kunnen informatie over geometrie bevatten in twee belangrijke vormen:

  • Als coördinaten in afzonderlijke kolommen (bijv. Xkol, Ykol… ), voor gegevens van geometrie punt;

  • Als weergave wel bekende tekst (WKT) van geometrie in één enkele kolom, voor elk type geometrie.

Objecten met gebogen geometrieën (CircularString, CurvePolygon en CompoundCurve) worden ondersteund. Hier zijn enkele voorbeelden van typen geometrie in een tekengescheiden tekstbestand met geometrieën gecodeerd als WKT:

Label;WKT_geom
LineString;LINESTRING(10.0 20.0, 11.0 21.0, 13.0 25.5)
CircularString;CIRCULARSTRING(268 415,227 505,227 406)
CurvePolygon;CURVEPOLYGON(CIRCULARSTRING(1 3, 3 5, 4 7, 7 3, 1 3))
CompoundCurve;COMPOUNDCURVE((5 3, 5 13), CIRCULARSTRING(5 13, 7 15,
  9 13), (9 13, 9 3), CIRCULARSTRING(9 3, 7 1, 5 3))

Tekengescheiden tekstbestanden ondersteunen ook waarden Z en M in geometrieën:

LINESTRINGZ(10.0 20.0 30.0, 11.0 21.0 31.0, 11.0 22.0 30.0)

CSVT-bestand gebruiken voor beheren van de opmaak van velden

Bij het laden van CSV-bestanden gaat het stuurprogramma van GDAL er van uit dat alle velden tekenreeksen (d.i. tekst) is, tenzij anders is aangegeven. U kunt een bestand CSVT maken om GDAL (en QGIS) het type gegevens in de verschillende kolommen door te geven:

Type

Naam

Voorbeeld

Geheel getal

Integer

4

Boolean

Integer(Boolean)

true

Decimaal getal

Real

3.456

Datum

Date (YYYY-MM-DD)

2016-07-28

Tijd

Time (HH:MM:SS+nn)

18:33:12+00

Datum & Tijd

DateTime (YYYY-MM-DD HH:MM:SS+nn)

2016-07-28 18:33:12+00

CoordX

CoordX

8.8249

CoordY

CoordY

47.2274

Punt(X)

Punt(X)

8.8249

Punt(Y)

Punt(Y)

47.2274

WKT

WKT

POINT(15 20)

Het CSVT-bestand is een ÉÉNREGELIG platte tekstbestand met de gegevenstypes tussen aanhalingstekens en gescheiden door komma’s, bijv.:

"Integer","Real","String"

U mag zelfs de breedte en precisie van elke kolom specificeren, bijv.:

"Integer(6)","Real(5.5)","String(22)"

Dit bestand dient te worden opgeslagen in dezelfde map als het .csv-bestand, met dezelfde naam, maar met de extensie .csvt.

U vindt meer informatie op GDAL CSV Driver.

Tip

Veldtypen detecteren

In plaats van een CSVT-bestand te gebruiken om de gegevenstypen door te geven, verschaft QGIS de mogelijkheid om automatisch de veldtypen te detecteren en om de veronderstelde gegevenstypen te wijzigen.

15.3.2.4. PostGIS-lagen

Lagen voor PostGIS worden opgeslagen in een database van PostgreSQL. De voordelen van PostGIS zijn mogelijkheden voor ruimtelijk indexeren, filteren en bevragen. Door PostGIS te gebruiken werken functies voor vectors, zoals selecteren en identificeren nauwkeuriger dan dat zij dat doen met lagen van GDAL in QGIS.

Tip

PostGIS-lagen

Normaal gesproken wordt een laag voor PostGIS geïdentificeerd door een item in de tabel geometry_columns. QGIS kan lagen laden die geen item in de tabel geometry_columns hebben. Dit omvat zowel tabellen als views. Bekijk uw handleiding voor PostgreSQL voor informatie over het maken van views.

Dit gedeelte bevat enkele details over hoe QGIS toegang heeft tot lagen van PostgreSQL. Meestal zou QGIS u een lijst met tabellen van de database moeten verschaffen die kunnen worden geladen, en het zal ze op verzoek laden. Wanneer u echter problemen hebt bij het laden van een tabel van PostgreSQL in QGIS, zou de informatie hieronder u misschien kunnen helpen berichten van QGIS te begrijpen en u aanwijzingen kunnen geven voor het aanpassen van de definitie van de tabel of view in PostgreSQL om QGIS toe te staan het te laden.

Notitie

Een database van PostgreSQL kan ook projecten van QGIS opslaan.

Primaire sleutel

QGIS vereist dat tabellen van PostgreSQL een uniek sleutelveld bevatten voor de te laden laag. In QGIS, moet deze tabel van het type int4 zijn, een integer (geheel getal) met een grootte van 4 bytes. Als een alternatief kan het veld CTID gebruikt worden als sleutelveld. Wanneer in een tabel een van deze velden ontbreekt zal in plaats daarvan het veld OID worden gebruikt. De uitvoering zal verbeteren door een index te definiëren op het sleutelveld. (onthoud dat sleutelvelden automatisch een index krijgen in PostgreSQL).

QGIS biedt een keuzevak Selecteren op ID die standaard wordt geactiveerd. Deze optie haalt de ID’s op zonder de attributen, wat in de meeste gevallen veel sneller is.

Weergave

Wanneer de PostgreSQL-laag een weergave betreft, bestaan dezelfde vereisten, maar weergaven hebben geen sleutelvelden of velden met regels die ervoor zorgen dat deze uniek zijn. Er moet eerst een sleutelveld (van het type integer) in het dialoogvenster van QGIS gedefinieerd zijn voordat de weergave geladen kan worden. Wanneer er niet een daarvoor geschikte kolom bestaat in de weergave zal de laag niet geladen worden in QGIS. Wanneer dat gebeurd kunt u dat oplossen door de weergave te veranderen zodat deze een geschikte kolom bevat (een type integer en ofwel een primaire sleutel of met een unieke beperking, bij voorkeur geïndexeerd).

Net als voor een tabel is standaard een keuzevak Select at id geactiveerd (zie boven voor de betekenis van het keuzevak). Het kan zin hebben deze optie uit te schakelen als u hele uitgebreide weergaven gebruikt.

Notitie

PostgreSQL foreign table

PostgreSQL foreign tables worden niet expliciet ondersteund door de provider PostgreSQL en zal worden afgehandeld als een view.

QGIS tabel layer_style en back-up database

Als u een back-up van uw database van PostGIS wilt maken met de opdrachten pg_dump en pg_restore, en daarna mislukt het herstellen van de standaard laagstijlen, zoals die werden opgeslagen door QGIS, dient u de optie XML in te stellen op DOCUMENT vóór de opdracht restore.

  1. Maak een GEWONE back-up van de tbabel ``layer_style`

  2. Open het bestand in een tekstbewerker

  3. Wijzig de regel SET xmloption = content; naar SET XML OPTION DOCUMENT;

  4. Sla het bestand op

  5. Gebruik psql om de tabel terug te plaatsen in de nieuwe database

Filteren aan de kant van de database

QGIS maakt het mogelijk objecten al te filteren aan de kant van de server. Selecteer Extra ► Opties ► Databronnen ► checkbox Expressies aan de zijde van de server uitvoeren indien mogelijk om dat te doen. Alleen ondersteunde expressies zullen naar de database worden verzonden. Expressies die niet ondersteunde operatoren of functies gebruiken zullen netjes terugvallen naar lokale evaluatie.

Ondersteuning van gegevenstypen van PostgreSQL

Typen gegevens die worden ondersteund door de provider PostgreSQL omvatten: integer, float, boolean, binary object, varchar, geometry, timestamp, array, hstore en json.

15.3.2.5. Importeren van gegevens in PostgreSQL

Gegevens kunnen worden geïmporteerd in PostgreSQL/PostGIS met behulp van verscheidene programma’s, waaronder de plug-in DB Manager en de programma’s voor de opdrachtregel shp2pgsql en ogr2ogr.

DB Manager

QGIS heeft standaard ook de plug-in dbManager DB Manager. Deze kan gebruikt worden om gegevens te laden en het ondersteunt ook schema’s. Bekijk het gedeelte Plug-in DB Manager voor meer informatie.

shp2pgsql

PostGIS bevat een programma, genaamd shp2pgsql, dat kan worden gebruikt om gegevenssets in de indeling Shapefile te importeren in een voor PostGIS-ingeschakelde database. Gebruik bijvoorbeeld de volgende opdracht om een gegevensset in de indeling Shapefile, genaamd lakes.shp, te importeren in een database van PostgreSQL, genaamd gis_data,

shp2pgsql -s 2964 lakes.shp lakes_new | psql gis_data

Dit maakt een nieuwe laag, genaamd lakes_new, in de database gis_data. De nieuwe laag zal de spatial reference identifier (SRID) 2964 hebben. Bekijk het gedeelte Werken met projecties voor meer informatie over ruimtelijke referentiesystemen en projecties.

Tip

Exporteren van gegevens uit PostGIS

Er is ook een programma voor het exporteren van gegevenssets uit PostGIS naar de indeling van Shapefile: pgsql2shp. Het wordt meegeleverd met uw distributie van PostGIS.

ogr2ogr

In aanvulling op shp2pgsql en DB Manager, is er nog een ander gereedschap voor het invoeren van geografische gegevens in PostGIS: ogr2ogr. Het maakt deel uit van uw installatie voor GDAL.

Doe het volgende om een gegevensset in de indeling Shapefile te importeren in PostGIS:

ogr2ogr -f "PostgreSQL" PG:"dbname=postgis host=myhost.de user=postgres
password=topsecret" alaska.shp

Dit zal de gegevensset in de indeling Shapefile alaska.shp importeren in de database van PostGIS postgis met de gebruiker postgres met het wachtwoord topsecret op de hostserver myhost.de.

Onthoud dat GDAL moet zijn gebouwd met PostgreSQL om PostGIS te ondersteunen. U kunt dit verifiëren door te typen (in nix):

ogrinfo --formats | grep -i post

Als u de voorkeur hebt om de opdracht COPY van PostgreSQL te gebruiken in plaats van de standaard methode INSERT INTO, kunt u de volgende omgevingsvariabele exporteren (tenminste beschikbaar op nix en osx):

export PG_USE_COPY=YES

ogr2ogr maakt geen ruimtelijke indexen, zoals shp2pgsl wel doet. U moet ze achteraf handmatig maken, met de normale opdracht voor SQL CREATE INDEX, als een extra stap (zoals beschreven in het volgende gedeelte Verbeteren van de uitvoering).

Verbeteren van de uitvoering

Ophalen van objecten uit een database van PostgreSQL kan veel tijd vergen, speciaal over een netwerk. U kunt de uitvoering van het tekenen van lagen van PostgreSQL verbeteren door er voor te zorgen dat een ruimtelijke index voor PostGIS bestaat voor elke laag in de database. PostGIS ondersteunt het maken van een index GiST (Generalized Search Tree) om ruimtelijk zoeken te versnellen (informatie voor de index GiST is genomen uit de beschikbare documentatie voor PostGIS op https://postgis.net).

Tip

U kunt DBManager gebruiken om een index voor uw laag te maken. U zou eerst de laag moeten selecteren en klikken op Tabel ► Tabel bewerken, ga naar de tab Indexen en klik op Ruimtelijke index toevoegen.

De syntaxis voor het maken van een index GiST is:

CREATE INDEX [indexname] ON [tablename]
  USING GIST ( [geometryfield] GIST_GEOMETRY_OPS );

Onthoud dat, voor grote tabellen, het maken van de index heel lang kan duren. Als de index eenmaal is gemaakt, zou u een VACUUM ANALYZE moeten uitvoeren. Bekijk de documentatie voor PostGIS (POSTGIS-PROJECT in Verwijzingen naar literatuur en web) voor meer informatie.

Het volgende voorbeeld maakt een index GiST:

gsherman@madison:~/current$ psql gis_data
Welcome to psql 8.3.0, the PostgreSQL interactive terminal.

Type:  \copyright for distribution terms
       \h for help with SQL commands
       \? for help with psql commands
       \g or terminate with semicolon to execute query
       \q to quit

gis_data=# CREATE INDEX sidx_alaska_lakes ON alaska_lakes
gis_data-# USING GIST (the_geom GIST_GEOMETRY_OPS);
CREATE INDEX
gis_data=# VACUUM ANALYZE alaska_lakes;
VACUUM
gis_data=# \q
gsherman@madison:~/current$

15.3.2.6. SpatiaLite-lagen

Als u een vectorlaag wilt opslaan in de indeling SpatiaLite, kunt u dat doen door de instructies te volgen op Nieuwe lagen uit een bestaande laag maken. U selecteert SpatiaLite als Indeling en voert zowel Bestandsnaam als Laagnaam in.

U kunt ook SQLite als indeling selecteren en dan SPATIALITE=YES toevoegen in het veld Aangepaste opties ► Databron. Dit vertelt GDAL om een database voor SpatiaLite te maken. Zie ook https://gdal.org/drivers/vector/sqlite.html.

QGIS ondersteunt ook bewerkbare views in SpatiaLite. Voor gegevensbeheer in SpatiaLite kunt u ook de bronplug-in DB Manager gebruiken.

Als u een nieuwe SpatiaLite laag wilt maken, ga naar het gedeelte Het maken van een nieuwe SpatiaLite-laag.

15.3.2.7. GeoJSON-specifieke parameters

Bij lagen exporteren naar GeoJSON, zijn er enkele specifieke Laagopties beschikbaar. Deze opties komen uit GDAL, dat verantwoordelijk is vor het schrijven van het bestand:

  • COORDINATE_PRECISION het maximum aantal getallen na het decimale scheidingsteken om coördinaten te schrijven. Standaard is dit 15 (opmerking: voor coördinaten in Lat Lon wordt 6 als voldoende beschouwd). Deze worden ingekort wanneer gevolgd door nullen.

  • RFC7946 standaard zal GeoJSON 2008 worden gebruikt. Indien ingesteld op YES, zal de bijgewerkte standaard RFC 7946 worden gebruikt. Standaard is NO (dus GeoJSON 2008). Bekijk https://gdal.org/drivers/vector/geojson.html#rfc-7946-write-support voor de belangrijkste verschillen. Kort gezegd is alleen EPSG:4326 toegestaan, andere CRSen zullen worden getransformeerd, polygonen zullen worden geschreven zodat zij de rechterhand-regel voor oriëntatie volgen, waarden van een array “bbox” zijn [west, south, east, north], niet [minx, miny, maxx, maxy]. Sommige namen van leden voor extensies zijn verboden in objecten FeatureCollection, Feature en Geometry, de standaard precisie voor coördinaten is 7 decimale vijfers

  • WRITE_BBOX ingesteld op YES om het begrenzingsvak van de geometrieën, op het niveau van het object en de objectcollectie, te bevatten

Naast GeoJSON is er ook een optie om te exporteren naar “GeoJSON - Newline Delimited” (zie https://gdal.org/drivers/vector/geojsonseq.html). In plaats van een FeatureCollection met Features kunt u slechts één type stromen (waarschijnlijk alleen Features), sequentieel gescheiden door nieuwe regels.

GeoJSON - Newline Delimited heeft ook enkele specifieke Laagopties beschikbaar:

  • COORDINATE_PRECISION zie boven (hetzelfde als voor GeoJSON)

  • RS of records moeten worden begonnen met het teken RS=0x1E. Het verschil is hoe de objecten worden gescheiden: alleen door een teken newline (LF) (Newline Delimited JSON, geojsonl) of door er ook een teken voor scheiding van records (RS) voor te zetten (geeft GeoJSON Text Sequences, geojsons). Standaard op NO. Bestanden krijgen de extensie .json, als de extensie niet wordt opgegeven.

15.3.2.8. SAP HANA ruimtelijke lagen

Dit gedeelte bevat enkele details over hoe QGIS toegang heeft tot lagen van SAP HANA. Meestal zou QGIS u eenvoudigweg een lijst met tabellen en weergaven van de database verschaffen die kunnen worden geladen, en het zal ze op verzoek laden. Wanneer u echter problemen hebt bij het laden van een tabel van SAP HANA in QGIS, zou de informatie hieronder u misschien kunnen helpen de bron van de oorzaak te begrijpen en assisteren bij het oplossen van het probleem.

Informatie over objecten

Indien u alle mogelijkheden van QGIS wilt gebruiken voor het bewerken van objecten, moet QGIS in staat zijn om zonder twijfel elk object in de laag uniek kunnen identificeren. Intern gebruikt QGIS een 64-bit signed integer om objecten te identificeren, waarbij het negatieve bereik is gereserveerd voor speciale doelen.

Daarom vereist de provider SAP HANA een unieke sleutel die kan worden gekoppeld aan een positieve 64-bit integer om de mogelijkheden voor het bewerken van objecten van QGIS volledig te ondersteunen. Als het niet mogelijk is een dergelijke koppeling te maken, zou u nog steeds de objecten kunnen bekijken, maar bewerken zou niet hoeven werken.

Tabellen toevoegen

Bij het toevoegen van een tabel als een laag, gebruikt de provider SAP HANA de primair sleutel van de tabel om die te koppelen aan een unieke object-ID. Daarom moet u, om volledig ondersteuning voor bewerken te hebben. een primaire sleutel in de definitie van uw tabel hebben.

De provider SAP HANA ondersteunt multi-kolom primaire sleutels, maar als u de beste uitvoering wilt bereiken, zou uw primaire sleutel één enkele kolom zijn van het type INTEGER.

Weergaven toevoegen

Bij het toevoegen van een weergave als een laag, kan de provider SAP HANA niet automatisch kolommen identificeren die op unieke wijze een object identificeren. Verder zijn sommige weergaven alleen-lezen en kunnen niet worden bewerkt.

Voor volledige ondersteuning voor bewerken moet de weergave bij te werken zijn (controleer de kolom IS_READ_ONLY in systeemweergave SYS.VIEWS voor de betreffende view) en u moet handmatig QGIS één of meer kolommen verschaffen die een object identificeren. De kolommen kunnen worden opgegeven met Kaartlagen ► Laag toevoegen ► SAP HANA Spatial-laag tevoegen en dan de kolommen te selecteren in de kolom Object-id . Voor de beste uitvoering zou de waarde van Object-id één enkele kolom INTEGER moeten zijn.

15.3.3. Lagen die de 180° lengtegraad overschrijden

Veel GIS-pakketten verpakken lagen met een geografisch referentiesysteem (lat/lon) dat de lijn van 180-graden longitude kruist niet (https://postgis.net/docs/ST_Shift_Longitude.html). Als resultaat, wanneer we een dergelijke laag in QGIS openen, zouden we twee wijd verspreide locaties zien, die vlak naast elkaar zouden verschijnen. In Fig. 15.27, zou het kleine puntje aan de uiterste linkerkant van het kaartvenster (Chatham Islands) binnen het raster moeten liggen, rechts van de hoofdeilanden van Nieuw-Zeeland.

../../../_images/vectorNotWrapping.png

Fig. 15.27 Kaarten maken voor lat/lon die de 180° lengtegraad overschrijden

15.3.3.1. Oplossen in PostGIS

Een tijdelijke oplossing is om de waarden van longitude te transformeren met PostGIS en de functie ST_ShiftLongitude. Deze functie leest elk punt in elke component van elk object in een geometrie, en verschuift de coördinaat van de longitude van -180…0° naar 180…360° en vice versa indien zij in dit bereik liggen. Deze functie is symmetrisch, dus het resultaat is een 0…360° weergave van gegevens voor -180…180° data en een weergave van -180…180° van gegevens voor 0…360°.

../../../_images/vectorWrapping.png

Fig. 15.28 Het overschrijden van de 180° lengtegraad met het toepassen van de functie ST_ShiftLongitude

  1. Importeer gegevens in PostGIS (Importeren van gegevens in PostgreSQL), bijvoorbeeld door gebruik te maken van de plug-in DB Manager.

  2. Gebruik de interface voor de opdrachtregel van PostGIS om de volgende opdracht op te geven:

    -- In this example, "TABLE" is the actual name of your PostGIS table
    update TABLE set geom=ST_ShiftLongitude(geom);
    
  3. Als alles goed ging, zou u nu een bevestiging moeten ontvangen van het aantal objecten die bijgewerkt zijn. Daarna kan deze tabel geladen worden en ziet u het verschil (Figure_vector_crossing_map).