Hoe een kaart te maken met de meest recente opnamedata van Streetview met behulp van Python en GeoJSON

DEZE BLOGPOST EN DE SCRIPTS WERDEN OP 29/12/2020 GEÜPDATET, OMDAT DE OUDE API NIET MEER WERKTE. ER KAN VANAF NU EEN OFFICIËLE API VAN GOOGLE GEBRUIKT WORDEN. AANPASSINGEN WERDEN OP 29/12/2020 IN HET ROOD AANGEDUID.

In het verleden maakte ik een kaart van Antwerpen, Kontich en Edegem waarop te zien is wanneer Google de meest recente Streetview opnames maakte per straat. Om dat te doen, gebruikte ik toen een MySQL databank en PHP scripts. Ik maakte meerdere blog posts over hoe ik die kaarten maakte:

In een commentaar op die laatst blog post, kreeg ik de vraag of het mogelijk is om hetzelfde te doen met GeoJSON of een Geopackage en iets anders dan PHP. Daarom heb ik mijn MySQL-PHP combinatie vertaald naar GeoJSON en Python 3.

De scripts en een voorbeeld dataset zijn te vinden op GitLab. Je kan alle bestanden ineens downloaden via deze link. De batchfile is specifiek voor gebruik in Windows, maar het GeoJSON-bestand en Python kunnen in elk besturingssysteem gebruikt worden.

Om deze scripts te gebruiken, moet Python geïnstalleerd zijn op je systeem. Ik heb dit script getest met Python 3.7.0 dat geïnstalleerd werd met behulp van OSGeo4W, maar het werkt waarschijnlijk ook in andere versies van Python 3.

Zoals je kan zien in de Windows batchfile, gebruik de Python 3 van QGIS die geïnstalleerd werd met behulp van OSGeo4W. Hoe je dat doet, leg ik uit in mijn blog post over hoe je WFS data naar PostGIS copieerd met behulp van GDAL/OGR. Python wordt op exact dezelfde manier geïnstalleerd als de manier waarop ik in die post GDAL installeerde. Als je QGIS 3.x installeerde, heb je waarschijnlijk bijna alle componenten die nodig zijn al. Alleen het Fiona voor Python 3 package moet eventueel nog toegevoegd worden. Hoe je dat doet, kan je lezen in deze blog post.

Je kan ook een ander Python 3 installatie op je computer gebruiken, maar dan moet je wel de batch file aanpassen, zodat de locatie van Python 3 overeenkomt met jou installatie. Je moet er ook voor zorgen dat zeker volgende Python packages geïnstalleerd zijn:

In mijn voorbeeld gebruik ik mijn 64bit OSgeo4W QGIS installatie. Deze bevindt zich op C:\OSGeo4W64\bin\python3.exe. Als je Python 3 op een andere locatie gebruikt, dan moet je de locatie daarvan aanpassen in het check.bat bestand en moet je ook de PYTHONHOME instelling aanpassen.

Omdat een Google API key persoonlijk is en omdat daar betaalgegevens aan gekoppeld zijn, vervang ik mijn API key in de scripts door MyApiKey, maar als je deze scripts zelf wil gebruiken, moet je uiteraard je eigen API key gebruiken.

Het Python script werd geschreven om gebruik te maken van het “testdata.geojson” bestand dat alle punten bevat die je wil dat het script controleert. Het GeoJSON-bestand moet de volgende velden bevatten:

  • fid: een uniek nummer per punt
  • xgoogle: de x coördinaat waar de Google API een Streetviewbeeld vindt (dit kan leeg gelaten worden, want de script zal dit veld invullen)
  • ygoogle: de y coördinaat waar de Google API een Streetviewbeeld vindt (dit kan leeg gelaten worden, want de script zal dit veld invullen)
  • lastcheck: de meest recente datum waarop het punt werd gecontroleerd. Als het punt nog nooit gecontroleerd werd, moet er 0 in dit veld staan. Laat dit veld nooit leeg! De waarde in dit veld heeft de vorm JaarMaandDag.
  • datestreetview: het moment waarop de Google Streetview opname werd gemaakt (dit mag leeg gelaten worden, want het script zal dit veld invullen).
  • municipality: de gemeente waarin dit punt gelegen is (dit is een optioneel veld).

De Gitlab repository bevat ook een tweede GeoJSON-bestand dat slechts 1 punt bevat (om de velden in het veld te behouden), dat je als sjabloon kan gebruiken. Je kan er je eigen punten aan toevoegen en daarna kan je dat ene punt dat ik er in het gestoken uit verwijderen. Daarna moet je de naam van het GeoJSON-bestand dat moet gecontroleerd worden in check.py, veranderen in de bestandsnaam van jou GeoJSON-bestand. Je kan eventueel ook jou GeoJSON-bestand hernoemen naar testdata.geojson en dan kan je check.py ongewijzigd laten.

Nadat dat gebeurd is, kan je gewoon check.bat uitvoeren en dan zullen er 10 punten voor je gecontroleerd worden. Je kan dat aantal aanpassen op de regel set checks=10 in check.bat. Als je check.bat uitvoert vanop de command line, kan je zien welke punten gecontroleerd werden en welke resultaten gevonden werden. Als je wil kan je Windows Taakplanner gebruiken om de batchfile uit te voeren, zodat je de controles kan automatiseren. In het verleden heb ik een blog post geschreven over hoe je dit kan doen voor mijn WFS backup scripts. Je kan dat op dezelfde manier doen voor de scripts in deze blog post.

Hoe de scripts werken, wordt uitgelegd in de commentaren in de bestanden. Op die manier hoop ik dat het helpt om te berijpen wat de scripts juist doen.

DOWNLOAD DE SCRIPTS VAN GITLAB

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *

Deze site gebruikt Akismet om spam te verminderen. Bekijk hoe je reactie-gegevens worden verwerkt.