Shapefile met warmte- en koudevraag panden voor gehele gemeente

Beste allen,

Ik heb dit forum afgespeurd voor een python-sparql-implementatie van wat we in BAG 1.0 met een api via python deden, maar kom er vooralsnog niet uit.

Om gemeenten te ondersteunen de vraag voor bodemenergie in te schatten van bestaande bouw gebruikten we de gegevens in BAG. We haalden de gegevens binnen gelegen in een x,y bounding box. Deze bounding box komt overeen met de uiterste x,y van een gemeentegrens. Vervolgens zetten we de benodigde gegevens om naar een shapefile. Op deze shapefile voerden we verdere bewerkingen uit om te komen tot de warmte- en koudevraag per wijk in de gemeente.

Dit was onze api-code:

# -*- coding: utf-8 -*-
"""
Created on Wed Apr 14 14:15:30 2021

@author: HvH&MvL
"""
import geopandas as gpd
import pandas as pd
from requests import Request
from owslib.wfs import WebFeatureService
data = [None]*100

#Aanpassen naar gewenste gemeente en pad naar de map waar de shapefile opgeslagen wordt. 
Gemeente = "Helmond"
folder = r"folder"

#%% Ophalen gemeenteafbakening
'''Haalt de gemeentegrenzen als shapefile met polygonen op (gemeentes), en zet deze om naar DataFrame (gemeentedf)
Hier worden vervolgens de uiterste x en y coordinaten uitgehaald als input voor later (bounds) '''
url = "https://geodata.nationaalgeoregister.nl/wijkenbuurten2020/wfs?"
wfsg = WebFeatureService(url)
params = dict(service='WFS',
                  version="1.0.0",
                  request='GetFeature',
                  typeName="wijkenbuurten2020:gemeenten2020", 
                  outputFormat='json',
                  )
gemeentes = Request('GET', url, params=params).prepare().url
gemeentedf = gpd.read_file(gemeentes) 
bounds = gemeentedf.loc[gemeentedf['gemeentenaam'] == Gemeente].geometry.bounds.values.tolist()[0]
# %% Ophalen BAG gegevens binnen vak
'''Haalt de verblijfsobject gegevens uit de WFS van de BAG. '''
b0,b1,b2,b3 =map(str,bounds)
ii = 0
while True: 
    n = ii*1000
    # URL for WFS backend
    url = "https://geodata.nationaalgeoregister.nl/bag/wfs/v1_1?service=WFS&version=2.0.0&request=GetFeature&typename=bag:pand&outputformat=json&bbox="+b0+","+b1+","+b2+","+b3+",&startindex="+str(n)    
    # Initialize
    wfs = WebFeatureService(url=url)
   
    # Specify the parameters for fetching the data
    params = dict(bbox=bounds)
    # Parse the URL with parameters
    q = Request('GET', url, params=params).prepare().url #, params=params
    print(str(n) + " waarden opgehaald..")
    # Read data from URL
    data[ii] = gpd.read_file(q)   
    if len(data[ii]) == 0:
        print("Alles opgehaald.")
        break
    ii +=1

#%% Selectie en opslaan
''' Samenvoegen, de objecten buiten de gemeente verwijderen, en het bestand opslaan als shapefile.'''
BAGCompleet = pd.concat(data)
BAGgemeente = BAGCompleet[BAGCompleet.woonplaats == Gemeente]
BAGgemeente.crs = 'epsg:28992'
BAGgemeente.to_file(folder +"BAG_" + Gemeente + ".shp")

Enige pointers of voorbeelden van hoe dit (of iets soortgelijks) te implementeren met sparql zijn zeer welkom.

Alvast bedankt,

Hans