Dalla versione 2.18 di QGIS è possibile utilizzare i Tile XYZ per inserire, nei nostri progetti, le mappe di sfondo come Google Satellite, Bing, OSM e tante altre (occhio alle licenze). Per le versioni 2.x di QGIS esistono due plugin che permettono di inserire mappe di sfondo, la più famosa è Open Layer Plugin che però ha dei problemi relativi alla stampa e Quick Map Services Plugin (QMS) quello attualmente più usato; in QGIS 3.0 il plugin QMS non è stato ancora sviluppato (porting), attulmente c’è una campagna per la raccolta fondi, ma nel frattempo come utilizzare le mappe di sfondo in QGIS 3.0?
Ecco uno script che risolve egregiamente il problema, script realizzato da: Klas Karlsson
come fare:
copiare lo script seguente (dopo aver cliccato su view raw, in basso a destra nel riquadro):
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
""" | |
This script should be run from the Python consol inside QGIS. | |
It adds online sources to the QGIS Browser. | |
Each source should contain a list with the folowing items (string type): | |
[sourcetype, title, authconfig, password, referer, url, username, zmax, zmin] | |
You can add or remove sources from the sources section of the code. | |
Script by Klas Karlsson | |
Sources from https://qms.nextgis.com/ | |
Some services require you to supply your own API key for the services to work. | |
Licence GPL-3 | |
Regarding the terms of use for these background maps YOU will need to verify that you | |
follow the individual EULA that comes with the different services, | |
Most likely they will restrict how you can use the data. | |
Example: | |
For Esri basemaps you will need a valid ArcGIS online subscription to use the maps. | |
""" | |
# Sources | |
sources = [] | |
sources.append(["connections-xyz","Google Maps","","","","https://mt1.google.com/vt/lyrs=m&x=%7Bx%7D&y=%7By%7D&z=%7Bz%7D","","19","0"]) | |
sources.append(["connections-xyz","Google Satellite", "", "", "", "https://mt1.google.com/vt/lyrs=s&x=%7Bx%7D&y=%7By%7D&z=%7Bz%7D", "", "19", "0"]) | |
sources.append(["connections-xyz","Google Terrain", "", "", "", "https://mt1.google.com/vt/lyrs=t&x=%7Bx%7D&y=%7By%7D&z=%7Bz%7D", "", "19", "0"]) | |
sources.append(["connections-xyz","Google Terrain Hybrid", "", "", "", "https://mt1.google.com/vt/lyrs=p&x=%7Bx%7D&y=%7By%7D&z=%7Bz%7D", "", "19", "0"]) | |
sources.append(["connections-xyz","Google Satellite Hybrid", "", "", "", "https://mt1.google.com/vt/lyrs=y&x=%7Bx%7D&y=%7By%7D&z=%7Bz%7D", "", "19", "0"]) | |
sources.append(["connections-xyz","Stamen Terrain", "", "", "Map tiles by Stamen Design, under CC BY 3.0. Data by OpenStreetMap, under ODbL", "http://tile.stamen.com/terrain/%7Bz%7D/%7Bx%7D/%7By%7D.png", "", "20", "0"]) | |
sources.append(["connections-xyz","Stamen Toner", "", "", "Map tiles by Stamen Design, under CC BY 3.0. Data by OpenStreetMap, under ODbL", "http://tile.stamen.com/toner/%7Bz%7D/%7Bx%7D/%7By%7D.png", "", "20", "0"]) | |
sources.append(["connections-xyz","Stamen Toner Light", "", "", "Map tiles by Stamen Design, under CC BY 3.0. Data by OpenStreetMap, under ODbL", "http://tile.stamen.com/toner-lite/%7Bz%7D/%7Bx%7D/%7By%7D.png", "", "20", "0"]) | |
sources.append(["connections-xyz","Stamen Watercolor", "", "", "Map tiles by Stamen Design, under CC BY 3.0. Data by OpenStreetMap, under ODbL", "http://tile.stamen.com/watercolor/%7Bz%7D/%7Bx%7D/%7By%7D.jpg", "", "18", "0"]) | |
sources.append(["connections-xyz","Wikimedia Map", "", "", "OpenStreetMap contributors, under ODbL", "https://maps.wikimedia.org/osm-intl/%7Bz%7D/%7Bx%7D/%7By%7D.png", "", "20", "1"]) | |
sources.append(["connections-xyz","Wikimedia Hike Bike Map", "", "", "OpenStreetMap contributors, under ODbL", "http://tiles.wmflabs.org/hikebike/%7Bz%7D/%7Bx%7D/%7By%7D.png", "", "17", "1"]) | |
sources.append(["connections-xyz","Esri Boundaries Places", "", "", "Requires ArcGIS Onlinesubscription", "https://server.arcgisonline.com/ArcGIS/rest/services/Reference/World_Boundaries_and_Places/MapServer/tile/%7Bz%7D/%7By%7D/%7Bx%7D", "", "20", "0"]) | |
sources.append(["connections-xyz","Esri Gray (dark)", "", "", "Requires ArcGIS Onlinesubscription", "http://services.arcgisonline.com/ArcGIS/rest/services/Canvas/World_Dark_Gray_Base/MapServer/tile/%7Bz%7D/%7By%7D/%7Bx%7D", "", "16", "0"]) | |
sources.append(["connections-xyz","Esri Gray (light)", "", "", "Requires ArcGIS Onlinesubscription", "http://services.arcgisonline.com/ArcGIS/rest/services/Canvas/World_Light_Gray_Base/MapServer/tile/%7Bz%7D/%7By%7D/%7Bx%7D", "", "16", "0"]) | |
sources.append(["connections-xyz","Esri National Geographic", "", "", "Requires ArcGIS Onlinesubscription", "http://services.arcgisonline.com/ArcGIS/rest/services/NatGeo_World_Map/MapServer/tile/%7Bz%7D/%7By%7D/%7Bx%7D", "", "12", "0"]) | |
sources.append(["connections-xyz","Esri Ocean", "", "", "Requires ArcGIS Onlinesubscription", "https://services.arcgisonline.com/ArcGIS/rest/services/Ocean/World_Ocean_Base/MapServer/tile/%7Bz%7D/%7By%7D/%7Bx%7D", "", "10", "0"]) | |
sources.append(["connections-xyz","Esri Satellite", "", "", "Requires ArcGIS Onlinesubscription", "https://server.arcgisonline.com/ArcGIS/rest/services/World_Imagery/MapServer/tile/%7Bz%7D/%7By%7D/%7Bx%7D", "", "17", "0"]) | |
sources.append(["connections-xyz","Esri Standard", "", "", "Requires ArcGIS Onlinesubscription", "https://server.arcgisonline.com/ArcGIS/rest/services/World_Street_Map/MapServer/tile/%7Bz%7D/%7By%7D/%7Bx%7D", "", "17", "0"]) | |
sources.append(["connections-xyz","Esri Terrain", "", "", "Requires ArcGIS Onlinesubscription", "https://server.arcgisonline.com/ArcGIS/rest/services/World_Terrain_Base/MapServer/tile/%7Bz%7D/%7By%7D/%7Bx%7D", "", "13", "0"]) | |
sources.append(["connections-xyz","Esri Transportation", "", "", "Requires ArcGIS Onlinesubscription", "https://server.arcgisonline.com/ArcGIS/rest/services/Reference/World_Transportation/MapServer/tile/%7Bz%7D/%7By%7D/%7Bx%7D", "", "20", "0"]) | |
sources.append(["connections-xyz","Esri Topo World", "", "", "Requires ArcGIS Onlinesubscription", "http://services.arcgisonline.com/ArcGIS/rest/services/World_Topo_Map/MapServer/tile/%7Bz%7D/%7By%7D/%7Bx%7D", "", "20", "0"]) | |
sources.append(["connections-xyz","OpenStreetMap Standard", "", "", "OpenStreetMap contributors, under ODbL", "http://tile.openstreetmap.org/%7Bz%7D/%7Bx%7D/%7By%7D.png", "", "19", "0"]) | |
sources.append(["connections-xyz","OpenStreetMap H.O.T.", "", "", "OpenStreetMap contributors, under ODbL", "http://tile.openstreetmap.fr/hot/%7Bz%7D/%7Bx%7D/%7By%7D.png", "", "19", "0"]) | |
sources.append(["connections-xyz","OpenStreetMap Monochrome", "", "", "OpenStreetMap contributors, under ODbL", "http://tiles.wmflabs.org/bw-mapnik/%7Bz%7D/%7Bx%7D/%7By%7D.png", "", "19", "0"]) | |
sources.append(["connections-xyz","OpenTopoMap", "", "", "Kartendaten: © OpenStreetMap-Mitwirkende, SRTM | Kartendarstellung: © OpenTopoMap (CC-BY-SA)", "https://tile.opentopomap.org/%7Bz%7D/%7Bx%7D/%7By%7D.png", "", "17", "1"]) | |
sources.append(["connections-xyz","Strava All", "", "", "OpenStreetMap contributors, under ODbL", "https://heatmap-external-b.strava.com/tiles/all/bluered/%7Bz%7D/%7Bx%7D/%7By%7D.png", "", "15", "0"]) | |
sources.append(["connections-xyz","Strava Run", "", "", "OpenStreetMap contributors, under ODbL", "https://heatmap-external-b.strava.com/tiles/run/bluered/%7Bz%7D/%7Bx%7D/%7By%7D.png?v=19", "", "15", "0"]) | |
sources.append(["connections-xyz","Open Weather Map Temperature", "", "", "Map tiles by OpenWeatherMap, under CC BY-SA 4.0", "http://tile.openweathermap.org/map/temp_new/%7Bz%7D/%7Bx%7D/%7By%7D.png?APPID={your_API_key}", "", "19", "0"]) | |
sources.append(["connections-xyz","Open Weather Map Clouds", "", "", "Map tiles by OpenWeatherMap, under CC BY-SA 4.0", "http://tile.openweathermap.org/map/clouds_new/%7Bz%7D/%7Bx%7D/%7By%7D.png?APPID={your_API_key}", "", "19", "0"]) | |
sources.append(["connections-xyz","Open Weather Map Wind Speed", "", "", "Map tiles by OpenWeatherMap, under CC BY-SA 4.0", "http://tile.openweathermap.org/map/wind_new/%7Bz%7D/%7Bx%7D/%7By%7D.png?APPID={your_API_key}", "", "19", "0"]) | |
sources.append(["connections-xyz","CartoDb Dark Matter", "", "", "Map tiles by CartoDB, under CC BY 3.0. Data by OpenStreetMap, under ODbL.", "http://basemaps.cartocdn.com/dark_all/%7Bz%7D/%7Bx%7D/%7By%7D.png", "", "20", "0"]) | |
sources.append(["connections-xyz","CartoDb Positron", "", "", "Map tiles by CartoDB, under CC BY 3.0. Data by OpenStreetMap, under ODbL.", "http://basemaps.cartocdn.com/light_all/%7Bz%7D/%7Bx%7D/%7By%7D.png", "", "20", "0"]) | |
sources.append(["connections-xyz","Bing VirtualEarth", "", "", "", "http://ecn.t3.tiles.virtualearth.net/tiles/a{q}.jpeg?g=1", "", "19", "1"]) | |
# Add sources to browser | |
for source in sources: | |
connectionType = source[0] | |
connectionName = source[1] | |
QSettings().setValue("qgis/%s/%s/authcfg" % (connectionType, connectionName), source[2]) | |
QSettings().setValue("qgis/%s/%s/password" % (connectionType, connectionName), source[3]) | |
QSettings().setValue("qgis/%s/%s/referer" % (connectionType, connectionName), source[4]) | |
QSettings().setValue("qgis/%s/%s/url" % (connectionType, connectionName), source[5]) | |
QSettings().setValue("qgis/%s/%s/username" % (connectionType, connectionName), source[6]) | |
QSettings().setValue("qgis/%s/%s/zmax" % (connectionType, connectionName), source[7]) | |
QSettings().setValue("qgis/%s/%s/zmin" % (connectionType, connectionName), source[8]) | |
# Update GUI | |
iface.reloadConnections() |
avviare QGIS 3.0, aprite la console di Python (Ctrl+Alt+P)

incollare lo script subito dopo >>> dove lampeggia il focus;
fatto, Python farà tutto il lavoro sporco per noi, aggiungerà 33 tile XYZ come da immagine di sotto:

ciao e W QGIS!!!
PER CHI AVESSE PROBLEMI O ERRORI DURANTE L’INSTALLAZIONE:
Tasto destro del mouse su XYZTiles e incollare il file presente qui
VIDEO:
raccolta fondi terminata, a breve ci sarà il plugin QMS anche in QGIS 3.0!!!
Plugin QMS è disponibile da oggi (27/03/2018)
http://nextgis.com/blog/qms-qgis3/
—-
EDIT: se il blog post vi è piaciuto cliccate su ‘Mi piace’, grazie!!!
if you liked the blog post click on ‘Like’, thank you !!!
EDIT2: se il post vi è stato utile contribuite a mantenerlo aggiornato PayPal
Seguimi su Telegram: https://t.me/pigrecoinfinito
un grazie sicero per questo sito.
"Mi piace"Piace a 1 persona
Grazie a te MAT per aver lasciato un commento.
"Mi piace""Mi piace"
Grazie 🙂
"Mi piace"Piace a 1 persona
Grazie a te!!!
"Mi piace""Mi piace"
I buoni suggerimenti sono ben accetti, grazie
"Mi piace"Piace a 1 persona
Grazie a te per il messaggio!
"Mi piace""Mi piace"
Scusa ma se la stessa cosa la si vuol fare con ArcGis?
"Mi piace""Mi piace"
non lo so, ma credo di si.
"Mi piace""Mi piace"
Come sempre Grazie Doc!!!!!
"Mi piace"Piace a 1 persona
Grazie a te.
"Mi piace""Mi piace"
bellissimo, grazie. Tu e gli altri italiani che danno una mano su QGIS vi meritate un applauso.
"Mi piace"Piace a 1 persona
Grazie.
"Mi piace""Mi piace"
Bellissimo lo script, si potrebbe quasi quasi dire “bye bye QMS!”.
Ho provato ad importarlo anche per la 2.18.x ma non funziona,
penso che sia scritto solo per la versione del Python 3.
"Mi piace"Piace a 1 persona
Esatto, solo per >3.x
"Mi piace""Mi piace"
sempre interessante… una domanda: ok associare un servizio wmts, ma si potrebbe crene uno con qgis o qgis server?
"Mi piace"Piace a 1 persona
credo di si, ma non ho mai provato.
"Mi piace""Mi piace"
Ciao Salvatore, è possibile secondo te inserire come sfondo, con lo stesso metodo, le mappe che si visualizzano ai seguenti indirizzi:
http://31.14.133.111/cai_unico/
https://infomont.cai.it/Sentieri/loader.html?ProjectID=CAI
grazie per ogni info in merito e complimenti per il lavoro (100 articoli in 2,5 anni sono veramente da record!!)
"Mi piace""Mi piace"
Ciao Alberto,
quello che mi chiedi va oltre le mie conoscenze e non saprei risponderti ma credo di no.
grazie per le belle parole.
"Mi piace""Mi piace"
Ho qualche problema a gestire lo script….mi sa che il mio ente e’ dietro un proxy server ed e’ quello che impedisce il caricamento delle immagini…puo’ essere ?? saluti e grazie
"Mi piace"Piace a 1 persona
Ciao,
probabile, ma non saprei dirti con certezza.
"Mi piace""Mi piace"
Grazie per il video.
Volevo però chiederti… una volta caricata la basemap (es. Google Satellite),
come faccio ad avere info sul dato specifico (es. Data di Acquisizione, Satellite)
Grazie mille
"Mi piace""Mi piace"
Ciao,
qualcosa trovi qui:
https://qms.nextgis.com/
"Mi piace""Mi piace"
grazie di cuore
"Mi piace"Piace a 1 persona
Grazie a te per aver lasciato un messaggio.
"Mi piace""Mi piace"
Ottima soluzione automatizzata, grande Totò!
"Mi piace"Piace a 1 persona
Grazie per il commento!!!
"Mi piace""Mi piace"
per la versione 2.xx ha funzionato aggiungendo la riga
from PyQt4.QtCore import QSettings
e togliendo l’ultima riga (che dava errore), poi riavviando qgis
"Mi piace"Piace a 1 persona
cantato vittoria troppo presto… li carica ma poi non li visualizza…
"Mi piace""Mi piace"
Infatti,
la differenza tra QGIS 2.x e 3.x sta proprio in python: non credo sia sufficiente aggiungere una riga o toglierne un altra.
Poi, hanno fatto il porting del plugin QuickMapServices che è la stessa cosa.
grazie e ciao
"Mi piace""Mi piace"
Ciao Paolo,
grazie per l’indicazione ma credo non funzioni.
"Mi piace""Mi piace"
grazie Totò, lo proverò subito
"Mi piace"Piace a 1 persona
Grazie a te Lorenzo per aver lasciato un messaggio 🙂
"Mi piace""Mi piace"
Scrivo per la prima volta e ti faccio i complimenti per la chiarezza. Sono io che invece ho ancora poco chiara la relazione tra gli openlayer e i normali servizi wms. Nel dettaglio sto facendo alcune prove con qgiscloud, ma riesco a caricare per il momento solo gli openlayer dispnibili. Io avrei bisogno invece di caricare una carta di maggior dettaglio, appunto disponibile su wms. Esiste che tu sappia una possibilità?
Ringrazio e saluto
Federico Lazzaroni
"Mi piace"Piace a 1 persona
Ciao e grazie per le belle parole.
qgiscloud è un servizio gratuito ma è limitato a 50 mb di dati.
Detto ciò non ho capito il tuo problema.
saluti
"Mi piace""Mi piace"
Magari è un’eresia, ma è possibile trasformare un servizio wms già diponibile in rete in un openlayer così da poterlo sfruttare come sfondo al posto di quelli disponibili??
Grazie e saluti
Federico
"Mi piace"Piace a 1 persona
Ciao,
il plugin QGISCloud e quindi lo spazio che mette a disposizione è limitato e quindi probabilmente non accetta altri wms se non quelli di openlayer.
"Mi piace""Mi piace"
Ti ringrazio, Speravo che essendo un servizio già a disposizione in rete non fosse considerato nello spazio dei 50 mega. Se io lo salvo il link wms nel progetto Qgis da pubblicare, mi carica soltanto i dati vettoriali che trasferisce nel cloud dei 50mega. Il wms proprio non lo considera.
Grazie di nuovo e saluti
Federico
"Mi piace"Piace a 1 persona
Grazie, non riesco a visualizzare OpenStreetMap. Come posso risolvere il problema?
Google Maps ecc li visualizzo.
Qualcuno mi sa aiutare?
"Mi piace"Piace a 1 persona
Ciao,
descrivi per favore cosa hai fatto??
"Mi piace""Mi piace"
Ho caricato sia il layer Google Maps sia il layer Open Street Map. Il primo si vede il secondo no!
Ovviamente accendendo e spegnendo alternativamente i layer.
"Mi piace"Piace a 1 persona
Ho appena fatto delle prove e funziona.
Hai seguito questo blog post per i Tiles XYZ??
"Mi piace""Mi piace"
Si, certamente.
Penso che le tue indicazioni siano perfette.
Non riesco ad individuare il problema.
"Mi piace"Piace a 1 persona
Come scritto sopra da me funziona e non saprei come aiutarti.
"Mi piace""Mi piace"
Grazie mille
"Mi piace""Mi piace"
Grazie a te per aver lasciato un commento 🙂
"Mi piace""Mi piace"
Grazie a te
"Mi piace""Mi piace"
buonasera, ho aggiornato a qgis 10.12 (Bucureśti). Possibile che non riesca ad aggiungere le basi XYZ dalla consolle? mi da una serie di errori <>… Qualcuno conosce una soluzione, grazie.
P.S.: fino alla versione 10.10 sempre utilizzate grazia a questo post!
"Mi piace"Piace a 1 persona
Prova il plugin QuickPaoServices
"Mi piace""Mi piace"
grazie per la risposta. QMS funzionava ma ha solo una parte delle mappe. Sono riuscito a risolvere esportando l’elenco da un altro pc e importandolo nel mio. Dalla console Python mi dava un errore.
"Mi piace"Piace a 1 persona
Se vai su settings puoi attivare molte altre mappe come Google e Bing
"Mi piace""Mi piace"
Buongiorno, dopo aver importato le mappe Google, l’immagine non è perfettamente perpendicolare, ma sembra avere un angolo, come se fosse tridimensionale. Come posso fare per avere un immagine perpendicolare? Grazie!
"Mi piace""Mi piace"
Buongiorno, non ho capito bene, se puoi allega qualche screenshot e maggiori dettagli (che versione di QGIS utilizzi?)
"Mi piace""Mi piace"
Volevo segnalarti che il codice presente sul repository di Klas Karlsson è stato aggiornato rispetto a quello presente sul tuo repository.
"Mi piace"Piace a 1 persona
Grazie mille per la segnalazione.
"Mi piace""Mi piace"