CBS buurten visualiseren met Mapbox en Power BI
In deze post laat ik zien hoe je CBS buurtgegevens met de Mapbox Visual kunt tonen op een kaart in Power BI.
Ga in de browser naar het Nationaal Georegister. Zoek op CBS gebiedsindelingen. Open het tabblad Downloads, views en links. Noteer de URL van de WFS service en de naam van de kaartlaag (het feature type) met de actuele buurtindeling.
Voor het downloaden en converteren van de buurten gebruiken we cURL. Check eerst of deze command line utility al beschikbaar is op jouw systeem. Installeer cURL als dit niet het geval is.
Open een opdrachtprompt en voer het volgende commando uit:
curl "https://geodata.nationaalgeoregister.nl/cbsgebiedsindelingen/wfs?request=GetFeature&service=WFS&version=1.1.0&typeName=cbsgebiedsindelingen:cbs_buurt_2019_gegeneraliseerd&outputFormat=application/json&srsName=EPSG:4326&propertyName=geom,statcode" -o E:\\Temp\\buurten.geojson
Je kunt het resultaat ook via deze link downloaden.
Merk op dat de base URL van het service request is overgenomen uit het Nationaal Georegister. Hetzelfde geldt voor de waarde van de query parameter typeName. Het outputbestand is in het GeoJSON formaat. Pas indien nodig het pad van de output directory aan. De geometrie is geconverteerd naar het World Geodetic System 84 (EPSG:4326). Mapbox kan namelijk niet overweg met het het standaard coördinatenstelsel van de service. Dat is het Rijksdriehoekstelsel, ofwel EPSG:28992.
Maak een gratis account Mapbox account aan. Ga naar de Account pagina en kopieer je Mapbox access token naar het klembord.
Ga naar de Tilesets pagina. Klik op New tileset en upload het buurten.geojson
bestand.
Er wordt nu een nieuwe tileset toegevoegd met de buurten. Dit kan wel een aantal minuten duren.
Let op: Mapbox genereert de naam van de tileset automatisch, die van jou heeft een andere naam dan buurten-809yxk.
Vraag detailinformatie op door op de naam van de nieuwe tileset te klikken. In onderstaande schermafdruk zie je een preview van de tileset. Dat is niet altijd zo. Soms krijg je alleen maar een zwart vlak. Desondanks werkt de tileset wel in Power BI.
Noteer het Tileset ID, de Layer Name en de Property Name van het veld met de buurtcodes.
Merk op dat de tileset een zoom extent heeft: De data zijn níet zichtbaar onder zoom level 8 en boven 14.
Ga in de browser naar de pagina van het CBS over Kerncijfers wijken en buurten 2019. Download het XLS bestand. XLS is een verouderd formaat. Bij het laden van de gegevens in Power BI krijg ik een foutmelding.
Open het XLS bestand in Excel. Sla het op als XLSX bestand. Laad het XLSX bestand in Power BI. Selecteer alleen rijen met buurtgegevens. Dat zijn rijen waarvoor geldt: recs = buurt
.
Het doel is om een choropleet te maken met de bevolkinsdichtheid per buurt. Daarvoor gebruiken we de waarde in de kolom bev_dich
. Deze kolom bevat echter een tekst, geen numerieke waarde. Dit komt doordat in het CBS bestand missende waarden gerepresenteerd worden door een punt. Maak een nieuwe kolom bevolkingsdichtheid
aan met een numerieke waarde. Zorg er voor dat velden met missende waarden leeg zijn.
Ga naar het Visualisaties panel. Klik op de optie Een aangepast visueel element importeren. Dat is het pictogram met de drie puntjes. Selecteer Importeren vanuit de marketplace.
Zoek op Mapbox. Klik op de knop Toevoegen van de Mapbox Visual.
De Mapbox Visual is toegevoegd aan het Visualisaties panel.
Als ik nu de Mapbox Visual toevoeg aan mijn rapport, krijg ik een foutmelding:
De workaround is om éérst een andere visual toe te voegen - bijvoorbeeld een tabel - en daarna pas de Mapbox Visual. Vervolgens kun je zonder problemen de eerste visual weer verwijderen. Raar maar waar.
Selecteer de Mapbox Visual in je rapport. Pas eventueel de grootte en positie aan.
Ga naar het tabblad Velden in het Visualisaties panel. Sleep de kolom gwb_code
naar Location en bevolkingsdichtheid
naar Color. De kolommen bevatten respectievelijk de buurtcode en het aantal huishoudens.
Ga naar het tabblad Velden. Vul onder het kopje Viz Settings je Mapbox acces token in.
Zet de Circle optie uit en de Choropleth optie aan.
Selecteer onder het kopje Choropleth voor Data Level 1 de waarde Custom Tileset. Vul voor Vector Tile Url Level 1, Source Layer Name Level 1 en Vector Property Level 1 respectievelijk de volgende waarden in: mapbox://
gevolgd door het Tileset ID, de Layer Name en Property Name die je hebt overgenomen van de website van Mapbox.
De Mapbox Visual toont nu een kaart van Nederland. Op de kaart staan nog geen buurten. Dit komt door het zoomniveau. Zoom verder in en de buurten verschijnen.
Pas de kleuren en de zoomlevels aan.
Verander eventueel de doorzichtheid (opacity) aan.
Pas de titel aan.
Ga naar het tabblad Velden en sleep de kolom bevolkingsdichtheid
naar Tooltips.
Voilà!
Via deze link kun je het resultaat bekijken. Vergeet niet dat je eerst in moet zoomen, voordat je iets te zien krijgt.