Het bevragen van een WFS in de browser – voorbeelden aan de hand van de BAG-service

Het leek me interessant en nuttig om wat meer te leren over het bevragen van een Web Feature Service (WFS) in de browser in het algemeen, en de WFS van de Basisregistratie Adressen en Gebouwen (BAG) in het bijzonder. Daarom ben ik maar eens in de materie gedoken 😉 Wat ik heb opgestoken, lees je in dit blog. De volgende bronnen waren daarbij erg behulpzaam:

WFS is een interface voor het opvragen van geografische vector data en bijbehorende administratieve data over het internet (zie Wikipedia). Je kunt een WFS bevragen met een HTTP GET of HTTP POST request. Een HTTP GET request (kortweg: GET) is een verzoek aan een WFS om gegevens te retourneren versleuteld in een URL. Een GET voor de WFS van de BAG ziet er zo uit:

http://geodata.nationaalgeoregister.nl/bag/wfs?param1=waarde1&param2=waarde2&...

De drie meest gebruikte GET requests voor het bevragen van een WFS zijn:

  • GetCapabilities
  • DescribeFeatureType
  • GetFeature

Tenzij je een ander formaat specificeert, geeft de WFS antwoord in de vorm van een XML-document.
In onderstaande tekst wordt het gebruik van deze drie requests geïllustreerd aan de hand van de WFS voor de BAG.

Met een GetCapabilities request krijg je snel inzicht in wat de WFS voor mogelijkheden biedt:

http://geodata.nationaalgeoregister.nl/bag/wfs?service=wfs&request=GetCapabilities

Welke lagen bevat de service? In welk coördinatenstelsel worden de features standaard geretourneerd? Wat voor uitvoerformaten ondersteunt de service? Vragen die beantwoord worden in het GetCapabilities document dat de service retourneert.

Als je detailinformatie over een laag (‘feature type’) in de WFS wilt, bijvoorbeeld de namen en gegevenstypen van de attributen, gebruik dan DescribeFeatureType. Door een waarde op te geven voor de parameter typeName geef je aan van welke laag je meer informatie wilt opvragen.

http://geodata.nationaalgeoregister.nl/bag/wfs?service=wfs&version=2.0.0&request=DescribeFeatureType&typeName=bag:verblijfsobject

Voor de duidelijkheid is in bovenstaand request version=2.0.0 opgenomen, maar strikt genomen is dit niet nodig. Als je de parameter version weg laat, geeft de service standaard de hoogste ondersteunde versie terug. In het geval van de BAG is dat 2.0.0.

Met een getFeature request kun je de geografische objecten (‘features’) en hun bijbehorende administratieve gegevens opvragen. Met de parameter count kun je het maximum aantal features aangeven dat in het antwoord geretourneerd wordt. Voor de BAG-service geldt dat count standaard de waarde 15.000 heeft.

http://geodata.nationaalgeoregister.nl/bag/wfs?service=wfs&version=2.0.0&request=GetFeature&typeName=bag:verblijfsobject&count=25

Met de parameter sortBy kun je de features in het antwoord van de service sorteren op attribuutwaarden. Met de toevoeging +A of +D kun je aangeven of de waarden in respectievelijk oplopende of aflopende volgorde gesorteerd moeten worden. Let op: bij een WFS die met ArcGIS Server gepubliceerd wordt, werkt de parameter sortBy alléén als de gegevens zijn opgeslagen in een ArcSDE geodatabase.

http://geodata.nationaalgeoregister.nl/bag/wfs?service=wfs&version=2.0.0&request=GetFeature&typeName=bag:verblijfsobject&count=25&sortBy=bag:identificatie+D

Als je slechts geïnteresseerd bent in één of enkele attributen, kun je het aantal attributen in het antwoord beperken met behulp van de parameter propertyName.

http://geodata.nationaalgeoregister.nl/bag/wfs?service=wfs&version=2.0.0&request=GetFeature&typeName=bag:verblijfsobject&count=25&propertyName=bag:postcode,bag:woonplaats

De gegevens van een specifieke feature kun je opvragen met de featureId parameter. De waarde die je in het geval van de BAG-service moet opgeven is het gml:id en níet de bag:identificatie!

http://geodata.nationaalgeoregister.nl/bag/wfs?service=wfs&version=2.0.0&request=GetFeature&typeName=bag:verblijfsobject&count=25&featureId=verblijfsobject.118285

Door met de parameter bbox een ‘bounding box’ op te geven, vraag je alleen de features op die binnen het opgegeven gebied liggen. Als de gegevens in EPSG:28992 (Amersfoort / RD New) geretourneerd worden, zoals bij de BAG standaard het geval is, geldt bbox=xmin,ymin,xmax,ymax. In het voorbeeld worden alle verblijfsobjecten in een deel van de gemeente De Marne opgevraagd.

http://geodata.nationaalgeoregister.nl/bag/wfs?service=wfs&version=2.0.0&request=GetFeature&typeName=bag:verblijfsobject&bbox=213089,593892,217076,597981

Het is ook mogelijk om een selectie te maken met behulp van de filter parameter. Het filter om alleen de verblijfsobjecten uit de BAG opgevraagd met postcode 9712 JN is: filter=<Filter><PropertyIsEqualTo><PropertyName>bag:postcode</PropertyName><Literal>9712JN</Literal></PropertyIsEqualTo></Filter>

Als je een filter opneemt in een URL, moet je niet vergeten bijzonder tekens zoals spaties, haakjes en aanhalingstekens te vervangen met behulp van URL encoding. Het maakt het request er jammer genoeg niet overzichtelijker op.

http://geodata.nationaalgeoregister.nl/bag/wfs?service=wfs&version=2.0.0&request=GetFeature&typeName=bag:verblijfsobject&filter=%3CFilter%3E%3CPropertyIsEqualTo%3E%3CPropertyName%3Ebag:postcode%3C/PropertyName%3E%3CLiteral%3E9712JN%3C/Literal%3E%3C/PropertyIsEqualTo%3E%3C/Filter%3E

Een ander voorbeeld van het filteren van features op basis van attribuutwaarden is onderstaand verzoek om alleen de verblijfsobjecten in Groningen met huisnummer 4 te retourneren. Het filter is in dit geval: Filter=<Filter><And><PropertyIsEqualTo><PropertyName>bag:woonplaats</PropertyName><Literal>Groningen</Literal></PropertyIsEqualTo><PropertyIsEqualTo><PropertyName>bag:huisnummer</PropertyName><Literal>4</Literal></PropertyIsEqualTo></And></Filter>

Met URL encoding wordt de URL dan:

http://geodata.nationaalgeoregister.nl/bag/wfs?service=wfs&version=2.0.0&request=GetFeature&typeName=bag:verblijfsobject&filter=%3CFilter%3E%3CAnd%3E%3CPropertyIsEqualTo%3E%3CPropertyName%3Ebag:woonplaats%3C/PropertyName%3E%3CLiteral%3EGroningen%3C/Literal%3E%3C/PropertyIsEqualTo%3E%3CPropertyIsEqualTo%3E%3CPropertyName%3Ebag:huisnummer%3C/PropertyName%3E%3CLiteral%3E4%3C/Literal%3E%3C/PropertyIsEqualTo%3E%3C/And%3E%3C/Filter%3E

Jammer genoeg kun je de parameters bbox en filter niet combineren. Als je het probeert, krijg je een foutmelding: Filter and bbox both specified but are mutually exclusive.

Het is niet eenvoudig om een filter te specificeren conform de officiële specificatie van het OGC. GeoServer maakt het iets makkelijker met CQL filters. CQL staat voor Common Query Language. Het is beter leesbaar dan ‘gewone’ filters, al moet je bij CQL filters ook URL encoding toepassen. CQL filters zijn echter geen onderdeel van de formele WFS-specificatie! De volgende voorbeelden met CQL filters werken, omdat de BAG-service ‘draait’ op GeoServer. Bij een service die wordt ontsloten met ArcGIS Server of Deegree kun je geen gebruik maken van CQL filters.

Het request in het vorige voorbeeld zou je ook kunnen doen met een CQL filter: cql_filter=(huisnummer=4 and woonplaats='Groningen')
Als je een CQL filter opneemt in een URL, moet je niet vergeten bijzonder tekens zoals spaties, haakjes en aanhalingstekens te vervangen met behulp van URL encoding. Het verzoek om alle verblijfsobjecten in Groningen met huisnummer 4 wordt dan:

http://geodata.nationaalgeoregister.nl/bag/wfs?service=wfs&version=2.0.0&request=GetFeature&typeName=bag:verblijfsobject&cql_filter=%28bag:woonplaats=%27Groningen%27%20and%20bag:huisnummer=4%29

Met een CQL filter kunt je ook op geometrie filteren. Met dit CQL filter worden alle verblijfsobjecten in een straal van 100 meter rondom het provinciehuis in Groningen opgevraagd: cql_filter=dwithin(bag:geometrie, point(234055 582111), 100, meters)

http://geodata.nationaalgeoregister.nl/bag/wfs?service=wfs&version=2.0.0&request=GetFeature&typeName=bag:verblijfsobject&cql_filter=dwithin%28bag:geometrie,point%28234055%20582111%29,100,meters%29

Het is mogelijk om tegelijkertijd te filteren op geometrie – bijvoorbeeld door een bounding box op te geven – en op attribuutwaarden. Het CQL filter voor het opvragen van alle verblijfsobjecten met een logiesfunctie in een door coördinaten begrensd deel van de gemeente De Marne is: cql_filter=((bbox(bag:geometrie, 213089, 593892, 217076, 597981) and (bag:gebruiksdoel='logiesfunctie'))

http://geodata.nationaalgeoregister.nl/bag/wfs?service=wfs&version=2.0.0&request=GetFeature&typeName=bag:verblijfsobject&cql_filter=%28bbox%28bag:geometrie,213089,593892,217076,597981%29and%28bag:gebruiksdoel=%27logiesfunctie%27%29%29

De BAG-service retourneert maximaal 15.000 features per request. Maar soms wil je meer features opvragen, dan kun je gebruik maken van ‘response paging’. Vraag eerst het totaal aantal features op dat voldoet aan je zoekopdracht door gebruik te maken van resultType=hits. Vervolgens kun je door slim gebruik te maken van de parameters startindex, count en sortBy in ‘etappes’ alle features opvragen.
In onderstaand voorbeeld wordt het aantal verblijfsobjecten in de woonplaats Groningen opgevraagd. Het aantal wordt geretourneerd in het XML-attribuut numberMatched.

http://geodata.nationaalgeoregister.nl/bag/wfs?service=WFS&version=2.0.0&request=GetFeature&typename=bag:verblijfsobject&cql_filter=%28bag:woonplaats=%27Groningen%27%29&resulttype=hits

De eerste 5.000 verblijfsobjecten in Groningen krijg je retour met het volgende request:

http://geodata.nationaalgeoregister.nl/bag/wfs?service=WFS&version=2.0.0&request=GetFeature&typename=bag:verblijfsobject&cql_filter=%28bag:woonplaats=%27Groningen%27%29&count=5000&startindex=0&sortBy=bag:identificatie+A

De volgende 5.000 verblijfsobjecten krijg je door startIndex=5000 op te geven.

http://geodata.nationaalgeoregister.nl/bag/wfs?service=WFS&version=2.0.0&request=GetFeature&typename=bag:verblijfsobject&cql_filter=%28bag:woonplaats=%27Groningen%27%29&count=5000&startindex=5000&sortBy=bag:identificatie+A

Standaard geeft een WFS het antwoord terug in XML-formaat, maar je kunt ook een andere formaat opgeven met behulp van de outputFormat parameter. In dit voorbeeld worden bijvoorbeeld alle verblijfsobjecten met postcode 9712 JN opgevraagd in CSV-formaat.

http://geodata.nationaalgeoregister.nl/bag/wfs?service=wfs&version=2.0.0&request=GetFeature&typeName=bag:verblijfsobject&cql_filter=%28bag:postcode=%279712JN%27%29&outputFormat=csv

KML kan ook:

http://geodata.nationaalgeoregister.nl/bag/wfs?service=wfs&version=2.0.0&request=GetFeature&typeName=bag:verblijfsobject&cql_filter=%28bag:postcode=%279712JN%27%29&srsName=EPSG:4326&outputFormat=kml

Als je de gegevens wilt opslaan in GeoJSON formaat, vergeet dan niet EPSG:4326 (WGS84) als coördinatenstelsel op te geven met behulp van de srsName parameter. De meeste ontwikkelaars en data analisten verwachten namelijk dat coördinaten in een GeoJSON-bestand in WGS84 zijn.

http://geodata.nationaalgeoregister.nl/bag/wfs?service=wfs&version=2.0.0&request=GetFeature&typeName=bag:verblijfsobject&cql_filter=%28bag:postcode=%279712JN%27%29&outputFormat=json&srsName=epsg:4326

Let op: de outputFormat parameter is weliswaar onderdeel van de formele WFS-specificatie van het OGC, maar welke uitvoerformaten beschikbaar zijn, hangt af van de map server die gebruikt wordt. Zo ondersteunt Deegree op dit moment bijvoorbeeld nog geen KML en GeoJSON. De uitvoerformaten waaruit je kunt kiezen voor een bepaalde WFS, kun je opvragen met een GetCapabilities request.

Tot zover. Mocht je nog verbeteringen of aanvullingen hebben, dan hoor ik het graag!

De Winst van Open Data

Vorige week organiseerde de provincie Groningen een symposium met als centraal thema De Winst van Open Data. Keynote-spreker Ton Zijlstra vroeg zich in zijn presentatie hardop af: ‘Kijken we wel door de juiste bril als we op zoek zijn naar de winst van Open Data?’ Voor een bedrijf of instelling zijn Open Data een middel om waarde te creëren, geen doel op zich. ‘Als je weet waarom, dan zie je de impact’, aldus Ton. Niet kijken vanuit een technisch perspectief, maar de belangrijke kwesties die organisaties bezig houden als vertrekpunt nemen. Vorige week vond eveneens De Week van het Digitaal Erfgoed plaats. Startpunt was de presentatie van de Nationale Strategie Digitaal Erfgoed (bekijk de animatie). De belangrijkste boodschap in de strategie: met meer samenwerking, standaardisatie en hergebruik besparen erfgoedinstellingen flink op de kosten en neemt de maatschappelijke waarde van digitale collecties enorm toe. Door erfgoedcollecties online beschikbaar te stellen en onderling te koppelen, bereiken instellingen een groter en nieuw publiek. Direct – bijvoorbeeld via social media – maar ook indirect door informatie als ‘halffabricaat’ te delen met app-bouwers, onderzoekers of andere erfgoedinstellingen. Nieuwe, technologische ontwikkelingen bieden dus grote kansen voor erfgoedinstellingen om (nog) beter invulling te geven aan hun missie en doelstellingen. Dat dit in de praktijk niet meevalt, blijkt uit het persbericht Digitaliseren Nederlands Erfgoed 25 miljoen te duur. Met name het auteursrecht is een groot obstakel. Het verwijderen van technische, juridische en financiële belemmeringen om zo de weg vrij te maken voor het hergebruik van gegevens en het creëren van nieuwe toepassingen. Daar gaat het om bij Open Data. De opstellers van het strategiedocument hebben echter een hoger doel voor ogen. Ze willen de maatschappelijke betekenis van erfgoedcollecties vergroten. Open Data zijn ‘slechts’ een instrument om dat doel te bereiken, maar wél een essentieel instrument. Zoek je in het strategiedocument naar het begrip ‘Open Data’, dan raak je misschien teleurgesteld. Het komt maar twee keer voor. Maar als je beter kijkt, dan vind je tussen de regels door het antwoord op de vraag ‘Waarom Open Data? Wat levert het erfgoedinstellingen op?’ Dan zie je de grote impact van Open Data op de erfgoedsector en wordt De Winst van Open Data meteen duidelijk.

Fietsknooppuntennetwerk NL importeren uit OpenStreetMap

Als adviseur Open Data bij de provincie Groningen krijg ik zo nu en dan de vraag: Kan ik de fietsknooppunten en het routenetwerk ook downloaden als open data? Voor de provincie Groningen is het antwoord: ja. Sinds vorig jaar wordt de fietsknooppunten en het routenetwerk in Groningen beschikbaar gesteld via het Provinciaal GeoRegister met een Public Domain Mark. Dat betekent dat je de gegevens kan downloaden in WMS-, WFS- of SHP- formaat en dat er geen beperkingen zijn voor hergebruik. Je mag er mee doen wat je wilt.

Helaas geldt dat niet voor de rest van Nederland. Via PDOK wordt wel een WMS-service beschikbaar gesteld, maar de mogelijkheden tot hergebruik zijn beperkt door technische en juridische belemmeringen. Een WMS-service stelt niet de ruwe data beschikbaar, alleen maar een kaartafbeelding. Je kunt het fietsknooppuntennetwerk dus wel laten zien, maar er niet mee rekenen. Routes uitstippelen tussen verschillende fietsknooppunten is niet mogelijk.
Bovendien is de licentie waaronder de gegevens beschikbaar worden gesteld volgens de informatie in het Nationaal GeoRegister zeer restrictief: er geldt een doelbeperking. Als je de gegevens wilt gebruiken voor iets anders dan beleid, moet je vooraf toestemming vragen aan Stichting Landelijk Fietsplatform.

Als app-bouwer kun je daar niet zoveel mee. Mijn advies is dan ook: gebruik de gegevens uit OpenStreetMap. Dan beschik je over de ruwe gegevens en is hergebruik geen probleem ongeacht de toepassing (mits je maar aan naamsvermelding doet). Maar hoe haal je het fietsknooppuntennetwerk uit OpenStreetMap?

Het kan op verschillende manieren. Ik laat hier de werkwijze zien die ik het meest eenvoudig vind en die werkt voor heel Nederland. De werkwijze is tot stand gekomen dankzij feedback van leden van het OpenStreetMap NL forum. Heb jij een beter idee? Dan hoor ik het graag :-).

Stap 1: Download netherlands-latest.osm.pbf van http://download.geofabrik.de/europe/netherlands.html.

Stap 2: Download osmconvert van http://wiki.openstreetmap.org/wiki/Osmconvert.

Stap 3: Voer het volgende commando uit:

osmconvert netherlands-latest.osm.pbf -o=netherlands-latest.o5m

Stap 4: Download osmfilter van http://wiki.openstreetmap.org/wiki/Osmfilter.

Stap 6: Voer het volgende commando uit:

osmfilter netherlands-latest.o5m --keep= --keep-ways= --keep-relations="network=rcn" -o=fietsknooppuntennetwerk.osm 

Stap 7: Download en installeer QGIS (versie 2.0 of hoger).

Stap 8Stap 8: Open QGIS. Kies in het menu voor VectorOpenStreetMap → Import topology from XML. Importeer het bestand fietsknooppuntennetwerk.osm dat je in stap 6 hebt aangemaakt. Bekijk de afbeelding voor de juiste instellingen van het OpenStreetMap Import dialoogscherm. Het importeren kan even duren.

Stap 9Stap 9: Exporteer de fietsknooppunten. Kies in het menu voor VectorOpenStreetMap → Export topology to SpatiaLite. Geeft als Input DB file het bestand aan dat je in stap 8 aangemaakt hebt. Selecteer in het dialoogscherm Points (nodes). Klik op Load from DB en vink de tag rcn_ref aan. Bekijk de afbeelding voor de juiste instellingen.

stap 10Stap 10: Exporteer de routes. Herhaal stap 9 maar selecteer nu de Polylines (open ways). Het is niet nodig om te filteren op tag. Zie afbeelding.

 

stap 11Stap 11: Filter uit de fietsknooppunten-laag alle punten waarvoor de rcn_ref tag leeg is. Selecteer de fietsknooppunten-laag in het Layers-panel. Kies in het menu LayerQuery. Voer de volgende query uit (zie ook afbeelding):

rcn_ref IS NOT NULL

stap 12Stap 12: Sla de fietsknooppunten- en routelaag op in het formaat en coördinatensysteem van je keuze. Klik met de rechter muisknop op de kaartlaag en kies in het snelmenu voor Save as. Kies in het dialoogscherm een formaat, bijvoorbeeld ESRI Shapefile of GeoJSON. Als je de gegevens liever niet in WGS84, maar in het Rijksdriehoekstelsel wilt, selecteer dan CRS = Amersfoort / RD New (EPSG:28992). Zie afbeelding.

Natuurijsbanen in OpenStreetMap

Als informatieadviseur van de provincie Groningen kreeg ik een paar maanden geleden de vraag of we, net als de provincie Fryslân, de locaties van Groninger natuurijsbanen als open data beschikbaar konden stellen.

Ik heb uitgezocht of er binnen de provincie gegevens over ijsbanen worden verzameld en beheerd, maar dat is niet het geval. Jammer voor de persoon die het verzoek had ingediend.

Toch liet het me niet helemaal los. Mappers leggen ook ijsbanen vast in OpenStreetMap, misschien biedt dat een alternatief?

Ik heb eerst uitgezocht wat de juiste manier is om een natuurijsbaan te taggen:
leisure = ice_rink
seasonal=yes
sport=skating
name=[naam van de ijsbaan]
operator=[naam van de ijsvereniging of stichting die de ijsbaan beheert]
website=[website van de ijsbaan of ijsverening/stichting]

Soms is een ijsbaan ingetekend als punt en soms als vlak. Het kan allebei. De tags zijn voor beide geometrie-types hetzelfde.

Een aantal ijsbanen in Groningen was onvolledig of onjuist getagt. Dat heb ik eerst gecorrigeerd. Daarna heb ik met de hulp van vrienden en bekenden een aantal ijsbanen toegevoegd.

Helaas is de kaart nog lang niet compleet. Als je een ontbrekende ijsbaan weet, voeg deze dan toe aan OpenStreetMap of stuur mij een berichtje, dan doe ik het voor je.

Met behulp van Overpass Turbo heb ik de ijsbanen in Groningen geëxporteerd als GeoJSON bestand. Na wat bewerkingen in QGIS (ik heb de ijsbanen die als vlakken zijn ingetekend bijvoorbeeld geconverteerd naar punten) toon ik het resultaat in een simpele Leaflet-viewer.

HOT, het Humanitarian OpenStreetMap Team

Mijn eerste kennismaking met OpenStreetMap (OSM) was de TED talk “The Year Open Data Went Worldwide” van Tim Berners-Lee. Vanaf 03:34 vertelt Berners-Lee over hoe de OSM community een belangrijke bijdrage leverde aan de humanitaire hulp na de aardbeving in Haïti in januari 2010. Mensen van over de hele wereld hielpen met het digitaliseren van satellietbeelden in OSM, zodat in een paar dagen tijd een gedetailleerde kaart van het getroffen gebied beschikbaar was voor de hulporganisaties.

Een paar maanden voor de aardbeving was het Humanitarian OpenStreetMap Team (HOT) al opgestart. HOT probeert  een brug te slaan tussen de traditionele humanitaire hulporganisaties en OSM. Het team zorgt ervoor dat in crisissituaties, zoals bij natuurrampen, de OSM-infrastructuur en -community worden ingezet om snel een actuele kaart vrij beschikbaar te stellen. Kate Chapman, directrice van HOT, presenteerde tijdens de eerste dag van State of The Map 2013 de nieuwe ontwikkelingen binnen HOT.

OpenStreetMap Tasking Manager is één van de nieuwe initiatieven. Het is een tool om het werk (fotomateriaal dat gedigitaliseerd moeten worden) te verdelen, mappers te instrueren en inzicht te geven in de voortgang. Ik moet bekennen dat ik zelf wel drempelvrees heb -bij zo’n project wil je toch geen fouten maken- maar één van de deelnemers aan de conferentie in Birmingham met wie ik hierover sprak, verzekerde me dat ik daar niet bang voor hoef te zijn. Het gedigitaliseerde kaartmateriaal wordt namelijk gevalideerd door ervaren mappers. Wanneer ter plekke geconstateerd wordt dat de kaart niet klopt, kunnen correcties bovendien snel en eenvoudig doorgevoerd worden. Dat is nou nét het sterke punt van OpenStreetMap 😉

Een andere initiatief is de website LearnOSM.org. De website bevat handleidingen voor het bijdragen aan en gebruik maken van OpenStreetMap. Er zijn handleidingen voor beginners, gevorderden en experts. Ze worden onder een open licentie beschikbaar gesteld via Github. Er is veel aandacht voor de installatie en configuratie van software op het Windows-besturingssysteem. Dat is fijn, want de community gedomineerd door Linux en iOS gebruikers en er is over het algemeen weinig Windows-documentatie te vinden. De handleidingen zijn jammer genoeg niet helemaal up-to-date, maar dit najaar worden ze geactualiseerd.

Op de tweede dag van de conferentie ging Kate samen met Kristy Van Putten (AIFDR) en Robert Soden (World Bank) dieper in op het werk van HOT in Indonesië. Om goed voorbereid te zijn op natuurrampen als aardbevingen en tsunami’s is het open source risicomodel inaSAFE ontwikkeld en geïmplementeerd in QGIS. HOT leidt lokaal mensen op om de gegevens te verzamelen die nodig zijn als input voor het model. Zo zijn in de afgelopen twee jaar meer dan 800.000 gebouwen in Indonesië opgenomen in OSM. Een indrukwekkende prestatie!

De benodigde gegevens worden overgetrokken van satellietbeelden of in het veld verzameld met behulp van walking papers of een GPS. In Haïti, waar HOT nog steeds actief is, worden tegenwoordig ook drones ingezet om informatie in te winnen. In de presentatie ‘Use of Unmanned Aerial Vehicles in Haiti’ liet Frederic Moine van Drone Adventures een inspirerend filmpje zien ter illustratie.

In één van de conferentiezalen was een pledge poster wall. Het verzoek aan de aanwezigen was om hun persoonlijke OSM-doelstelling voor het komende jaar op te schrijven. Die van bij staat er niet bij, maar dat wil ik graag goed maken: Ik beloof dat ik het komende jaar als mapper een bijdrage ga leveren aan HOT en tenminste drie mensen enthousiast maak om hetzelfde te doen.

Overpass turbo

Tijdens de eerste dag van State of The Map 2013 in Birmingham gaf Richard Cantwell de interessante workshop Introduction to OpenStreetMap for GIS Professionals. Hij vertelde onder andere over Overpass turbo, een handige en relatief eenvoudige tool om via de Overpass API gegevens uit OpenStreetMap te filteren en te exporteren, bijvoorbeeld naar GeoJSON. GeoJSON is een open formaat dat door open source GIS-software zoals QGIS ingelezen kan worden voor verdere analyse en het maken van kaarten.

De afgelopen weken heb ik samen met mijn collega’s bij de provincie Groningen hard gewerkt aan het opschonen van bushaltegegevens. Na afloop van de Richard’s workshop vroeg ik me af hoeveel werk het zou zijn om de bushaltegegevens van Groningen uit OpenStreetMap te halen en deze te vergelijken met de bushaltegegevens in onze interne registratie. Dat blijkt met Overpass turbo een fluitje van een cent.

Je gaat naar de website www.overpass-turbo.eu, zoomt in op Groningen en selecteert met behulp van het gereedschap manually select bbox de gehele provincie. Helaas kun je alleen een rechthoekig gebied selecteren, waardoor je uiteindelijk in de resultaatset niet alleen de Groninger, maar ook Friese, Drentse en Duitse bushaltes krijgt. Dit is echter eenvoudig te verhelpen in QGIS door middel van een filter op de provinciegrens.

Vervolgens komt het meest lastige gedeelte: het opgeven van de juiste tag op basis   waarvan je de nodes wilt filteren. Een tag bestaat uit een key en een value. Voor bushaltes blijken binnen OpenStreetMap verschillende tags te bestaan. Volgens deze wikipagina is de juiste combinatie voor het taggen van een bushalte: platform = transport. In de praktijk blijken de bushaltes in Groningen echter getagt te zijn als highway = bus_stop.

Pas de query in Overpass turbo editor aan zoals in de afbeelding en klik op Run.
Overpass turbo editorHet duurt even, maar dan krijg je een kaartje met daarin alle bushaltes in OpenStreetMap binnen het geselecteerde gebied.

Overpass mapVia Export kun je het kaartje opslaan als PNG afbeelding of in een viewer tonen. Je kunt er ook voor kiezen om de data te exporteren naar een gestructureerd formaat, bijvoorbeeld GeoJSON. Zo makkelijk is het dus 😉

Je kunt de Overpass API overigens ook via XAPI Query Builder bevragen, maar ik vind Overpass turbo gebruiksvriendelijker. XAPI Query Builder biedt je wel de mogelijkheid om de nodes in de resultaatset te bewerken in iD, de online editor voor OpenStreetMap. Dat is een pluspunt.

XAPI Query Builder

Dag 1 – Observe. Hack. Make. (OHM2013)

Ray McGovern werkte decennia lang als analist voor de CIA. Hij is inmiddels gepensioneerd en nu politiek activist. Hij draagt een t-shirt met de tekst “Arrest Bush and Obama” en legt uit dat de Amerikaanse presidenten weinig op hebben met burgerrechten en vrije media. “It’s important to do good, but it’s not enough to avoid evil”, aldus McGovern. “You have to challenge and confront evil!” Even later voegt hij daaraan toe: “It’s nice if you have principles but if you’re not willing to take risks on them, they’re nothing more than a hill of beans!”
Hij vindt dat actie begint bij persoonlijke betrokkenheid en empathie en citeert dominee Kolvenbach: “When the heart is touched by direct experience, the mind may be challenged to change. Personal involvement with innocent suffering, with the injustice others suffer, is a catalyst for solidarity which then gives rise to intellectual inquiry and moral reflection.” Hij legt een zware verantwoordelijkheid bij de verzamelde hackers. “There is no hope without you. You are the great Levellers, with your cyber capabilities.”

Dr. Suelette Dreyfus doet onderzoek naar klokkenluiders. Ze laat tijdens haar presentatie veel statistieken zien. Uit haar studie blijkt onder meer dat minder dan 20% van de ondervraagden er zeker van zijn dat ze voldoende bescherming en steun krijgen wanneer ze misstanden naar buiten brengen. Op de vraag wat het beeld is van klokkenluiders, antwoord 22% “weet ik niet”. Volgens dr. Dreyfus bewijs voor de ambivalente houding van het publiek ten aanzien van klokkenluiders.

Coleen Rowley gaf les aan medewerkers van de FBI over staatsrecht en ethiek. Ze vertelt hoe vóór 9/11 medewerkers geleerd werd om níet te liegen. Na 9/11 veranderde dat naar ‘secrecy to keep us secure’. “All crime is enabled and facilitated by secrecy”, aldus Rowley. Een overheid die niet transparant en controleerbaar is, zal uiteindelijk crimineel gedrag vertonen naar haar burgers. Ze citeert Howard Zinn: “Civil disobedience is not our problem. Our problem is civil obedience.”

De apathische houding en het onvermogen tot handelen van burgers is ook een onderwerp dat Julian Assange aansnijdt in zijn lezing via een live stream met de ambassade van Ecuador in Londen. “In the age of internet ignorance is a personal choice” zegt Assange. Zijn boodschap: Laat je niet bang maken, zorg dat je goed geïnformeerd bent, verenig je en kom op voor je rechten! Ook hij waarschuwt voor de gevaren van een overheid die steeds meer weet over haar burgers, terwijl burgers steeds minder weten over het opereren van die overheid. “If the state is out of control, the amount of crime that is inflicted on you as an individual will be tremendous.”

De sprekers tijdens OHM2013 roepen op tot actie, maar daar is veel moed voor nodig. Assange zegt dat mensen als Bradley Manning, Edward Snowden en hijzelf een belangrijke symboolfunctie hebben. Ik bedenk me dat je soms vergeet dat het tegelijkertijd ook ‘gewone’ mensen zijn, die buitengewone offers brengen. Ze zijn alles kwijt: hun werk, huis, familie en vrienden. Na afloop van de lezing van Assange is er gelegenheid tot het stellen van vragen. Jérémie Zimmermann krijgt het woord en zegt dat hij hoopt dat er een moment zal komen waarop Assange weer lijfelijk aanwezig kan zijn bij evenementen als OHM2013. Hij is geëmotioneerd. Assange legt uit: “Jérémie was asked to become informer against me and didn’t .” Jeremy antwoordt: “Because I’m your friend.”

OHM2013 gaat over onverschilligheid versus persoonlijke betrokkenheid, weg kijken versus verantwoordelijkheid nemen, klakkeloos gehoorzamen versus opkomen voor je rechten, verborgenheid versus transparantie. Maar bovenal gaat het over de kracht van netwerken en vriendschappen.