Message posté par : lylambda
----------------------------------------
Bonjour,
Ayant un besoin similaire à Pascal153, je me permets de déterrer ce fil.
J'utilise une action python qui importe une dalle raster d'un Modèle Numérique de
terrain (MNT, à savoir le RGE-ALTI) à partir d'un quadrillage Shapefile.
Par défaut, le style d'une dalle de MNT se base sur un dégradé de gris en fonction de
l’élévation minimum et maximum au sein de la dalle.
Ainsi, en important plusieurs dalles, chacune aura son propre dégradé de gris et
l'affichage globale ne sera pas cohérent.
Je souhaite donc que mon action python importe la dalle ET applique un style à la volée à
partir d'un qml que j'ai préparé.
C'est sur cette seconde partie que je sollicite une aide du forum.
Deux alternatives existent à la solution que je recherche. Je les ai écarté pour
l'instant :
- Copier et renommer mon qml autant de fois que j'ai de dalles. Vu leur nombre, cela
ne me semble pas une bonne solution.
- Réaliser un VRT. Cette option est trop lente à grande échelle pour un usage efficace.
Voici le script en question :
-----------------
Code :
import os
def getVectorLayerByName(NomCouche):
layermap=QgsProject.instance().mapLayers()
for name, layer in layermap.items():
if layer.name()==NomCouche:
if layer.isValid():
return layer
else:
return None
mypath="[% "DOSSIER" %]".replace("\\","/")+
"[% "NOM2" %]"
instRegistry = QgsProject.instance()
macouche = instRegistry.mapLayersByName( "[% "NOM2" %]")
courant=qgis.utils.iface.mapCanvas().currentLayer()
raster_ouvert=getVectorLayerByName("[% "NOM2" %]")
if raster_ouvert is not None:
QgsProject.instance().removeMapLayer(raster_ouvert.id())
qgis.utils.iface.mapCanvas().refresh()
else:
qgis.utils.iface.addRasterLayer(mypath,"[% "NOM2" %]")
qgis.utils.iface.setActiveLayer(courant)
-----------------
Cette action permet donc d'ouvrir ou fermer une dalle raster en fonction d'un
carroyage vecteur et des Champs virtuels "DOSSIER" et "NOM2". Elle est
idéale pour l'Orthophoto HD, qui est trop lourde pour en faire un VRT
(
https://georezo.net/forum/viewtopic.php?pid=321243#p321243 (cf ce message) ).
Pour l'utiliser sur les dalles du RGE-ALTI, je souhaite ajouter une fonction
supplémentaire : l'application d'un style à la volée (stocké en qml) à la dalle
ouverte .
En fouillant le web, je trouve des indications sur l'utilisation de fonction tel que
"layer.loadNamedStyle(CHEMIN/STYLE.qml)". Mais je n'ai pas su les mettre en
application, mes essais se concluant par de belles erreurs.
Un habitué de python saurait-il m'aider ?
----------------------------------------
Le message est situé
https://georezo.net/forum/viewtopic.php?pid=332256#p332256
Pour y répondre : qgis_fr(a)ml.georezo.net ou reply de votre messagerie
Pour vous désabonner connectez-vous sur le forum puis Profil / Abonnement
--
Association GeoRezo - le portail géomatique
https://georezo.net