6. Ruimtelijke queries van vectordata

Voor onze kaart van Delft willen we de volgende GIS‑analyse uitvoeren:

  • Selecteer de gemeente Delft uit de gemeentekaart (gem_2011_gn1.shp) en sla deze op in een geopackage.
  • Clip de wegenkaart van Nederland met het polygoon van de gemeente Delft.
We kunnen een ruimtelijke query gebruiken om een feature uit een vectorlaag te selecteren. Dat kan met het commando gdal vector sql.

SQL staat voor Structured Query Language en is de standaardtaal voor het werken met relationele databases. In GIS kom je SQL tegen wanneer je features filtert, attributen selecteert, tabellen koppelt of ruimtelijke queries uitvoert.

In de kern kun je met SQL:

  • Data opvragen (bijv. SELECT * FROM municipalities)

  • Data filteren (bijv. WHERE GM_NAAM = 'Delft')

  • Data bijwerken of aanpassen

  • Tabellen maken of verwijderen

 
1. Wat is het attribuut in de gemeentelaag dat de namen van de gemeenten bevat? Je kunt hiervoor gdal info of QGIS gebruiken om dit te achterhalen.
 
2. Voer het volgende commando uit:
gdal vector sql gem_2011_gn1.shp delft.gpkg --output-layer municipality --sql "SELECT * FROM gem_2011_gn1 WHERE GM_NAAM = 'Delft'"
 

De SQL‑query tussen dubbele aanhalingstekens is SELECT * FROM gem_2011_gn1 WHERE GM_NAAM = 'Delft' en vraagt de database om alle rijen terug te geven uit de tabel gem_2011_gn1 waarbij de kolom GM_NAAM de waarde Delft heeft.

Let op dat Delft tussen enkele aanhalingstekens staat om aan te geven dat we zoeken naar een string (tekst).

We kunnen nu roadsreprojected.shp clippen zodat deze alleen het grondgebied van de gemeente Delft omvat. Daarvoor gebruiken we gdal vector clip.
 
3. Voer het volgende commando uit:
gdal vector clip roadsreprojected.shp delft.gpkg --update --like delft.gpkg --like-layer municipality --output-layer roads_delft
 
 
Laten we het commando opsplitsen om beter te begrijpen hoe het werkt:
  • gdal vector clip → het GDAL‑subcommando om vectorfeatures te clippen.

  • roadsreprojected.shp → de invoer‑shapefile met de weggeometrieën.

  • delft.gpkg → het GeoPackage dat de laag bevat waarmee wordt geclipt (in dit geval de gemeentegrens).

  • --update → geeft aan dat GDAL het bestaande GeoPackage moet bijwerken in plaats van een nieuw bestand te maken.

  • --like delft.gpkg --like-layer municipality → specificeert dat de clipping moet worden uitgevoerd met de laag municipality in delft.gpkg als masker.

  • --output-layer roads_delft → de naam van de nieuwe laag die in het GeoPackage wordt geschreven en alleen de wegen bevat die binnen de gemeente Delft vallen.

4. Open nu in QGIS de DEM (dem_rd.map), de geclipte wegenkaart (roads_delft) en de gemeente Delft (municipality).
 
 

Als je de documentatie van gdal vector clip bekijkt, zul je zien dat je een verkorte werkwijze had kunnen gebruiken. We kunnen de SQL‑query om de gemeente Delft op te zoeken namelijk direct aan het commando toevoegen.

Laten we het resultaat nu als een shapefile maken, zodat we het kunnen vergelijken met het eerdere resultaat in het geopackage.

5. Voer het volgende commando uit:

gdal vector clip roadsreprojected.shp roads_delft.shp --like gem_2011_gn1.shp --like-sql "SELECT * FROM gem_2011_gn1 WHERE GM_NAAM = 'Delft'"
 

6. Voeg roads_delft.shp toe aan QGIS en vergelijk het met het eerdere resultaat. Het zou hetzelfde moeten zijn.