Created
February 27, 2018 15:48
-
-
Save ThomasG77/48fc558fb8ee0e188f5b9da7bae6cd85 to your computer and use it in GitHub Desktop.
PyQGIS script to save/load/wipe XYZ sources in Browser Panel in QGIS3
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
# -*- coding: utf-8 -*- | |
""" | |
/*************************************************************************** | |
Name : XYZ manager | |
Description : Script to save/load/wipe WYZ sources in QGIS 3.0 | |
Date : February 27, 2017 | |
copyright : (C) 2017 by Thomas Gratier | |
email : thomas.gratier@webgeodatavore.com | |
***************************************************************************/ | |
/*************************************************************************** | |
* * | |
* This program is free software; you can redistribute it and/or modify * | |
* it under the terms of the GNU General Public License as published by * | |
* the Free Software Foundation; either version 2 of the License, or * | |
* (at your option) any later version. * | |
* * | |
***************************************************************************/ | |
""" | |
import csv | |
from PyQt5.QtCore import QSettings | |
s = QSettings() | |
xyz = 'qgis/connections-xyz' | |
keys = ["url", "zmin", "zmax", "authcfg", "username", "password", "referer"] | |
def getGroupXYZ(): | |
s.beginGroup(xyz) | |
groupsXYZ = s.childGroups() | |
s.endGroup() | |
return groupsXYZ | |
def connexionsXYZSettings(groups): | |
connections_xyz = [] | |
for group in groups: | |
s.beginGroup(xyz + "/" + group) | |
conn = {} | |
conn["name"] = group | |
for key in keys: | |
if s.value(key): | |
conn[key] = s.value(key) | |
else: | |
conn[key] = '' | |
s.endGroup() | |
connections_xyz.append(conn) | |
return connections_xyz | |
def writeConnexionsXYZToCSV(dictionnary, filepath): | |
with open(filepath, 'w', encoding='utf-8') as f: # save to csv | |
output = csv.writer(f) # create a csv.write | |
header = dictionnary[0].keys() | |
output.writerow(header) # header row | |
for row in dictionnary: | |
output.writerow(row.values()) # values row | |
def readConnexionsXYZFromCSV(filepath): | |
data = [] | |
with open(filepath, encoding='utf-8') as f: # load csv file | |
for row in csv.DictReader(f): | |
data.append(row) | |
return data | |
def setConnexionXYZ(filepath='/tmp/xyzsources.csv'): | |
for record in readConnexionsXYZFromCSV(filepath): | |
s.beginGroup(xyz) | |
group = record["name"] | |
for key in keys: | |
if record[key]: | |
s.setValue(group + "/" + key, record[key]) | |
s.endGroup() | |
def removeAllConnexionsXYZ(): | |
for group in getGroupXYZ(): | |
s.beginGroup(xyz) | |
s.remove("") | |
s.endGroup() | |
# If you want to save your current configuration, uncomment and change path | |
# writeConnexionsXYZToCSV(connexionsXYZSettings(getGroupXYZ()), '/tmp/xyzsources.csv') | |
# If you want to wipe XYZ configuration, uncomment | |
# removeAllConnexionsXYZ() | |
# Adapt path from where your csv is located | |
# We provide a file to load Mapbox datasources (just replace 'your key' with your own Mapbox account key) | |
setConnexionXYZ('/tmp/xyzsources.csv') | |
# You must reload the connection to update Browser Panel content | |
# otherwise you will not see changes | |
iface.reloadConnections() |
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
url | password | authcfg | username | name | referer | zmin | zmax | |
---|---|---|---|---|---|---|---|---|
http://tile.openstreetmap.org/{z}/{x}/{y}.png | OSM default | |||||||
https://maps.wikimedia.org/osm-intl/{z}/{x}/{y}.png | Wikimedia maps |
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
url | password | authcfg | username | name | referer | zmin | zmax | |
---|---|---|---|---|---|---|---|---|
https://api.mapbox.com/v4/mapbox.streets/{z}/{x}/{y}.png?access_token=your_key | Mapbox Streets | 0 | 22 | |||||
https://api.mapbox.com/v4/mapbox.light/{z}/{x}/{y}.png?access_token=your_key | Mapbox Light | 0 | 22 | |||||
https://api.mapbox.com/v4/mapbox.dark/{z}/{x}/{y}.png?access_token=your_key | Mapbox Dark | 0 | 22 | |||||
https://api.mapbox.com/v4/mapbox.satellite/{z}/{x}/{y}.png?access_token=your_key | Mapbox Satellite | 0 | 22 | |||||
https://api.mapbox.com/v4/mapbox.streets-satellite/{z}/{x}/{y}.png?access_token=your_key | Mapbox Streets Satellite | 0 | 22 | |||||
https://api.mapbox.com/v4/mapbox.wheatpaste/{z}/{x}/{y}.png?access_token=your_key | Mapbox Wheat Paste | 0 | 22 | |||||
https://api.mapbox.com/v4/mapbox.streets-basic/{z}/{x}/{y}.png?access_token=your_key | Mapbox Streets Basic | 0 | 22 | |||||
https://api.mapbox.com/v4/mapbox.comic/{z}/{x}/{y}.png?access_token=your_key | Mapbox Comic | 0 | 22 | |||||
https://api.mapbox.com/v4/mapbox.outdoors/{z}/{x}/{y}.png?access_token=your_key | Mapbox Outdoors | 0 | 22 | |||||
https://api.mapbox.com/v4/mapbox.run-bike-hike/{z}/{x}/{y}.png?access_token=your_key | Mapbox Run Bike Hike | 0 | 22 | |||||
https://api.mapbox.com/v4/mapbox.pencil/{z}/{x}/{y}.png?access_token=your_key | Mapbox Pencil | 0 | 22 | |||||
https://api.mapbox.com/v4/mapbox.pirates/{z}/{x}/{y}.png?access_token=your_key | Mapbox Pirates | 0 | 22 | |||||
https://api.mapbox.com/v4/mapbox.emerald/{z}/{x}/{y}.png?access_token=your_key | Mapbox Emerald | 0 | 22 | |||||
https://api.mapbox.com/v4/mapbox.high-contrast/{z}/{x}/{y}.png?access_token=your_key | Mapbox High Contrast | 0 | 22 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment