Dank voor deze scripts ! heel handig.
de franse kaart is de kaart met postroutes uit 1815, het jaar waarin de oranjes de staatsgreep pleegden waarbij Willem van Oranje Koning Willem 1 werd.
Jammer dat het kadaster hier niet de Kraijenhoffkaart gebruikt, uit dezelfde tijd, maar met het eerste driehoekstelsel erop, dat zou uitgroeien tot het huidige RD-stelsel. Inderdaad wordt deze kaart direct na de inrichting van het Koninkrijk in het Nederlands vertaald. Er was ook nog een voorganger, “kaart van Holland als onderdeel van het Fransche Rijk”.
de topkaart met de bruine randjes erin is gescand van een op bruin linnen geplakte topografische kaart. Die kun je handig vouwen op die randjes, zodat de kaart zelf niet beschadigt. Destijds een standaard-uitgave voor mensen in het veld.
Heldere uitleg en werkt fantastisch!
Exact het geen wat ik zocht voor mijn werk en al aan het uitproberen was om via WMS in te laden.
You’ve made my day!
Richard, mooie uitleg!
Ik heb een vraag: is het mogelijk om nadat je alle kaartlagen hebt geladen hier ook ‘automatisch’, als een filmpje, doorheen te gaan? Dus dat je met een klik op een knop de lagen afloopt waarbij je elke laag x seconden laat zien en je de ontwikkeling van de kaarten ziet?
Niet met standaard functionaliteit van QGIS denk ik?
Maar natuurlijk wel met een paar regels python code, die zoiets doet als:
– verberg alle histo lagen
– toon laag 1
– wacht een seconde
– verberg laag en en dan weer naar toon laag x etc etc
Dat zou je evt weer onder een knopje kunnen brengen
Lukt dat?
Richard,
mooi om te horen dat het zou kunnen. Ik ben zelf nog niet thuis in Python-code, dus dit zal betekenen dat ik me daar in moet gaan verdiepen…:). Dank voor je reactie!
Hoi Koen,
ik kom net deze QGIS 2.18 (!) plugin tegen:
Loop Visible Layers
Die doet wat je wilt đ
Misschien even aan de maker vragen of hij nog van plan is om ‘m naar QGIS 3 om te schrijven…
Ik krijg de volgende foutmelding.
hoe kan ik dit verhelpen?
Jeroen
execfile(u’C:/Users/andrea/Desktop/Geen naam-0.py’.encode(‘mbcs’))
Traceback (most recent call last):
File “”, line 1, in
File “C:/Users/andrea/Desktop/Geen naam-0.py”, line 4, in
layer_group.setIsMutuallyExclusive(True)
AttributeError: ‘QgsLayerTreeGroup’ object has no attribute ‘setIsMutuallyExclusive’
Je kunt ook alles in 1 keer binnen halen met onderstaande code.
Alsje de beide jaartallen verandert kun je kiezen welk tijdvak.
# create a layer group
layer_group = QgsProject.instance().layerTreeRoot().insertGroup(0, ‘TopoTijdReis’)
# make the group mutually exlusive (one layer visible at a time)
layer_group.setIsMutuallyExclusive(True)
year = 1819
while year < 2017:
layer = QgsRasterLayer("tileMatrixSet=default028mm&crs=EPSG:28992&layers=Historische_tijdreis_{0}&styles=default&format=image/jpgpng&url=http://tiles.arcgis.com/tiles/nSZVuSZjHpEZZbRo/arcgis/rest/services/Historische_tijdreis_{1}/MapServer/WMTS/".format(year, year), "TopoTijdReis {0}".format(year), "wms")
QgsMapLayerRegistry.instance().addMapLayer(layer, False) # False, meaning not ready to add to legend
layer_group.insertLayer(0, layer)
year = year + 1
next
Hoi Nico, is inderdaad korter. Ik wist alleen niet of alle lagen er waren, vandaar dat ik dat gechecked heb…
Maar, kijkende naar de lijst, missen er toch juist heel veel jaartallen? Dus dan heb je allemaal lege jaar-lagen?
Nee, het is echt een EPSG:28992 schema. De kaarten zijn duidelijk RD, en de coordinaten in de capabilities zijn dat ook.
In die capabilities staat een tileMatrixSet met de naam “default028mm”, maar die geeft dezelfde foutmelding als ik hem in OL gebruik. En zonder een tile matrix definitie werkt het ook niet.
Jammer, want in QGIS werkt het prachtig, en in Leaflet ook: http://compuron.nl/leaflet/ (onderin)
Daar gebruiken ze een speciale definitie voor ArcGIS-layer. Maar als ik iets dergelijks in OL gebruik (ol.source.TileArcGISRest) krijg ik altijd de capabilities voor iedere tile terug, niet een plaatje. Ongeacht wat ik daar aan parameters meegeef. Als je weet waar ik verder moet zoeken houd ik me aanbevolen
Als ik de macro in Qgis 3.12.3 laat lopen, dan krijg ik de foutmelding
“Processing: Traceback (most recent call last): File “C:/OSGEO4~1/apps/qgis/./python/plugins\processing\script\ScriptEditorDialog.py”, line 230, in runAlgorithm exec(self.editor.text(), d) File “”, line 2, in NameError: name ‘QgsProject’ is not defined”
Heb je een tip hoe dit op te lossen is?
Rene: Vreemd ik probeer dat net zelf onder windows, maar t werkt bij mij… De foutmelding lijkt te zeggen dat je niet de default imports hebt… beetje raar.
Je zou er boven kunnen zetten:
from qgis.core import *
maar dat zou er gewoon moeten zijn. Een ander ideetje: heb je wel een project geladen? Zou het kunnen dat QGIS nog niks heeft? Kun je eens een willekeurig nl projectje draaien?
Dag Richard,
Dank voor je snelle reactie.
Ik heb inderdaad gewoon een NL-project geladen en ik sta op een NL-positie in het RD stelsel met als basiskaart de opentopo kaart.
Als ik jouw aanvulling “from qgis.core import *” als eerste regel bij de macro plaats, dan komt hij wel ÊÊn stap verder: de macro maakt nu de groep ‘TopoTijdReis’ in lagen aan.
Direct na het aanmaken van die groep volgt nu deze foutmelding:
Processing: Traceback (most recent call last): File “C:/PROGRA~1/QGIS3~1.12/apps/qgis/./python/plugins\processing\script\ScriptEditorDialog.py”, line 224, in runAlgorithm exec(self.editor.text(), _locals) File “”, line 15, in NameError: name ‘qgis’ is not defined
PS: Ik draai Qgis 3.12.3 met als menu-taal Engels. Maakt dat nog iets uit?
Nee, sorry, zoals gezegd, je zou die modules allemaal al geladen moeten hebben. Misschien moet je eens met een ‘schoon’ QGIS profile beginnen. Kijken of het dan wel werkt.
En anders lijkt er toch iets met het python deel van je installatie te zijn…
Ik zal anders even kijken of ik aan dit artikeltje ook een QGIS-projectje kan hangen waarin gewoon alle lagen al zijn geladen.
vanaf vandaag werkt de verbinding met de server niet meer. heb geprobeerd met https ipv http omdat dit per 1-9-2020 zou gaan veranderen. Maar ook dat lukt niet.
Hebben jullie suggesties?
Sinds gisteren werkt bij mij de TopoTijdReis niet meer in QGis.
Hebben ze de lagen nu achter een login gegooid of beperkt tot ÊÊn domein? Iemand die hierover iets meer weet, of ben ik de enige met dit probleem?
Ondertussen werkt het weer. Als je nog het ‘oude’ script gebruikt hebt dan niet, maar als je dit script opnieuw draait, werkt het als een zonnetje. Het zal inderdaad de overgang naar https zijn geweest zoals @Rombert al zei.
Het is nu 3 september 2020 en ik merk dat de topotijdreis lagen in QGIS niet meer ingeladen worden, is er iets dat ik mis? Het werkte tot 1 september altijd prima.
de layers werken sinds 1-9-2020 niet meer. het geprobeerd met https ipv http. ivm de wijzigingen bij de server. maar ook dat werkt niet. heeft iemand een oplossing?
Sinds 1 september werkt dit niet meer, de lagen worden niet gekoppeld en als ik in een verse QGIS start (3.12 Bucuresti) dan krijg ik ook de foutmelding en crasht QGIS. Enig idee wat ik kan doen?
Per 1 september is de WMTS service alleen nog per httpS te krijgen. Wanneer je dus http in de service url hebt, moet je die service url aanpassen (zie bovenstaande stuk code, die is nu aangepast). Enige tijd hielp dat nog niet omdat de GetCapabilities-response dan toch nog http-url’s bevatte, die dan weer mis gingen.
Nu werkt dus alles weer als het goed is!
Heel veel dank voor al deze moeite die jullie hierin hebben gestoken. Heb altijd heel veel gebruik gemaakt van de topotijdreis functie in QGIS en gebruik het ontzettend veel in mijn werk, maar ook bestaande projecten doen steeds moeilijker bij het laden inderdaad sinds enkele weken. Ik heb het nieuw .qgz project gedownload, alleen geeft deze nog steeds dezelfde foutmeldingen bij het laden als mijn al bestaande projecten. Ik krijg tijdens het laden een pop-up waarop wordt vermeldt ‘foute lagen afhandelen’ waarbij bijna alle lagen aangegeven staan die ik wil laden (behalve die van 1909 en 1920) waardoor hij al de genoemde lagen uiteindelijk niet laadt en zegt dat ze verloren gaan als ik doorga. Heb geen idee waar dit nu precies fout gaat en heb ook geen idee waar ik mogelijk de http zou moeten veranderen in https. Kan iemand een leek als mij nog op gang helpen??
Hoi Udo, ik heb wel de code geupdate, maar nog niet de qgz (de project file). Ik zal dat morgen doen.
Het probleem zat ‘m erin dat esri van http naar httpS url’s ging…
Probeer morgen die qgz nog eens te downloaden
Hi Udo, ik heb een nieuw projectfile neergezet met url’s die direkt naar httpS gaan, maar bij mij deed ook de oude het gewoon. En ook de code werkt bij mij.
Wanneer je http url’s hebt, worden die door de webserver van topotijdreis netjes doorgestuurd naar de juiste httpS url..
Wat betreft de url’s aanpassen in een bestaand project, dat kan eigenlijk niet volgens mij.
Het beste is denk ik dan:
– een tweede QGIS openenen,
– daar de topotijdreis nieuw in laden
– dan de lagen copy/pasten (dat is eigenlijk een hele leuke functie in QGIS đ ) die je nodige hebt maar niet hoeft aan te passen
– dat project opnieuw opslaan
Hoi Barend, inderdaad ik zie het. Ik heb de projectfile en het scriptje even aangepast. Hoewel ik het idee heb dat er niet zozeer data is toegevoegd (althans niet zichtbaar vooral bij de oudere lagen).
Mocht iemand een laag tevoorschijn kunnen toveren met unieke data laat me ajb even weten.
Rond de jaarwisseling wordt er meestal een laag met actueel kaartmateriaal toegevoegd. Zo is afgelopen maand de laag 2020 ontsloten. Begin vorig jaar zijn er trouwens ook historische luchtfoto’s vanaf 2006 toegevoegd.
Hallo, eindelijk deze functie gevonden maar bij mij maakt hij wel de groep aan maar vervolgens zit er geen inhoud in de groep. ik plak de volgende code in de Python Console:
# create a layer group
layer_group = QgsProject.instance().layerTreeRoot().insertGroup(0, ‘TopoTijdReis’)
# make the group mutually exlusive (one layer visible at a time)
layer_group.setIsMutuallyExclusive(True)
# copied from https://tiles.arcgis.com/tiles/nSZVuSZjHpEZZbRo/arcgis/rest/services/
years = [‘1815’, ‘1820’, ‘1821’, ‘1823_1829’, ‘1830_1849’, ‘1850’, ‘1857’, ‘1858’, ‘1861’, ‘1862’, ‘1865’, ‘1866’, ‘1868’, ‘1870’, ‘1871’, ‘1872’, ‘1880’, ‘1883’, ‘1886’, ‘1888’, ‘1889’, ‘1893’, ‘1899’, ‘1900’, ‘1901’, ‘1902’, ‘1904’, ‘1908’, ‘1909’, ‘1910’, ‘1912’, ‘1915’, ‘1918’, ‘1919’, ‘1920’, ‘1922’, ‘1925’, ‘1929’, ‘1931’, ‘1935’, ‘1937’, ‘1940’, ‘1942’, ‘1943’, ‘1947’, ‘1948’, ‘1949’, ‘1950’, ‘1951’, ‘1952’, ‘1953’, ‘1955’, ‘1962’, ‘1963’, ‘1965’, ‘1970’, ‘1971’, ‘1973’, ‘1975’, ‘1976’, ‘1978’, ‘1980’, ‘1984’, ‘1988’, ‘1990’, ‘1994’, ‘1995’, ‘1996’, ‘1997’, ‘1999’, ‘2000’, ‘2001’, ‘2002’, ‘2003’, ‘2004’, ‘2005’, ‘2006’, ‘2007’, ‘2008’, ‘2009’, ‘2010’, ‘2011’, ‘2012’, ‘2013’, ‘2014’, ‘2015’,
‘2016’, ‘2017’, ‘2018’, ‘2019’]
# for every year, create a layer
for year in years:
layer = QgsRasterLayer(“tileMatrixSet=default028mm&crs=EPSG:28992&layers=Historische_tijdreis_{0}&styles=default&format=image/jpgpng&url=https://tiles.arcgis.com/tiles/nSZVuSZjHpEZZbRo/arcgis/rest/services/Historische_tijdreis_{1}/MapServer/WMTS/”.format(year, year), “TopoTijdReis {0}”.format(year), “wms”)
# add it to the layer registry, without showing it yet
# False, meaning not ready to add to legend
if hasattr(qgis.core, ‘QgsMapLayerRegistry’):
# QGIS 2.x
QgsMapLayerRegistry.instance().addMapLayer(layer, False)
else:
# QGIS 3.x
QgsProject.instance().addMapLayer(layer, False)
# add it on top of the group
layer_group.insertLayer(0, layer)
Als ik hem heb geplakt verschijnt automatisch de groep maar dus zonder inhoud.
Wat doe ik fout?
Dank voor deze scripts ! heel handig.
de franse kaart is de kaart met postroutes uit 1815, het jaar waarin de oranjes de staatsgreep pleegden waarbij Willem van Oranje Koning Willem 1 werd.
Jammer dat het kadaster hier niet de Kraijenhoffkaart gebruikt, uit dezelfde tijd, maar met het eerste driehoekstelsel erop, dat zou uitgroeien tot het huidige RD-stelsel. Inderdaad wordt deze kaart direct na de inrichting van het Koninkrijk in het Nederlands vertaald. Er was ook nog een voorganger, “kaart van Holland als onderdeel van het Fransche Rijk”.
de topkaart met de bruine randjes erin is gescand van een op bruin linnen geplakte topografische kaart. Die kun je handig vouwen op die randjes, zodat de kaart zelf niet beschadigt. Destijds een standaard-uitgave voor mensen in het veld.
Heldere uitleg, dankjewel!
Hartelijk dank, Richard!
Het opladen is goed verlopen en de kaarten zien er goed uit. Een mooi stukje historische kartografie binnen handbereik.
Heldere uitleg en werkt fantastisch!
Exact het geen wat ik zocht voor mijn werk en al aan het uitproberen was om via WMS in te laden.
You’ve made my day!
Bedankt hiervoor.
Ik vond het al jammer dat het tot de website beperkt bleef.
Gelukkig had ik het mis. đ
Richard, mooie uitleg!
Ik heb een vraag: is het mogelijk om nadat je alle kaartlagen hebt geladen hier ook ‘automatisch’, als een filmpje, doorheen te gaan? Dus dat je met een klik op een knop de lagen afloopt waarbij je elke laag x seconden laat zien en je de ontwikkeling van de kaarten ziet?
Niet met standaard functionaliteit van QGIS denk ik?
Maar natuurlijk wel met een paar regels python code, die zoiets doet als:
– verberg alle histo lagen
– toon laag 1
– wacht een seconde
– verberg laag en en dan weer naar toon laag x etc etc
Dat zou je evt weer onder een knopje kunnen brengen
Lukt dat?
Richard,
mooi om te horen dat het zou kunnen. Ik ben zelf nog niet thuis in Python-code, dus dit zal betekenen dat ik me daar in moet gaan verdiepen…:). Dank voor je reactie!
Hoi Koen,
ik kom net deze QGIS 2.18 (!) plugin tegen:
Loop Visible Layers
Die doet wat je wilt đ
Misschien even aan de maker vragen of hij nog van plan is om ‘m naar QGIS 3 om te schrijven…
Ik krijg de volgende foutmelding.
hoe kan ik dit verhelpen?
Jeroen
execfile(u’C:/Users/andrea/Desktop/Geen naam-0.py’.encode(‘mbcs’))
Traceback (most recent call last):
File “”, line 1, in
File “C:/Users/andrea/Desktop/Geen naam-0.py”, line 4, in
layer_group.setIsMutuallyExclusive(True)
AttributeError: ‘QgsLayerTreeGroup’ object has no attribute ‘setIsMutuallyExclusive’
Ik heb precies hetzelfde! Is hier al een oplossing voor?
Vreemd want die methode is er al sinds 2.4..
Ik kan dit hier in zowel 2.14 als 2.18 draaien.
Gebruiken jullie hier wel IN QGIS de PythonConsole voor?
Hartelijk dank voor deze uitleg, het werkt heel mooi.
Nog een vraagje:
Zijn er voor Duitsland ook soortgelijke service beschikbaar?
Je kunt ook alles in 1 keer binnen halen met onderstaande code.
Alsje de beide jaartallen verandert kun je kiezen welk tijdvak.
# create a layer group
layer_group = QgsProject.instance().layerTreeRoot().insertGroup(0, ‘TopoTijdReis’)
# make the group mutually exlusive (one layer visible at a time)
layer_group.setIsMutuallyExclusive(True)
year = 1819
while year < 2017:
layer = QgsRasterLayer("tileMatrixSet=default028mm&crs=EPSG:28992&layers=Historische_tijdreis_{0}&styles=default&format=image/jpgpng&url=http://tiles.arcgis.com/tiles/nSZVuSZjHpEZZbRo/arcgis/rest/services/Historische_tijdreis_{1}/MapServer/WMTS/".format(year, year), "TopoTijdReis {0}".format(year), "wms")
QgsMapLayerRegistry.instance().addMapLayer(layer, False) # False, meaning not ready to add to legend
layer_group.insertLayer(0, layer)
year = year + 1
next
Hoi Nico, is inderdaad korter. Ik wist alleen niet of alle lagen er waren, vandaar dat ik dat gechecked heb…
Maar, kijkende naar de lijst, missen er toch juist heel veel jaartallen? Dus dan heb je allemaal lege jaar-lagen?
Te gek, geweldig! Veel dank!
Dank voor de uitleg!
Bij mij geeft de WMTS server: forbidden aan. Terwijl het eerder wel werkte. Doet de WMTS het bij jou nog wel?
Hallo Richard, bedankt voor het bruikbare verhaal. Het werkte meteen onder QGIS, maar ik krijg het onder OpenLayers niet aan de praat. Het zit hem in de afwijkende resoluties. PDOK-WMTS-kaarten definieer ik als volgt:
var projectionExtent = [-285401.92, 22598.08, 595401.9199999999, 903401.9199999999];
var resolutions = [3440.640, 1720.320, 860.160, 430.080, 215.040, 107.520, 53.760, 26.880, 13.440, 6.720, 3.360, 1.680, 0.840, 0.420, 0.210,0.105];
var matrixIds = new Array(15);
for (var z = 0; z < 15; ++z) {
matrixIds[z] = 'EPSG:28992:' + z;
}
kadaster = new ol.layer.Tile({ // {{{2
visible:false,
source:new ol.source.WMTS({
attributions: 'Kaartgegevens: © Kadaster‘,
url: ‘https://geodata.nationaalgeoregister.nl/tiles/service/wmts?’,
layer: “kadastralekaartv3”,
matrixSet: ‘EPSG:28992’,
format: ‘image/png’,
projection: projection,
tileGrid: new ol.tilegrid.WMTS({
origin: ol.extent.getTopLeft(projectionExtent),
resolutions: resolutions,
matrixIds: matrixIds
}),
style: ‘default’,
wrapX: false
})
})
Als ik dit voor Topotijdreis doe, worden de tiles correct opgevraagd, maar geven allemaal de foutmelding “incorrect Tile Matrix Set defined”
Enig idee hoe ik dit kan aanpassen?
Hi Jan,
PDOK heeft alleen een nederlands ‘Tile schema’, als ik in de capabilities kijk van deze esri service:
http://tiles.arcgis.com/tiles/nSZVuSZjHpEZZbRo/arcgis/rest/services/Historische_tijdreis_1950/MapServer/WMTS/1.0.0/WMTSCapabilities.xml
Dan lijkt het me een epsg:3857/GoogleMercator service. Misschien kun je op basis daarvan de javascript code maken?
Groet,
Richard
Nee, het is echt een EPSG:28992 schema. De kaarten zijn duidelijk RD, en de coordinaten in de capabilities zijn dat ook.
In die capabilities staat een tileMatrixSet met de naam “default028mm”, maar die geeft dezelfde foutmelding als ik hem in OL gebruik. En zonder een tile matrix definitie werkt het ook niet.
Jammer, want in QGIS werkt het prachtig, en in Leaflet ook:
http://compuron.nl/leaflet/ (onderin)
Daar gebruiken ze een speciale definitie voor ArcGIS-layer. Maar als ik iets dergelijks in OL gebruik (ol.source.TileArcGISRest) krijg ik altijd de capabilities voor iedere tile terug, niet een plaatje. Ongeacht wat ik daar aan parameters meegeef. Als je weet waar ik verder moet zoeken houd ik me aanbevolen
Zie hier de oplossing: een OpenLayers pagina met zowel TopoTijdReis als PDOK WMTS layers:
https://jsfiddle.net/j_l_h_hartmann/dmoaxbq8/
Wat fijn dat deze code gewoon zo in Qgis te laden is!
Bedankt!
Als ik de macro in Qgis 3.12.3 laat lopen, dan krijg ik de foutmelding
“Processing: Traceback (most recent call last): File “C:/OSGEO4~1/apps/qgis/./python/plugins\processing\script\ScriptEditorDialog.py”, line 230, in runAlgorithm exec(self.editor.text(), d) File “”, line 2, in NameError: name ‘QgsProject’ is not defined”
Heb je een tip hoe dit op te lossen is?
Rene: Vreemd ik probeer dat net zelf onder windows, maar t werkt bij mij… De foutmelding lijkt te zeggen dat je niet de default imports hebt… beetje raar.
Je zou er boven kunnen zetten:
from qgis.core import *
maar dat zou er gewoon moeten zijn. Een ander ideetje: heb je wel een project geladen? Zou het kunnen dat QGIS nog niks heeft? Kun je eens een willekeurig nl projectje draaien?
Dag Richard,
Dank voor je snelle reactie.
Ik heb inderdaad gewoon een NL-project geladen en ik sta op een NL-positie in het RD stelsel met als basiskaart de opentopo kaart.
Als ik jouw aanvulling “from qgis.core import *” als eerste regel bij de macro plaats, dan komt hij wel ÊÊn stap verder: de macro maakt nu de groep ‘TopoTijdReis’ in lagen aan.
Direct na het aanmaken van die groep volgt nu deze foutmelding:
Processing: Traceback (most recent call last): File “C:/PROGRA~1/QGIS3~1.12/apps/qgis/./python/plugins\processing\script\ScriptEditorDialog.py”, line 224, in runAlgorithm exec(self.editor.text(), _locals) File “”, line 15, in NameError: name ‘qgis’ is not defined
PS: Ik draai Qgis 3.12.3 met als menu-taal Engels. Maakt dat nog iets uit?
Nee, sorry, zoals gezegd, je zou die modules allemaal al geladen moeten hebben. Misschien moet je eens met een ‘schoon’ QGIS profile beginnen. Kijken of het dan wel werkt.
En anders lijkt er toch iets met het python deel van je installatie te zijn…
Ik zal anders even kijken of ik aan dit artikeltje ook een QGIS-projectje kan hangen waarin gewoon alle lagen al zijn geladen.
Heel erg bedankt! De Python code werkt als een zonnetje en scheelt voor mij heel erg veel opzoekwerk.
vanaf vandaag werkt de verbinding met de server niet meer. heb geprobeerd met https ipv http omdat dit per 1-9-2020 zou gaan veranderen. Maar ook dat lukt niet.
Hebben jullie suggesties?
Ligt het aan mij, of is deze service niet meer beschikbaar? Sinds deze week krijg ik het niet meer in QGIS geladen.
Ik maak al een tijdje gebruik van deze functie, maar sinds 1 september 2020 worden de kaarten niet meer geladen
Sinds gisteren werkt bij mij de TopoTijdReis niet meer in QGis.
Hebben ze de lagen nu achter een login gegooid of beperkt tot ÊÊn domein? Iemand die hierover iets meer weet, of ben ik de enige met dit probleem?
Ondertussen werkt het weer. Als je nog het ‘oude’ script gebruikt hebt dan niet, maar als je dit script opnieuw draait, werkt het als een zonnetje. Het zal inderdaad de overgang naar https zijn geweest zoals @Rombert al zei.
Ik heb het script gedraaid, maar ik krijg allerlei syntax errors, en het werkt niet.
Kan iemand helpen?
# create a layer group
layer_group = QgsProject.instance().layerTreeRoot().insertGroup(0, ‘TopoTijdReis’)
Traceback (most recent call last):
File “C:\OSGEO4~1\apps\Python37\lib\code.py”, line 63, in runsource
code = self.compile(source, filename, symbol)
File “C:\OSGEO4~1\apps\Python37\lib\codeop.py”, line 168, in __call__
return _maybe_compile(self.compiler, source, filename, symbol)
File “C:\OSGEO4~1\apps\Python37\lib\codeop.py”, line 99, in _maybe_compile
raise err1
File “C:\OSGEO4~1\apps\Python37\lib\codeop.py”, line 87, in _maybe_compile
code1 = compiler(source + “\n”, filename, symbol)
File “C:\OSGEO4~1\apps\Python37\lib\codeop.py”, line 133, in __call__
codeob = compile(source, filename, symbol, self.flags, 1)
File “”, line 14
layer_group = QgsProject.instance().layerTreeRoot().insertGroup(0, ‘TopoTijdReis’)
^
SyntaxError: invalid syntax
# make the group mutually exlusive (one layer visible at a time)
layer_group.setIsMutuallyExclusive(True)
Traceback (most recent call last):
File “C:\OSGEO4~1\apps\Python37\lib\code.py”, line 90, in runcode
exec(code, self.locals)
File “”, line 1, in
RuntimeError: wrapped C/C++ object of type QgsLayerTreeGroup has been deleted
# copied from https://tiles.arcgis.com/tiles/nSZVuSZjHpEZZbRo/arcgis/rest/services/
years = [‘1815’, ‘1820’, ‘1821’, ‘1823_1829’, ‘1830_1849’, ‘1850’, ‘1857’, ‘1858’, ‘1861’, ‘1862’, ‘1865’, ‘1866’, ‘1868’, ‘1870’, ‘1871’, ‘1872’, ‘1880’, ‘1883’, ‘1886’, ‘1888’, ‘1889’, ‘1893’, ‘1899’, ‘1900’, ‘1901’, ‘1902’, ‘1904’, ‘1908’, ‘1909’, ‘1910’, ‘1912’, ‘1915’, ‘1918’, ‘1919’, ‘1920’, ‘1922’, ‘1925’, ‘1929’, ‘1931’, ‘1935’, ‘1937’, ‘1940’, ‘1942’, ‘1943’, ‘1947’, ‘1948’, ‘1949’, ‘1950’, ‘1951’, ‘1952’, ‘1953’, ‘1955’, ‘1962’, ‘1963’, ‘1965’, ‘1970’, ‘1971’, ‘1973’, ‘1975’, ‘1976’, ‘1978’, ‘1980’, ‘1984’, ‘1988’, ‘1990’, ‘1994’, ‘1995’, ‘1996’, ‘1997’, ‘1999’, ‘2006’, ‘2010’, ‘2011’, ‘2014’, ‘2015’]
# for every year, create a layer
for year in years:
layer = QgsRasterLayer(“tileMatrixSet=default028mm&crs=EPSG:28992&layers=Historische_tijdreis_{0}&styles=default&format=image/jpgpng&url=https://tiles.arcgis.com/tiles/nSZVuSZjHpEZZbRo/arcgis/rest/services/Historische_tijdreis_{1}/MapServer/WMTS/”.format(year, year), “TopoTijdReis {0}”.format(year), “wms”)
# add it to the layer registry, without showing it yet
# False, meaning not ready to add to legend
if hasattr(qgis.core, ‘QgsMapLayerRegistry’):
# QGIS 2.x
QgsMapLayerRegistry.instance().addMapLayer(layer, False)
else:
# QGIS 3.x
QgsProject.instance().addMapLayer(layer, False)
# add it on top of the group
layer_group.insertLayer(0, layer)
Het is nu 3 september 2020 en ik merk dat de topotijdreis lagen in QGIS niet meer ingeladen worden, is er iets dat ik mis? Het werkte tot 1 september altijd prima.
de layers werken sinds 1-9-2020 niet meer. het geprobeerd met https ipv http. ivm de wijzigingen bij de server. maar ook dat werkt niet. heeft iemand een oplossing?
Sinds 1 september werkt dit niet meer, de lagen worden niet gekoppeld en als ik in een verse QGIS start (3.12 Bucuresti) dan krijg ik ook de foutmelding en crasht QGIS. Enig idee wat ik kan doen?
Per 1 september is de WMTS service alleen nog per httpS te krijgen. Wanneer je dus http in de service url hebt, moet je die service url aanpassen (zie bovenstaande stuk code, die is nu aangepast). Enige tijd hielp dat nog niet omdat de GetCapabilities-response dan toch nog http-url’s bevatte, die dan weer mis gingen.
Nu werkt dus alles weer als het goed is!
Let op: http werkt niet meer, maar als je http verandert in https werkt het weer.
Sinds enkele dagen laden de TopoTijdReis lagen niet meer in QGIS, maar door http in https te veranderen doet het script het weer
En hoe doe je dit precies? Ik zie nergens in Qgis opties waar je de bron kunt wijzigen.
Heel veel dank voor al deze moeite die jullie hierin hebben gestoken. Heb altijd heel veel gebruik gemaakt van de topotijdreis functie in QGIS en gebruik het ontzettend veel in mijn werk, maar ook bestaande projecten doen steeds moeilijker bij het laden inderdaad sinds enkele weken. Ik heb het nieuw .qgz project gedownload, alleen geeft deze nog steeds dezelfde foutmeldingen bij het laden als mijn al bestaande projecten. Ik krijg tijdens het laden een pop-up waarop wordt vermeldt ‘foute lagen afhandelen’ waarbij bijna alle lagen aangegeven staan die ik wil laden (behalve die van 1909 en 1920) waardoor hij al de genoemde lagen uiteindelijk niet laadt en zegt dat ze verloren gaan als ik doorga. Heb geen idee waar dit nu precies fout gaat en heb ook geen idee waar ik mogelijk de http zou moeten veranderen in https. Kan iemand een leek als mij nog op gang helpen??
Hoi Udo, ik heb wel de code geupdate, maar nog niet de qgz (de project file). Ik zal dat morgen doen.
Het probleem zat ‘m erin dat esri van http naar httpS url’s ging…
Probeer morgen die qgz nog eens te downloaden
Hi Udo, ik heb een nieuw projectfile neergezet met url’s die direkt naar httpS gaan, maar bij mij deed ook de oude het gewoon. En ook de code werkt bij mij.
Wanneer je http url’s hebt, worden die door de webserver van topotijdreis netjes doorgestuurd naar de juiste httpS url..
Wat betreft de url’s aanpassen in een bestaand project, dat kan eigenlijk niet volgens mij.
Het beste is denk ik dan:
– een tweede QGIS openenen,
– daar de topotijdreis nieuw in laden
– dan de lagen copy/pasten (dat is eigenlijk een hele leuke functie in QGIS đ ) die je nodige hebt maar niet hoeft aan te passen
– dat project opnieuw opslaan
Succes
Bedankt voor dit super handige draadje. Let op dat er ondertussen al weer nieuwere kaarten beschikbaar zijn, dus van na 2015
Hoi Barend, inderdaad ik zie het. Ik heb de projectfile en het scriptje even aangepast. Hoewel ik het idee heb dat er niet zozeer data is toegevoegd (althans niet zichtbaar vooral bij de oudere lagen).
Mocht iemand een laag tevoorschijn kunnen toveren met unieke data laat me ajb even weten.
Rond de jaarwisseling wordt er meestal een laag met actueel kaartmateriaal toegevoegd. Zo is afgelopen maand de laag 2020 ontsloten. Begin vorig jaar zijn er trouwens ook historische luchtfoto’s vanaf 2006 toegevoegd.
Is dit ook mogelijk voor de luchtfoto’s vanaf 2006?
Bedankt
URL voor luchtfoto’s: https://tiles.arcgis.com/tiles/nSZVuSZjHpEZZbRo/arcgis/rest/services/Luchtfoto_2006/MapServer/WMTS
2006 t/m 2019
Hoe krijg je dat gevonden?
Is de WMTS ook beschikbaar in een mercator projectie (WGS84?)
Zo ja, hoe doe ik dat in QGis?
@Lennart nee volgens mij stellen ze ‘m alleen in 28992 beschikbaar:
https://tiles.arcgis.com/tiles/nSZVuSZjHpEZZbRo/arcgis/rest/services/
Je kunt ‘m natuurlijk wel laden in een WGS84/Latlon/EPSG:4326 project, dan zal QGIS de tiles echter wat ‘vervormen’…
Hallo, eindelijk deze functie gevonden maar bij mij maakt hij wel de groep aan maar vervolgens zit er geen inhoud in de groep. ik plak de volgende code in de Python Console:
# create a layer group
layer_group = QgsProject.instance().layerTreeRoot().insertGroup(0, ‘TopoTijdReis’)
# make the group mutually exlusive (one layer visible at a time)
layer_group.setIsMutuallyExclusive(True)
# copied from https://tiles.arcgis.com/tiles/nSZVuSZjHpEZZbRo/arcgis/rest/services/
years = [‘1815’, ‘1820’, ‘1821’, ‘1823_1829’, ‘1830_1849’, ‘1850’, ‘1857’, ‘1858’, ‘1861’, ‘1862’, ‘1865’, ‘1866’, ‘1868’, ‘1870’, ‘1871’, ‘1872’, ‘1880’, ‘1883’, ‘1886’, ‘1888’, ‘1889’, ‘1893’, ‘1899’, ‘1900’, ‘1901’, ‘1902’, ‘1904’, ‘1908’, ‘1909’, ‘1910’, ‘1912’, ‘1915’, ‘1918’, ‘1919’, ‘1920’, ‘1922’, ‘1925’, ‘1929’, ‘1931’, ‘1935’, ‘1937’, ‘1940’, ‘1942’, ‘1943’, ‘1947’, ‘1948’, ‘1949’, ‘1950’, ‘1951’, ‘1952’, ‘1953’, ‘1955’, ‘1962’, ‘1963’, ‘1965’, ‘1970’, ‘1971’, ‘1973’, ‘1975’, ‘1976’, ‘1978’, ‘1980’, ‘1984’, ‘1988’, ‘1990’, ‘1994’, ‘1995’, ‘1996’, ‘1997’, ‘1999’, ‘2000’, ‘2001’, ‘2002’, ‘2003’, ‘2004’, ‘2005’, ‘2006’, ‘2007’, ‘2008’, ‘2009’, ‘2010’, ‘2011’, ‘2012’, ‘2013’, ‘2014’, ‘2015’,
‘2016’, ‘2017’, ‘2018’, ‘2019’]
# for every year, create a layer
for year in years:
layer = QgsRasterLayer(“tileMatrixSet=default028mm&crs=EPSG:28992&layers=Historische_tijdreis_{0}&styles=default&format=image/jpgpng&url=https://tiles.arcgis.com/tiles/nSZVuSZjHpEZZbRo/arcgis/rest/services/Historische_tijdreis_{1}/MapServer/WMTS/”.format(year, year), “TopoTijdReis {0}”.format(year), “wms”)
# add it to the layer registry, without showing it yet
# False, meaning not ready to add to legend
if hasattr(qgis.core, ‘QgsMapLayerRegistry’):
# QGIS 2.x
QgsMapLayerRegistry.instance().addMapLayer(layer, False)
else:
# QGIS 3.x
QgsProject.instance().addMapLayer(layer, False)
# add it on top of the group
layer_group.insertLayer(0, layer)
Als ik hem heb geplakt verschijnt automatisch de groep maar dus zonder inhoud.
Wat doe ik fout?
Gr Michiel