Blikveld2BAG

De Blikveld2BAG API geeft de panden (en adressen) terug die op de foto te zien zouden moeten zijn. Voor de New York Public Library maakte Bert Spaan eerder een tooltje om zo'n blikveld mee te tekenen. De output van dat tooltje dient als de input voor deze api.

De API geeft alleen de panden terug die daadwerkelijk in zicht staan, panden die achter andere panden staan worden niet teruggegeven.

Bouwjaren worden meegegeven, zodat je desgewenst rekening kunt houden met het moment waarop een foto is genomen.

Onder het kopje Hoe het werkt meer over ... hoe het werkt.

Code door Richard Duivenvoorde, vanaf de zijlijn aangemoedigd door Menno den Engelse, mede mogelijk gemaakt door een financiële bijdrage van het Noord-Hollands Archief, code op GitHub.

Verplichte Parameter

camera_json camera_json=[urlencoded geojson] De geojson moet een GeometryCollection bevatten met een punt (het camerastandpunt) en een lijn (de tegenovergelegen zijde waarmee het blikveld wordt uitgedrukt), zoals het NYPL tooltje die maakt.

Optionele Parameters

camera_scale camera_scale=1.33 Verlengt het blikveld. Als je denkt dat mensen het blikveld wat 'kort' getrokken hebben, kan je het met dit getal 'verlengen'.
output output=output_pand_punten de opties zijn 'output_adres_punten', 'output_pand_vlakken' of 'output_pand_punten'
format format=format_geojson de opties zijn 'format_geojson' of 'format_geojson_io' (= doorsturen naar geojson.io)
show_cameras show_cameras=true toont in de resultaten ook de geometrie van het blikveld
show_input show_input=true toont alle panden (voor de analyse) binnen de driehoek van het blikveld, ook de panden die achter een ander staan
method_vertex method_vertex=true bereken zichtbaarheid vanuit hoekpunten panden naar camerastandpunt
method_beam method_beam=true bereken zichtbaarheid door te kijken of stralen vanuit het camerastandpunt tegen panden op botsen
show_debug show_debug=true geeft ALLE features terug die hebben meegedaan in de analyses: 'beams', 'vertices', opgehaalde panden etc etc: VEEL!

Gebruik de 'Verstuur (GET)'-knop om de GET parameters en de url te kunnen zien in de browser. De api zelf werkt zowel met POST als GET.

Probeer het zelf


De camera_scale verlengt (of verkort) het blikveld. Als je denkt dat mensen het blikveld wat 'kort' getrokken hebben, kan je het met dit getal veranderen.


Wil je punten van BAG adressen, vlakken van BAG panden of de middenpunten van die vlakken?


Wil je de kale GeoJson of de resultaten meteen bekijken?

Wil je het blikveld driehoekje als geometrie opgenomen hebben in het resultaat?

Toont alle panden die binnen het driehoekje vallen (dus ook de panden die achter andere staan)

Kijkt of er onbelemmerd zicht is van hoekpunten panden naar camerastandpunt.

Trekt stralen vanuit het camerastandpunt en kijkt of ze tegen een pand 'botsen'. De beste resultaten krijg je door zowel de 'beam' als de 'vertex' methode te gebruiken.

Hiermee krijg je ALLE features terug die hebben meegedaan in de analyses: 'beams', 'vertices', opgehaalde panden etc etc: VEEL!

Met de GET knop zie je de met dit formulier opgebouwde url in de browser

Hoe het werkt

Op basis van de 'camera-driehoek' worden eerst uit de BAG alle panden opgehaald en geanalyseerd. Desgewenst worden daarna van de resultaat-panden nog de adressen opgehaald.

Het script retourneert eigenlijk altijd GeoJSON of een json met een foutmelding. GeoJSON kun je eenvoudig bekijken (en maken) op https://geojson.io/ of in QGIS. Er is via Github een QGIS project beschikbaar met styling (zoals in onderstaande afbeeldingen) die GeoJSON MET debug informatie inzichtelijker maakt. Zorg dat de GeoJSON met als naam 'result.json' in dezelfde map staat als de QGIS-projectfile.

Het script gebruikt twee manieren om te kijken of er ongehinderd zicht is tussen pand en camerastandpunt: de 'beam' methode en de 'vertex' methode. Beide manieren hebben zo hun voordelen en nadelen, maar als ze samen gebruikt worden vullen ze elkaar prima aan.