Page 22 sur 25
Exercice
Maintenant vous savez :
- Exporter des cartes en série
- Intersecter des couches géographiques
Et bien ajoutez donc dans le sous-titre de vos cartes la commune où se trouve le sommet sélectionné.
À vous de jouer !
Vous allez devoir utiliser la couche des IRIS (disponible en pièce jointe de cet article) et l'intersecter avec vos sommets :
[code]...
iris = QgsVectorLayer("C:/Users/Georges/Downloads/qgis/data_IRIS_2019/data_IRIS_2019/iris.shp", "IRIS", "ogr")
...
QgsProject.instance().addMapLayer(iris)
...
# Intersecter les sommets et les IRIS
peaks_iris_path = "C:/Users/Georges/Downloads/qgis/exports/peaks_iris.shp"
processing.run('qgis:intersection', {\
"INPUT": peaks,\
"OVERLAY": iris,\
"INPUT_FIELDS": ["OSM_ID", "NAME", "OTHER_TAGS"],\
"OVERLAY_FIELDS": ["CODE_IRIS", "NOM_COM"],\
"OVERLAY_FIELDS_PREFIX": "",\
"OUTPUT": peaks_iris_path})
peaks_iris = QgsVectorLayer(peaks_iris_path, "Sommets", "ogr")
QgsProject.instance().addMapLayer(peaks_iris)
# Retirer ancienne couche des sommets et celle des IRIS
QgsProject.instance().removeMapLayer(peaks)
QgsProject.instance().removeMapLayer(iris)[/code]
Puis appeler le nouveau champ disponible (NOM_COM) et modifier la chaîne formatée qui remplit le sous-titre :
[code]...
commune = feat['NOM_COM']
...
subtitle.setText("Identifiant OSM : {} - Commune : {}".format((str(id_peak)), (commune)))
...[/code]
Notez qu'au lieu de l'ancien %, nous utilisons ici une méthode de formatage plus moderne (.format())
Code complet de l'export des cartes avec les noms de commune en sous-titre et les liens aux APIs (modifiez les chemins, testez ce code de préférence dans l'éditeur Python, pas la console).