Onder de motorkap: verkrijgen en gebruiken van straatdata

Een tijdmachine die de bebouwing van de historische binnenstad van Gouda onderzoekt, digitaal vastlegt en prachtig weergeeft.

Onder de motorkap: verkrijgen en gebruiken van straatdata

2 april 2022 0

Eén van de “blokjes” data (entiteiten) die voor een Tijdmachine van belang zijn, zijn straten. In dit artikel beschrijf ik hoe ik een basisset van informatie over Goudse straten in de Gouda Tijdmachine laat stromen.

Definities

De Gouda Tijdmachine maakt gebruik van Omeka S als collectiebeheersysteem. De “S” staat hierbij voor Semantic, oftewel semantisch. Ik zal dus eerst moeten vastleggen wat een straat is en welke eigenschappen een straat heeft binnen de Gouda Tijdmachine.

In Omeka S leg je dit vast in een Resource template, hieronder een schermafdruk (en voor Omeka S gebruikers een export van deze resource template voor hergebruik):

Je ziet in deze afbeelding welke properties toebehoren aan de class Straat. Wat het originele label is uit de betreffende vocabulaire dat is gebruikt (hierover later meer), het label zoals ik dit in Omeka S gebruikt wil zien worden (Nederlands), of ze verplicht zijn en of ze privé zijn (natuurlijk niet :-).

Ook weergegeven per property is het datatype. Standaard is dit een string (of literal). Bij sommige properties zie je dat het een Item of URI bevat, de links in wording!

Er zijn hier properties gebruikt die uit bestaande, gedefinieerde vocabularies komen. Voordat je deze kunt gebruiken, moet je deze vocabularies in Omeka S importeren. Hieronder een schermafdruk van de vocabularies die ik op dit moment heb ingelezen voor de Gouda Tijdmachine:

Een vocabulary kun je eenvoudig inlezen in Omeka S door bij de bron een bestand te downloaden of nog simpeler, door een URL op te geven. In bovenstaande schermafdruk heb ik de gebruikte vocabularies in de resource template Straat met licht-gele balken weergegeven.

Een speciale vocabulary is die van de Gouda Tijdmachine waarin bijvoorbeeld is gedefinieerd wat wij, als Gouda Tijdmachine, onder een straat (https://www.goudatijdmachine.nl/def/#Straat) verstaan:

De wegverharding tussen de huizen in een bewoonde plaats.

NB: deze Gouda Tijdmachine Vocabulairy onderdeel is nog work-in-progress, een startpunt staat op https://goudatijdmachine.nl/def/.

Data

Nu een “straat” is gedefinieerd kan er straat data in het collectiebeheersysteem ingevoerd worden. Een schare aan vrijwilligers kunnen de Gouda Tijdmachine hierbij helpen om informatie uit archiefbronnen en eerder werk – zoals dr. A. Scheygrond’s boek Goudsche Straatnamen.

Maar ik ben meer van de techniek… Hoe kan ik in ieder geval een basis (linked data)set creëren die als referentiedata gebruikt kan worden? Als startpunt heb ik hiervoor de PDOK viewer gebruikt. Deze geeft toegang tot (een deel van de) data uit de Basisregistratie Adressen en Gebouwen (BAG) zoals bijgehouden door het Kadaster. Naast een GUI is er ook een API beschikbaar op de gebruikte PDOK Locatieserver. Via de Suggestservice kon ik de straten in Gouda opzoeken. Daarna kon ik de Lookup-service gebruiken om van de gevonden weg informatie op te vragen. Hieronder een bijv. de gegevens van de Westhaven in Gouda (link):


{
  "response":{"numFound":1,"start":0,"maxScore":15.755582,"docs":[
      {
        "bron":"BAG/NWB",
        "woonplaatscode":"1005",
        "type":"weg",
        "woonplaatsnaam":"Gouda",
        "openbareruimtetype":"Weg",
        "gemeentecode":"0513",
        "rdf_seealso":"http://bag.basisregistraties.overheid.nl/bag/id/openbare-ruimte/0513300000007776",
        "weergavenaam":"Westhaven, Gouda",
        "suggest":["Westhaven, Gouda"],
        "straatnaam_verkort":"Westhvn",
        "id":"weg-4f77b8fec516f001a61c14ea4c6b800c",
        "gemeentenaam":"Gouda",
        "identificatie":"0513300000007776",
        "openbareruimte_id":"0513300000007776",
        "geometrie_ll":"MULTILINESTRING((4.71016 52.01021,4.71157 52.00926,4.71338 52.00725,4.71336 52.00695))",
        "provinciecode":"PV28",
        "provincienaam":"Zuid-Holland",
        "centroide_ll":"POINT(4.71209255 52.00867368)",
        "geometrie_rd":"MULTILINESTRING((108517 447088,108613 446982,108735 446757,108734 446723))",
        "provincieafkorting":"ZH",
        "centroide_rd":"POINT(108648.243 446916.036)",
        "straatnaam":"Westhaven",
        "_version_":1728975877560074242,
        "typesortering":3.0,
        "shard":"bag"}]
  }}

Via de PDOK Locatieserver krijg ik dus, voor alle Goudse straten in de BAG (en let op: dat betreft het heden, niet het verleden!), de naam, de BAG identifier (=link), een centroïde (breedte/lengtegraad, in WGS84 en RD) en een geometrie!

Een andere bron die ik graag wil betrekken is Wikidata. Via de Wikidata Query Service kan ik aan Wikidata vragen om een straat die als property een bepaalde BAG identifier heeft:

Het resultaat voor de Westhaven in Gouda is wd:Q19650906. Deze SPARQL query kun je naast een GUI ook via een API call uitvoeren.

Dit alles heb ik in een Perl script (dit kun je natuurlijk in minder gedateerde talen realiseren…) gevat waarna ik een CSV bestand had van 1215 Goudse straten, met geo-info, waarvan 930 met een Wikidata link. Nice!

Dit CSV bestand kan eenvoudig in Omeka S worden geladen:

Door in de eerste regel van het CSV bestand property namen te gebruiken, is de mapping in de CSV import easy-peasy. Het enige wat ik nog aanvullend bij de mapping dien op te geven zijn datatypes, in dit geval zijn de sameAs’s en liesIn’s van het type URI (in het CSV is dit opgebouwd uit een URI {spatie} label). De breedte/lengtegraad laat ik Omeka S gebruiken om de locatie van de betreffende Resource te zijn.

Ik geeft hierboven aan dat ik items die ik importeer aan het Resource template Straat en van Class gtm:Straat zijn. Om hier een “collectie” (binnen Omeka S een Item set genoemd) van te maken zeg ik hierboven dat alle items in de Straten collectie moeten komen.

Binnen Omeka S kun je een CSV bestand gebruiken voor de initiële import, maar ook om bestaande Items bij te werken! Belangrijk hierbij is natuurlijk dat je zorgt voor een unieke identifier voor een Item. Voor de straten in de Gouda Tijdmachine heb ik gekozen om te kiezen voor “straat/{straatnaam}” (diakrieten en punten worden verwijderd, spaties vervangen door een minteken). Een persistente identifier – ARK – wordt automatisch gecreëerd (mits je de ARK module heb geïnstalleerd).

In bovenstaande afbeelding zie je dat er voor de Revise optie is gekozen. Dus als items al bestaat – gebaseerd op de identifier – dan worden gegevens bijgewerkt. Zo niet, dan wordt de resource toegevoegd.

Het resultaat van de import voor bijvoorbeeld de Westhaven kun je zien via https://n2t.net/ark:/60537/b49ZNJ. Oplettende lezers zien deze pagina al mee informatie bevat, waaronder een alternatieve naam en een link naar een panorama foto. Ook zie je dat er al andere data binnen het collectiebeheersysteem is gekoppeld aan deze straat (uit de volkstelling 1830). Deze straat bestond dus al in het collectiebeheersysteem en is slechts bijgewerkt met informatie.

Geo-informatie weergeven

Alhoewel je in Omeka S goed kunt bladeren door Items, zoals de Straten-collectie, is het natuurlijk leuker om de straten op de kaart te tonen, we hebben immers de geo-informatie. Hier komt nog een kleine uitdaging om de Itemset data die de Omeka S API levert om te zetten in GeoJSON. Via een eenvoudig script (ditmaal in PHP, voor de afwisseling) wordt de data geharvest en getransformeerd naar GoudaStraten.geojson dat weer eenvoudig in de Referentiedata sectie op de Gouda Tijdmachine op de kaart getoond kan worden:

De volgende stap: het hand- en kenniswerk

Met de basisset aan straatinformatie zijn we natuurlijk nog niet klaar bij de Gouda Tijdmachine. In de moderne bronnen als de BAG ontbreken de “verdwenen” straten en steegjes. Bij het maken van de bovengenoemde GeoJSON kon ik het script ook laten vertellen bij welke straten er nog geo-info ontbreekt: Eerste E.J. Potgieterstraat, Jacob van Lennepkade, Hemelrijk, Kapelstraat, Willams Wijckenstraat, Zwanenburgserf, Beghijnsteeg, Mathijs Jansz. steeg, Papensteeg, Agnietenwatertje, Groenendaal, Jongkindserf, Nieuwe Vuilsteeg, Verlengde Wachtelstraat, Nonnestraat, Nieuwe Vrouwensteeg, Verloren Kost, Rotterdamschedijk, Jannetje, Ons lieffrouwen Nyeustraat, Nieuwe Havensteeg, Walich Avensoonssteeg, Tiendeweg, Lazarussteeg, Sint Antonieklooster, Lombardsteeg, Dwarsstraat, Amsterdamse Erf, Sluipwijksekade, Vlaamsehaven, Onder de Boompjes. Dat wordt handwerk op basis van oude kaarten.

Verder moeten de straten verrijkt worden met informatie, zoals begin- en eindjaar (of eerste en laatste vermelding), alternatieve schrijfwijzen en een beschrijving (“De naam Westhaven houdt verband met de ligging.”). Stapje lastiger, sommige straten zijn opgegaan in andere straten, dat is dus weer linken van straten in het collectiebeheersysteem.

Gebruik van de straten

Met de opbouw – geautomatiseerd en handmatig – van een referentiebestand van straten kan er ook uitgekeken worden naar het gebruik van deze data. Zo worden er in het collectiebeheersysteem van de Gouda Tijdmachine ook andere informatie over andere entiteiten opgenomen, zoals Panden en Percelen en “indexen” op bijvoorbeeld de volkstelling (van 1830). Dit soort Items kunnen natuurlijk weer gekoppeld worden aan een straat, grotendeels geautomatiseerd, deels door vrijwilligers.

Binnenkort gaat er een crowd-sourcingsproject lopen waarbij foto’s van Gouda van onder meer de beeldbank van Streekarchief Midden-Holland ge-geo-positioneerd worden, oftewel “op de kaart” worden gezet. Hiervoor is met behulp van het Referentiebestand Straten gezocht in de beeldbanken om foto’s te vinden waar een straatnaam in staat (hier komen de alternatieve schrijfwijzen ook weer van pas). Deze foto’s aangeboden aan vrijwilligers met de vraag om de camera juist te positioneren (hiervoor wordt oa. Bert Spaan’s Leaflet.GeotagPhoto component gebruikt):

Het resultaat is dat er aan het collectiebeheersysteem afbeelding toegevoegd kunnen worden die én geo-informatie hebben én gekoppeld zijn aan een straat in de Gouda Tijdmachine! Alle data van de Gouda Tijdmachine worden als open data aangeboden in de Datasets-sectie. Op basis hiervan zou bijvoorbeeld Streekarchief Midden-Holland de verrijkingen van haar beeldbank foto’s (positie en link naar straat) kunnen opnemen in haar eigen collectiebeheersysteem.

 

Geef een antwoord

Het e-mailadres wordt niet gepubliceerd.