@ccg er spelen hier twee problemen door elkaar:
Eerste probleem, de aanroep van wmts.gettile
is niet correct, als je in de OWSLib broncode kijkt zie je dat functie de volgende parameters verwacht:
-
tilematrixset
, optioneel want defaults naar eerste tilematrixset in de capabilities, maar gezien dat je moet weten welke tilematrixset je hebt om de juiste waardes voor tilematrix
, row
en column
te kiezen kan je hier beter expliciet zijn
tilematrix
row
column
De functie gebruikt dus geen bbox
parameter.
De BGT WMTS beschikt alleen over tegels in de EPSG:28992
tilematrixset. Dus om de tegel tilematrix=0&row=0&column=0
op te halen voor de BGT zou je de volgende code moeten uitvoeren:
from owslib.wmts import WebMapTileService
wmts = WebMapTileService(
"https://service.pdok.nl/lv/bgt/wmts/v1_0?request=GetCapabilities&service=WMTS" # brta: "https://service.pdok.nl/brt/achtergrondkaart/wmts/v2_0?SERVICE=WMTS&REQUEST=GETCAPABILITIES"
)
list(wmts.contents)
tile = wmts.gettile(
layer="standaardvisualisatie", # brta: "grijs"
tilematrixset="EPSG:28992",
tilematrix=0,
row=0,
column=0,
format="png",
)
out = open("test_wmts.png", "wb")
bytes_written = out.write(tile.read())
out.close()
Dit resulteert echter in een leeg plaatje (tweede probleem), omdat de BGT WMTS alleen beschikbaar is op diepere zoomniveaus (vanaf zoomlevel (tilematrix
) 12. Voor de BRT Achtergrondkaart werkt bovenstaande code wel (zie de uitgecommentarieerde waardes):
De volgende zxy waardes resulteren wel in kaartbeeld bij de BGT:
tilematrix=12,
row=2133,
column=2210,
Voor zoomniveau 0 geldt dat dus niet, maar dat resulteert dus niet in kaartbeeld bij de BGT WMTS.
Overigens communiceren we nu nog geen schaalgrenzen in onze WMTS capabilities (dit kan met TileMatrixSetLimits
). Dit is wel iets wat we van plan zijn om te gaan implementeren. Daarmee zou je dan automatisch kunnen afleiden op welke zoomniveau’s (tilematrices
) tegels beschikbaar zijn.
Kan helaas geen schatting geven van wanneer dit opgepakt gaat worden.