Zelf met de BGT in QGIS werken

De Basisregistratie Grootschalige Topografie (BGT) begint al aardig gevuld te raken. Deze open overheidsdata wordt 2x per maand aangeboden door NLExtract in PostGIS formaat. Zie: http://data.nlextract.nl/bgt/postgis/ . Het PostGIS backup bestand is inmiddels gegroeid naar zo’n 12 Gigabyte.

Je kunt dit bestand in QGIS gebruiken als je zelf PostgreSQL met de PostGIS extensie hebt geïnstalleerd. Zie hiervoor https://www.postgresql.org/ . Kies bij de installatie een handig wachtwoord voor de gebruiker ‘postgis’. Vergeet niet na installatie Stackbuilder te activeren om de Postgis extensie beschikbaar te krijgen. In de PgAdmin tool maak je dan een nieuwe database aan genaamd ‘bgt’. Daarin maak je een nieuw schema ‘latest’. Denk ook hierbij weer aan het toevoegen van de Postgis extensie. Vervolgens kun je op de database titel kiezen voor “restore” en kies je de NLExtract BGT dump. Na 30-40 minuten stampen heb je de gehele BGT tot je beschikking in QGIS. Maar ja, hoe visualiseer je die?

In de OpenTopo kaarten (www.opentopo.nl) zie je hoe ik de BGT visualiseer op het schaalniveau van 3200 pix/km. Deze visualisatie (althans, de BGT elementen daarin, ik gebruik ook OSM en Top10NL) kun je nu zelf ook gebruiken, via een speciaal door mij samengesteld QGIS BGT projectbestand.

Download daarvoor deze zipfile op imergis.nl. Je vindt daarin een QGIS projectbestand en twee SVG plaatjes. Plaats de plaatjes in een mapje “SVG” dat een submap is van waar je projectbestanden staan. Open het QGIS projectbestand in een tekst editor zoals Notepad++ en doe een “Find & Replace” op het wachtwoord, dat nu nog bestaat uit sterretjes. Bestand bewaren en in QGIS openen. Je zou zoiets als het volgende moeten zien:

zelfbgt1

Hierbij zit dus geen schaduwreliëf en geen labels, want die haal ik uit andere bronnen. Je hebt echter wel de volledige BGT van Nederland onder handbereik. Let op, deze visualisatie is bedoeld voor een schaal van 3200 pix/km op 96 dpi, dus in QGIS ongeveer 1:1180. Je kunt in- en uitzoomen wat je wilt, maar dat geeft misschien niet altijd het gewenste beeld. Je hebt in elk geval wel een basis om mee te werken.

Veel plezier ermee. Vragen? Stuur me een e-mail.

– Jan-Willem van Aalst

 

Georefereren van een medaille

Gisteren liep ik de halve marathon van Zwolle met mijn petje op met het vorige QGIS logo. Mijn tijd was zo niet bijzonder (2:08:47) maar de medaille die ik daarmee verdiende wel. Het bevat een plattegrond van de stad Zwolle.

original medal of Zwolle half marathon 2017
De originele medaille van de halve marathon van Zwolle.

Er staan wat gebouwen op afgebeeld maar welke?

Ik besloot de medaille met behulp van QGIS te georefereren en een kaart toe te voegen.

  1. Ik legde eerste de medaille onder de scanner en maakte hiervan een PNG afbeelding.
  2. Vervolgens georefereerde ik de kaart met de Georeferencer plugin in QGIS die standaard wordt meegeleverd en die geactiveerd moet worden via de Plugin manager. Onder het menu Raster kun je dan deze georeferencer tool starten.
  3. Daarna voegde ik via de PDOK plugin de laag lufolabels toe.

Het resultaat ziet u hieronder.

medal-half-marathon-zwolle-on-map

De gebouwen zijn: De Broerenkerk, de Peperbus, de Grote St. Michaelskerk, museum de Fundatie en de oude stadspoort Sassenpoort.

met vriendelijke groet,

Diethard Jansen

Gray is the new Black

Soms wil ik mijn kaart (printvormgeving…) niet in zwart maar in grijs opmaken. Maar QGIS maakt alle items die ik aan mijn kaart toevoeg standaard zwart.

Turn Gray dialog
Turn Gray dialog

Om de kleur eenvoudiger en sneller aan te passen heb ik de “Turn Gray” plugin geschreven. Standaard verandert deze de kleur van alle teksten en outlines in een kaart in grijs. Maar je mag ook vrolijkere kleuren uitkiezen. Optioneel ook voor de achtergrondkleur.

Op het moment worden nog niet alle items in een kaart aangepast, maar de (door mij) meest gebruikte wel: de kaart, legenda, teksten en schaalbalk. Tabellen, pijlen en kaartgrids komen later.

Ik hoop dat anderen hier ook blij mee zijn, dat is toch het idee van open source!

Hier een paar voorbeelden:

original map composer
originele vormgeving
turned to gray (default plugin values)
in grijs (met standaard plugin waarden)
turned to red foreground and lime green background
met rode voorgrondkleur en limoengroene achtergrondkleur

TopoTijdReis kaartlagen in QGIS

Al weer even geleden presenteerde Het Kadaster samen met ESRI the website TopoTijdReis. Een website met prachtig kaartmateriaal: verdeelt over 75 kaartlagen de scans van topografische data van Het Kadaster van 1815 tot en met 2015!

topotijdreis

Een website is mooi, maar dezelfde data kunnen gebruiken in bijvoorbeeld QGIS is nog leuker. Toen iemand mij benaderde of dat mogelijk was, heb ik geprobeerd om de lagen toe te voegen als ‘ArcGIS Mapserver layer’, wat mogelijk zou moeten zijn met QGIS 2.16 en hoger. Maar… ik kreeg het niet voor elkaar (en ernaar ‘googelende’ blijkbaar meer mensen niet)…

Maar… na wat gemopper van mij op Twitter dat ‘ze’ toch eens wat meer dit soort zaken m.b.v. OpenStandaarden zouden moeten ontsluiten, kreeg ik van het Kadaster het vriendelijke antwoord, dat de kaartlagen ook als WMTS beschikbaar zouden moeten zijn. Dat wil ik wel zien.

Eerst maar eens proberen op de WMTS link te klikken in een pagina als

http://tiles.arcgis.com/tiles/nSZVuSZjHpEZZbRo/arcgis/rest/services/Historische_tijdreis_1950/MapServer…

Mmm, geen tiles. Gelukkig werkt het getCapabilities document wel:

En op basis daarvan is het in QGIS eenvoudig om de service te bevragen. Voer de capabilities url (of de verkorte versie zonder het /1.0.0/WMTSCapabilities.xml deel) in in het ‘WMS/WMTS kaartlaag toevoegen’ dialoog

addwmts

en de dialoog toont welke kaartlaag er op te halen is.

wmtslayer

Prachtig! Werkt!

haarlem1950

Maar het mooie aan de TopoTijdReis is natuurlijk dat je je de historie van een omgeving kunt bekijken door even door te tijd te reizen… We willen natuurlijk al die 75 kaartlagen ‘even’ laden in QGIS. Jammer dat elke laag in een aparte service is gedefineerd :-(

Ik zie twee mogelijkheden:
1) we zorgen dat die 75 lagen komen te staan in het pdok.json lagenbestand van de PDOKServicePlugin, maar dan nog moet je 75 keer klikken om alle lagen te bekijken (deze optie stel ik dus even uit tot iemand hier heel vriendelijk om vraagt…)
2) we schrijven wat Python code welke we in de Python Console kunnen uitvoeren om die 75 lagen te laden.

DOEN:
– open de Python Console die je vind als menu item in het Plugins menu
– open een bestandje door op het ‘nieuw bestand’ knopje te klikken (4e knopje van links)
– kopieer daarin de volgende regels:

# create a layer group
layer_group = QgsProject.instance().layerTreeRoot().insertGroup(0, 'TopoTijdReis')
# make the group mutually exlusive (one layer visible at a time)
layer_group.setIsMutuallyExclusive(True)

# copied from http://tiles.arcgis.com/tiles/nSZVuSZjHpEZZbRo/arcgis/rest/services/
years = ['1815', '1820', '1821', '1823_1829', '1830_1849', '1850', '1857', '1858', '1861', '1862', '1865', '1866', '1868', '1870', '1871', '1872', '1880', '1883', '1886', '1888', '1889', '1893', '1899', '1900', '1901', '1902', '1904', '1908', '1909', '1910', '1912', '1915', '1918', '1919', '1920', '1922', '1925', '1929', '1931', '1935', '1937', '1940', '1942', '1943', '1947', '1948', '1949', '1950', '1951', '1952', '1953', '1955', '1962', '1963', '1965', '1970', '1971', '1973', '1975', '1976', '1978', '1980', '1984', '1988', '1990', '1994', '1995', '1996', '1997', '1999', '2006', '2010', '2011', '2014', '2015']

# for every year, create a layer
for year in years:
  layer = QgsRasterLayer("tileMatrixSet=default028mm&crs=EPSG:28992&layers=Historische_tijdreis_{0}&styles=default&format=image/jpgpng&url=http://tiles.arcgis.com/tiles/nSZVuSZjHpEZZbRo/arcgis/rest/services/Historische_tijdreis_{1}/MapServer/WMTS/".format(year, year), "TopoTijdReis {0}".format(year), "wms")
  # add it to the layer registry, without showing it yet
  QgsMapLayerRegistry.instance().addMapLayer(layer, False)  # False, meaning not ready to add to legend
  # add it on top of the group
  layer_group.insertLayer(0, layer)

Door nu op het blauwe ‘Play’-knopje te klikken wordt bovenstaande code uitgevoerd, en moet QGIS er ongeveer zo uit zien:

qgistopotijdreis

Zoals je ziet staan de 75 beschikbare kaartlagen (die ik trouwens van de ‘services’ url heb http://tiles.arcgis.com/tiles/nSZVuSZjHpEZZbRo/arcgis/rest/services/ gehaald) netjes in een aparte groep.
En het mooi van een layer-group is dat je ‘m ‘mutual exlusive’ kunt maken, d.w.z. er is slechts 1 kaartlaag tegelijk zichtbaar: bij het zichtbaar maken van een andere kaartlaag wordt een evt andere zichtbaar kaartlaag uit die groep verborgen.

Eigenlijk hebben we zo onze eigen TopoTijdReis in QGIS.

En mocht je nu via de python console gewoon maar 1 kaartlaag willen laden, gebruik dan:

iface.addRasterLayer(
"tileMatrixSet=default028mm&crs=EPSG:28992&layers=Historische_tijdreis_1820&styles=default&format=image/jpgpng&url=http://tiles.arcgis.com/tiles/nSZVuSZjHpEZZbRo/arcgis/rest/services/Historische_tijdreis_1820/MapServer/WMTS/", # uri
"TopoTijdReis 1820", # name for layer (as seen in QGIS)
"wms"
)

Een paar leuke screenshots nog ter afsluiting:

Zoals je ziet is de kaarttekst van 1815 nog franstalig. Wanneer namen we ook al weer afscheid van de Fransen? De daaropvolgende kaart is dan ook opgedragen “aan zijne majesteit den koning”

kaartkoppen

Verder is het goed te zien dat er hier en daar wel flink ‘geplakt’ is.

Letterlijk (ik denk door het oude Kadaster):

plakwerk

Figuurlijk (door de cache bouwer):
mapmix

Een paar tips:

– Gebruik het ‘Tile Scale Panel/Paneel Schaal tegel’ om de juiste kaartschaal te bepalen: maak een kaartlaag aktief/zichtbaar en gebruik dan de schuif om ‘m op de juiste schaal te krijgen. (zie de grijze ‘schuif’ aan de rechterkant in een van de volgende screenshots)

– Zorg dat je in Extra/Opties/Rendering het vinkje ‘Gelijktijdig rendereren van kaartlagen …’ aan hebt. Voor Tiled layers scheelt dit aanzienlijk en ziet er VEEL beter uit!

– Gebruik de middelmuisknop om netjes met een factor 2 in of uit te zoomen (gebruik diezelfde middelmuisknop trouwens ook eens om eenvoudig te ‘pannen’ zonder de pan-tool aktief te hoeven maken

En om toch nog wat te mopperen te hebben:

– waarom heeft het kadaster/esri zich eigenlijk niet gehouden aan de Nederlands Tiling richtlijn? De kaartschalen komen niet overeen met die van de overige PDOK kaartlagen?

– waarom zijn juist de modernste kaartlagen niet scherp?

Maar verder: bedankt Kadaster en ESRI voor het beschikbaarstellen van dit prachtige kaartmateriaal!!

Kadastrale percelen en het gfs bestand

De laatste reactie van Fred van Bemmel op de eerdere Blog “Kadastrale percelen genereren”, was bijzonder verrassend.

Het bestand Perceel.gml zou namelijk punten en polygonen bevatten! Door het .gfs bestand aan te passen zal deze openen met polygonen. Maar na bestudering van het .gfs bestand die Fred aanleverde zag ik meer mogelijkheden!

Het gfs bestand

Het .gfs bestand wordt aangemaakt tijdens de eerste keer openen van een GML bestand met QGIS. Het is eigenlijk de GDAL/OGR GML-driver die hiervoor zorgt.

Stap 1: Tonen van Polygonen

Als eerste willen we na het openen van Perceel.gml geen punten maar polygonen zien. Open het .gfs bestand in een tekst-editor of een xml-editor. Het is wel prettig wanneer de editor xml herkent. Wijzig zo nodig even de extensie van .gfs naar .xml zodat direct alle xml-tags herkend worden.

Begin door bovenin de regel met de “GeometryType” XML-tag te verwijderen of te voorzien van XML-commentaar. Zet er “<!–” voor en “–>” achter.

<!--    <GeometryType>1</GeometryType> -->

Ga nu naar het einde van het gfs bestand. Voeg nu tussen de laatste afsluitende XML-tag en de volgende nieuwe tag:

    </PropertyDefn>
<!-- voeg de volgende XML tag toe -->    
    <GeomPropertyDefn>
      <Name>begrenzing</Name>
      <ElementPath>begrenzingPerceel</ElementPath>
      <Type>Polygon</Type>
    </GeomPropertyDefn>
<!-- einde aanpassing -->
  </GMLFeatureClass>

Sla het gfs bestand op en open nu het GML bestand in QGIS.
Als het goed is zie je nu dat deze inderdaad de percelen als polygonen opent.

Stap 2: Aanpassen van veldnamen

Je kunt eveneens de naamgeving van velden aanpassen door het .gfs bestand aan te passen. Zoek in de .gfs naar de volgende tag “<Name>waarde</Name>”. Wijzig deze naar “<Name>Oppervlak</Name>” sla op en open de gml file Perceel.gml. Je zult zien dat het veldnaam is gewijzigd van “Waarde” naar “Oppervlak”.

Stap 3: Het verwijderen van velden

Je kunt er ook voor zorgen dat velden niet worden getoond.
Dit doe je door een volledige PropertyDefn XML-tag om te zetten naar commentaar of weg te halen.

Zet de volgende PropertyDefn om naar commentaar door er “<!–” voor te zetten en af te sluiten met “>”, hierdoor blijft het veld “namespace” achterwege.

<!--    <PropertyDefn>
      <Name>namespace</Name>
      <ElementPath>identificatie|NEN3610ID|namespace</ElementPath>
      <Type>String</Type>
      <Width>25</Width>
    </PropertyDefn> -->

Let op dat het GML bestand ouder moet zijn dan het gfs bestand. Anders wordt deze genegeerd. Have fun!

Nieuwe release QGIS + boek!

Afgelopen week is niet alleen de nieuwste versie van QGIS 2.14.0 Essen uitgekomen maar ook een prachtig boek “QGIS Map Design” welke uitgaat van deze nieuwe versie van QGIS.

Voorpagina boek QGIS Map Design

Een release van QGIS is altijd bijzonder maar inmiddels is eveneens aangekondig dat QGIS 2.14 de nieuwe “beoogde” LTR versie is. QGIS 2.8.7 is de huidige LTR versie waarin alle fouten die opgelost zijn voor alle versies van 2.8 t/m 2.14.0 ook zijn opgelost (indien van toepassing) in 2.8.

Een (Long Term Release) LTR versie heeft twee voordelen, deze is erg stabiel en qua functionaliteit blijft deze lang ongewijzigd zodat instructies, handleidingen, boeken en cursussen gebaseerd op een LTR versie ook wel even meegaan. Zodra QGIS 2.16 uitkomt, beschikken wij daadwerkelijk over de nieuwe QGIS 2.14 LTR versie! Deze versie draagt als naam QGIS Essen omdat het een fantastische locatie was waar twee hackfesten, bijeenkomsten voor QGIS ontwikkelaars en anderen, werd gehouden in het Linux Hotel. Ik bezocht beide hackfesten en ze waren bijzonder inspirerend en productief.

Splashscreen QGIS 2.14.0 Essen

Na QGIS 2.14 wordt er gestart met de megaklus om QGIS, die nu is ontwikkeld op het Qt 4 framework en Python 2.7,  te bouwen op het Qt 5 framewerk en Python 3.5. Dat is zo ongeveer vergelijkbaar met een klus als het vervangen van de fundering van een flatgebouw. In de aanloop naar dit werk toe is begonnen met het voorbereidende werk door een hele goed test infrastructuur op te zetten waarbij de vele unit-testen er voor gaan zorgen dat dit ook gaat lukken.

Ook al is QGIS 2.14 nog niet de LTR versie van QGIS, toch is het al verstandig om boeken en cursussen te baseren op deze nieuwe versie!

Het eerste boek dat is uitgegeven voor QGIS 2.14 is er al! Het boek QGIS Map Design is geschreven door Anita Graser & Gretchen N. Peterson en uitgegeven door Locate Press van Gary Sherman (de grondlegger van QGIS). Dit is het eerste boek waarbij de focus ligt op hoe je met alle mogelijkheden die QGIS te bieden heeft, zelf de meest geweldige kaarten kunt maken.

Het boek bestaat uit een hele reeks “recepten”, volledig uitgewerkte praktische voorbeelden, waarbij verondersteld wordt dat de kennis die je opdoet in de eerste basisrecepten in volgende recepten kunt toepassen.

Ik kon niet wachten en heb het 200 bladzijden tellende boek in PDF-formaat gekocht van Locate Press. Opmerkelijk, je kunt het boek behalve met een kredietkaart ook kopen in bitcoins! Je ontvangt bij de aankoop van een PDF een gepersonaliseerde PDF met onderaan elke bladzijde een copyright statement. In die van mij staat:

“Copyrighted material generated for Diethard Jansen on 2016-03-02 do not distribute”

Ik verwacht nog heel veel plezier te gaan beleven aan QGIS 2.14 en van dit boek!

Wat QGIS 2.14 allemaal te bieden heeft?
Kijk daarvoor op de Visuele lijst met aanpassingen.

Kadastrale percelen genereren vanuit BRK

In deze blog beschrijf ik hoe je met QGIS “echte” vlakgerichte Kadastrale Percelen kunt genereren wanneer de BRK gegevens (de Kadastrale Kaart) alleen lijngerichte kadastrale grenzen en perceel punten blijkt te bevatten.

polygonized

Sinds 1 januari 2016 is ook de BRK (Basis Registratie Kadaster) beschikbaar via PDOK. Je kunt deze in GML formaat per provincie downloaden en direkt in QGIS openen.

Deze BRK dataset bevat gegevens over percelen. Elk perceel heeft een unieke ID en bij het kadaster ligt ook vast wie de eigenaar is en de historie. Hier heeft het Kadaster zijn bestaan en belangrijke rol in de samenleving aan te danken! De gegevens in de BRK zijn een momentopname van de perceelsgrenzen en bevat geen eigenaarsgegevens of historie.

Ik had zelf verwacht dat de BRK een polygoonbestand met perceelsgegevens zou bevatten. De ZIP-file bevat echter de bestanden Kadastralegrens.gml (lijnen), Perceel.gml (punten met perceelsgegevens), Annotatie.gml (punten) en Bebouwing.gml (lijnen). Hiervan zijn Annotatie.gml en Bebouwing.gml minder interessant (BAG en BGT bevatten immers al de omtrek van gebouwen en die labels kunnen we prima zelf binnen het vlak genereren) .

Het proces van het omzetten naar perceelvlakken met perceelgegevens bestaat globaal uit de volgende stappen:

1) inlezen van GML bestanden en opslaan als Shape bestanden
2) toevoegen van spatiale indexen aan Shape bestanden
3) omzetten van kadastrale grenzen naar kadastrale vlakken
4) toevoegen van de attributen van perceelpunten aan kadastrale vlakken

1) Download eerst de BRK van Flevoland (of andere provincie) van de downloadpagina:

https://www.pdok.nl/nl/producten/pdok-downloads/basis-registratie-kadaster/kadastrale-kaart

2) in dit voorbeeld pak ik de zip-file van Flevoland uit in de folder C:\data\brk\input\ en maak ik de folder C:\data\brk\output aan waarin ik de resultaatbestanden zal aanmaken.

3) Activeer de Processing Toolbox via het menu Processing >> Toolbox. Zet rechtsonderin QGIS de Render functie (Her)teken uit en zet de interface processing om van Simplified interface naar Advanced interface.
Render of and advanced interface

4) laad de gml-files Kadastralegrens.gml en Perceel.gml
inlezen_gml

5) Sla allebei de bijgeladen GML bestanden op in het shape-formaat, dit kan door deze in het paneel “Lagen” te selecteren en via het menu Kaartlagen >> Opslaan Als… op te slaan als shape-bestand. Dit kan ook via Processing. Zoek in de Processing Toolbox met het zoekveld naar het GDAL/OGR algoritme “Convert format” met convert. Je moet die van OGR hebben (voor omzetten van vectordata). Dubbelklik op het gevonden algoritme en de dialoog opent waarmee je kaartlagen kunt opslaan in verschillende bestandsformaten.

GDAL_convert

6) Zorg ervoor dat de aangemaakte shapebestanden zijn geopend in QGIS. Het toevoegen van een index, doe je via de Laag Eigenschappen. Dubbelklik op de geselecteerde kaartlaag KadastraleGrens en Druk op de knop [Ruimtelijke index aanmaken] (Create spatial index).
Create Spatial Index

7) Het aanmaken van perceelsvlakken uit perceelsgrenzen doen we vervolgens met de Processing Tool, Polygonize. Zoek in de Processing Toolbox met het zoekveld naar “Polygonize”. Dubbelklik op het gevonden algoritme en de  volgende dialoog opent. Wanneer je de optie Create geometry columns aanvinkt , dan worden de attribuutvelden oppervlakte en omtrek aangemaakt in de output layer KadastraleVlak.shp.
grens_naar_vlak

8) Tijdens de uitvoering verschijnt het logbestand van het omzetten van perceelsgrenzen naar vlakken, bij 40% staat deze erg lang stil en lijkt QGIS nergens op te reageren. (sterker nog het scherm van het processing algoritme kan tijdelijk zijn verdwenen). Dit is een proces wat echter veel tijd nodig heeft! Gewoon even geduld hebben, laat QGIS zijn werk doen.
log_polygonize

9) Gebruik het QGIS Processing Algoritme Join attribute by location, Voor het toevoegen van de attributen van Perceel.shp aan KadastraalVlak.shp om deze vervolgens op te slaan in KadastralePercelen.shp. Op de volgende dialoog door hierop te dubbelklikken en vul deze als volgt in. Dit algoritme is een stuk sneller en wanneer je hierna alleen de KadastralePercelen.shp laad en bekijkt, zie je Flevoland zoals getoond aan het begin van deze blog (wellicht in andere kleur). Vergeet ook niet de renderfunctie (Her)teken rechtsonderin de applicatie weer aan te zetten.
join_attributes_to_polygon

Wanneer je een kadastraal perceel selecteert en bekijkt heeft deze de volgende velden.
Eigenschappen Kadastraal Perceel

Door: Diethard Jansen (GIS-hulp)

PDOK services plugin update

Een korte post om te laten weten dat er een versie 0.10 beschikbaar is van de pdokservices plugin (http://plugins.qgis.org/plugins/pdokservicesplugin/).

Er zijn wat lagen verdwenen en wat lagen bijgekomen. Het totaal aantal lagen komt nu op 6723 (was 5298).

WMS layer windspeed at 100m height
WMS laag Windsnelheid op 100m hoogte

Belangrijkste veranderingen zijn:

Verdwenen:

– brtachtergrondtijdelijk
– brtachtergrondgrijstijdelijk
– top10nl (nu: top10nl2)
– Noordzee Kabels en Leidingen
– Noordzee Wingebieden

Nieuw:

– AHN3 WMS, WFS en WCS
– Adressen (INSPIRE geharmoniseerd)
– CBS Wijken en Buurten 2014
– Historische Rivierkaarten
– Kadastrale Kaart
– NAPinfo
– Potentiekaart omgevingswarmte
– Potentiekaart reststromen
– Potentiekaart restwarmte
– Verspreidingsgebied habitattypen
– Windsnelheden 100m hoogte

Update je plugin via de plugin-manager in QGIS.

2016_histrivieren

Spatialite en verdwenen stijlen

In deze blog laat ik zien hoe je het probleem van verdwenen stijlen na hernoemen/verplaatsen van de SpatiaLite database kunt oplossen in QGIS.

Opslaan van stijlen in SpatiaLite

Sinds QGIS 2.4 kun je voor elke tabel met geometrische gegevens in SpatiaLite ook de stijlen mee opslaan. Dit kon al eerder in PostGIS. Dat werkt fantastisch zolang je de database maar niet verplaatst of hernoemd. Er ontstaat een probleem met die stijlen wanneer de SpatiaLite database wordt hernoemd of op een andere plaats wordt opgeslagen. De mee opgeslagen stijlen worden dan niet meer toegepast op de vanuit SpatiaLite ingelezen kaartlagen.

Als voorbeeld gebruiken we de voorbeeld spatialite database zwartsluis.sqlite. De SpatiaLite database zwartsluis.sqlite is gemaakt m.b.v. de QGIS plugin Basis NL waarna de gegevens die niet binnen de woonplaats Zwartsluis vallen zijn verwijderd. Dit bestand, 8 MB groot, kan gedownload worden via volgende link: http://qgis.nl/zwartsluis.zip

In dit voorbeeld heb ik na de download, het bestand Zwartsluis.sqlite in de folder C:\geodata\bag\ geplaatst!

  • Open in QGIS via het menu Kaartlagen >> Laag toevoegen >> SpatiaLite laag toevoegen, het dialoogvenster waarmee je de SpatiaLite database Zwartsluis.sqlite kunt openen.
  • Gebruik de knop [Nieuw] om een nieuwe verbinding te maken voor zwartsluis.sqlite. Aan de lijst van verbindingen wordt de verbinding naar Zwartsluit.sqlite toegevoegd, selecteer deze en druk nu op [Verbinden].
    In eerste instantie wordt in de dialoog alleen tabellen met geometrie getoond.
  • Vink nu eerst de optie Dialoogvenster openhouden aan.
    Selecteer nu de 5 tabellen en laad deze met de knop [Toevoegen].
Bijladen van de BAG tabellen in QGIS
Bijladen van de BAG tabellen in QGIS

We zien dat er willekeurige stijlen zijn toegekend aan de nieuwe lagen. Dit zijn niet de stijlen die bij de tabellen mee op zijn geslagen. Ook wordt op deze schaal alles getekend!  Stel dat deze database nu de BAG van heel Nederland zou bevatten dan zou deze nu meer dan 20 miljoen objecten proberen te tekenen. Het is in zo’n geval ook zeker verstandig om voor het bijladen het aanvinkvakje (Her)teken (rechts onderin QGIS) even te ontvinken.

Stijlen opgeslagen in SpatiaLite worden niet gebruikt.
Stijlen opgeslagen in SpatiaLite worden niet gebruikt.
  • In de dialoog SpatiaLite Tabel(len) toevoegen vink je nu de optie Ook tabellen zonder geometrie aan. Nu worden er veel meer tabellen getoond, zoek de tabel layer_styles, selecteer deze en laad deze met de knop [Toevoegen].
Bijladen van tabel Layer Styles
Bijladen van de tabel layer_styles

In de legenda met lagen is layer_styles nu toegevoegd, we gaan nu deze tabel aanpassen zodat de stijlen wel goed worden toegepast. Wanneer we de inhoud van de tabel bekijken, zien we dat in het veld f_table_catalog de database naar een andere plaats verwijst dan waar deze nu staat. We gaan dit corrigeren met Veld berekening. Met Veld berekening kun je nieuwe velden toevoegen, maar ook de inhoud van bestaande velden bewerken!

  • Selecteer de laag layer_styles en kies via de rechtermuisknop in het snelmenu Open attributentabel.
  • Vervolgens selecteren we in Attributen tabel linksboven in de knoppenbalk het gele potlood (=Bewerken aan/uitzetten),  waarmee ook de knop met het telraam (= Open Veldberekening) wordt geactiveerd.
  • Selecteer nu de knop met de afbeelding van het telraam, daarmee openen we de dialoog Veld berekening.
  • Vink nu het aanvinkvak Bestaande velden vernieuwen aan.
    Selecteer in de keuzelijst eronder het veld f_table_catalog.
  • Plaats in het tekstvak de bestandsnaam van de SpatiaLite database, met volledig pad, en zet vervolgens om de tekst apostrophs (geen aanhalingstekens). Gebruik als scheidingsteken in de padnaam niet het de “backslash” = ‘\’ die met name word gebruikt op het Windows OS maar “forward slash” = ‘/’. Controleer of bij uitvoer voorvertoning (onder het tekstvak) de goede nieuwe inhoud voor het veld wordt weergegeven. Druk vervolgens op [OK].
Vervangen inhoud veld f_catalog_table met Veld Berekening.
Vervangen inhoud veld f_catalog_table met Veld Berekening.

Je ziet in Attributen tabel dat de verwijzing naar de SpatiaLite tabel nu wel klopt!

  • Druk nu wederom op de knop met het symbool van het gele potlood, linksboven in de dialoog van Attributen tabel en bevestig de vraag dat de wijzigingen moeten worden opgeslagen.
  • Hierna kies je voor een nieuw project (huidig project niet opslaan) en laad je nogmaals de lagen van de SpatiaLite tabel zoals eerder aangegeven.

Nu zijn de goede stijlen wel toegepast! Wanneer je via de PDOK plugin de ‘BRT achtergrondkaart‘ toevoegt en inzoomt op de haven van Zwartsluis krijg je het volgende te zien:

Now loaded with correct styles!
Now loaded with correct styles!

Over Spatialite

SpatiaLite is een relationele database die bestaat uit 1 bestand met de mogelijkheid om er spatiale tabellen in op te slaan. SpatiaLite is gebaseerd op SQLite, de meest gebruikte relationele database ter wereld (o.a. op smartphones).
Voor meer info over SpatiaLite en evt. downloads zie http://www.gaia-gis.it/gaia-sins. Het cookbook van SpatiaLite bevat vele recepten die smaken naar meer!

SpatiaLite heeft een aantal voordelen t.o.v. PostGis, je hoeft niet eerst een PostGis server te installeren en te beheren. SpatiaLite is een snelle database en je kunt er prima met meerdere gebruikers tegelijkertijd in lezen. Doordat alle data in een bestand zit kun je deze gemakkelijk naar iemand opsturen en deze kan de SpatiaLite database openen in QGIS en direkt gebruiken.

PostGIS is in de volgende gevallen een betere keuze:

    • Meerdere schrijvers of veel lezers
    • Gecontroleerde toegang (authenticatie)
    • Meer en betere tools voor spatiale bewerkingen
    • Veel betere Query optimizer

Wanneer je veel werkt met spatiale queries in de database zelf, kun je dit beter in PostGIS dan in SpatiaLite doen.

Ook ESRI ondersteunt sinds versie 10.2 het gebruik van SpatiaLite. Maar om echt met de data te werken, moet je dan wel de gegevens vanuit SpatiaLite importeren in een geodatabase. Helaas!

Sinds QGIS 2.12 worden de gegevens waarmee je toegang krijgt tot de PostGIS database versleuteld opgeslagen. In eerdere versies van QGIS werden in de registry of elders de gebruikersnaam en wachtwoord goed leesbaar opgeslagen en was de toegang via QGIS tot de PostGIS database niet goed beveiligd.

Diethard Jansen (GIS-hulp)

Aanpassen van de vaste schalen plus nieuwe PDOK services

Nieuwe PDOK services

Ten eerste: PDOK heeft een aantal nieuwe services ingevoerd de laatste maanden, en ik had die nog niet toegevoegd aan de plugin. Nu wel, en ze zijn beschikbaar voor de plugin, zonder een nieuwe versie van de plugin te installeren.

Ga in de dialoog naar het tabblad ‘Extra’ en gebruik daar de knop ‘Check services’. De plugin zal een nieuw laagbestand proberen op te halen en gebruiken.

PdokServicesPlugin_201

Als dat goed gaat schiet je van 2782 beschikbare layers naar meer dan 5000(!) lagen: de service die de meeste lagen toevoegd zijn de ‘Habitatrichtlijnen verspreiding’, typen en soorten. Dus heb je je altijd al eens afgevraagd wat het verspreidingsgebied is van de ‘Grijze Grootoor Vleermuis’, dan heb je die nu als WMS en WFS beschikbaar :-)

Verder zijn er een paar nieuw referentiekaartlagen bijgekomen: een ‘pastel’ kleurige en een tijdelijk grijze. Verder is NOK2014 beschikbaar, nieuw Spoorwegenlagen, iets met Schelpdierwater, Vogelrichtlijn verspreiding van soorten, Verkeersscheidingsstelsel en Publiek rechtelijke beperkingen.. In ieder geval: plezier ermee.

Aangepaste vaste schalen

In de statusbar van QGIS is er een Schaal/Scale dropdown waarmee je QGIS direkt naar een bepaalde schaal kan zetten. Standaard bevat die schalen lopend van 1:500 naar 1:1.000.000.

Selection_202

Als je echter de brtachtergrondkaart of de luchtfoto’s van PDOK gebruikt, en je maakt gebruik van de door QGIS vastgestelde schalen, dan krijg je dit:

wrongscale

Onscherpte van de tegels omdat de WMTS tileschema schalen die gelijklopen met de mooie historisch kaartschalen die QGIS nog in de dropdown heeft staan.

Nu is het mogelijk bij QGIS om ZELF te bepalen welke schalen in de dropdown staan. Ga via Settings/Options naar tabje Map Tools en verwijder door op het rode ‘minnetje’ te klikken alle daar aanwezige schalen. Een ‘schaalconfiguratie’ in QGIS bestaat uit een eenvoudig XML-bestand. Download hier: zip met schaalbestanden
twee PDOK voorbeelden door ze ergens uit te pakken. Probeer ze beide eens uit: door op de knop met het mapje te klikken kun je bv het bestandje nltilescales.xml openen. Je hebt dan in dropdown alle schalen zoals die te vinden zijn in dit Geonovum bestand.

Een andere manier is om de een PDOK WMTS laag te laden, aktief te maken en dan de ’tile scale’ of ‘schaalschuif’ te voorschijn te halen. Door op een van de schaalstreeptjes te klikken zal QGIS de schaal pakken zoals die in het capabilitiesdocument zijn gedefinieerd.

tilescale

Het vreemde nu is dat dit andere schalen zijn dan die in het Geonovum bestand zijn. Ik heb een tweede xml bestand in het zipje gestopt: nlscales.xml en DIE bevat de schalen die QGIS bepaalt als je gebruikt maakt van de tile scale.

Dit geeft eigenlijk de beste resulaten: rightscale.

Op deze manier kun je dus zonder gebruikt te maken van de tile scale gewoon naar een scherpe achtergrondkaartschaal zoomen.
Je zou natuurlijk ook nog een aantal tussenliggende schalen eruit kunnen laten. Door bijvoorbeeld alleen je favoriete schalen op te nemen. Elke kaartvisualisatie heeft wel een aantal schaalnivo’s die niet helemaal mooi zijn.

Moraal van het verhaal: bepaal ZELF je schalen. Happy QGIS-ing!