Volgens mij wil @MennodR juist rasters downloaden met van tevoren gedefinieerde afmetingen, om deze te combineren in raster bestanden die groter zijn dan 4000x4000 pixels. Maar corrigeer me als ik het bij het verkeerde eind heb. In dat geval is een WCS laag juist niet handig, en zal je de rasters eerst moeten downloaden, en dat de gedownloade bestanden als raster laag aan je project toevoegen. Je kan namelijk niet direct een WCS raster URL als rasterlaag-bron gebruiken.
Ik heb hier de de code van de pdokserviceplugin gebruikt. Het voordeel daarvan is dat de requests door de netwerk stack van QGIS gaan, wat handig is als je bijv. een proxy hebt ingesteld in QGIS. Ook kan je de requests inspecteren in de QGIS Network Logger plugin, wat erg handig is voor debugging:
from qgis.core import QgsBlockingNetworkRequest
from qgis.PyQt.QtNetwork import QNetworkRequest
from qgis.PyQt.QtCore import QUrl
from tempfile import NamedTemporaryFile
"""
Download file to tempfile with extension. Based on https://github.com/rduivenvoorde/pdokservicesplugin/blob/master/pdokservicesplugin/lib/http_client.py
"""
def dowload_file(url, extension):
qgs_request = QgsBlockingNetworkRequest()
request = QNetworkRequest(QUrl(url))
_ = qgs_request.get(request, True) # TODO: implement error handling
reply = qgs_request.reply()
_ = reply.error() # TODO: implement error handling
f = NamedTemporaryFile(suffix=extension, delete=False) # https://docs.python.org/3/library/tempfile.html#tempfile.NamedTemporaryFile -> Whether the name can be used to open the file a second time, while the named temporary file is still open, varies across platforms (it can be so used on Unix; it cannot on Windows) [kan voor problemen zorgen, niet getest op windows]
f.write(reply.content())
return f.name
url = "https://service.pdok.nl/rws/ahn3/wcs/v1_0?service=wcs&VERSION=1.0.0&REQUEST=GetCoverage&FORMAT=GEOTIFF_FLOAT32&COVERAGE=ahn3_05m_dtm&crs=EPSG:28992&response_crs=EPSG:28992&BBOX=88013.7238158045802265,441478.6266455391887575,90700.2187192221754231,442123.9031226849183440&WIDTH=2685&HEIGHT=644"
f_name = dowload_file(url, ".tif")
iface.addRasterLayer(f_name, "ahn3")