banniere

Le portail francophone de la géomatique


Toujours pas inscrit ? Mot de passe oublié ?
Nom d'utilisateur    Mot de passe              Toujours pas inscrit ?   Mot de passe oublié ?

Annonce

Rencontres QGIS 2025

L'appel à participation est ouvert jusqu'au 19 janvier 2025!

#1 Wed 13 December 2023 11:29

pyjoubert
Participant assidu
Lieu: Lyon
Date d'inscription: 21 Mar 2006
Messages: 347

QGIS 3.28/Python: Proprietes des couches chargees

Bonjour

Je charge différentes couches de données (vecteur ou raster) à l'aide de AddVectorLayer et AddRastorLayer,
et je voudrais ensuite pourvoir pour chacune d'elles, lire les propriétés de ces couche
- source de la donnée
- nature (vecteur ou raster)
- etc ...

Pourriez-vous me dire comment s'y prendre  en PYTHON ?

Merci et bonne journée, PYJ

Hors ligne

 

#2 Wed 13 December 2023 14:11

YoLecomte
Participant assidu
Lieu: Epinal
Date d'inscription: 7 Jul 2015
Messages: 266

Re: QGIS 3.28/Python: Proprietes des couches chargees

Hors ligne

 

#3 Wed 13 December 2023 17:12

Sylther
Participant assidu
Lieu: Mpl
Date d'inscription: 17 May 2016
Messages: 186
Site web

Re: QGIS 3.28/Python: Proprietes des couches chargees

Bonjour,

Pour compléter cette réponse un peu teintée RTFM hmm ...

Le 'Développement PyQGIS - Livre de recettes' existe aussi en français, et évolue au fil de la traduction que les contributeur.rices bénévoles en font : https://docs.qgis.org/3.28/fr/docs/pyqg … index.html
(Bien qu'évidemment des notions ou la maîtrise de l'anglais technique sont un gros plus pour la prog python en général, donc aussi celle de l'API QGIS.)

Pour en revenir à la question, une bonne source d'inspiration est la doc de ladite API : https://qgis.org/pyqgis/3.28/index.html (en anglais).

En particulier la partie  concernant les classes QgsVectorLayer et QgsRasterLayer

Bonne journée.

Edit modo: Quitte à pointer vers des liens, autant utiliser ceux de la version en objet.

Dernière modification par SANTANNA (Thu 14 December 2023 11:06)

Hors ligne

 

#4 Thu 14 December 2023 08:03

pyjoubert
Participant assidu
Lieu: Lyon
Date d'inscription: 21 Mar 2006
Messages: 347

Re: QGIS 3.28/Python: Proprietes des couches chargees

Bonjour,

Désolé,
Je débute avec QGIS, mais je n'ai rien trouvé dans la doc ;-(

Pour ma problématique,
les couches (vecteur ou  raster sont déjà chargées via les fonctions appropriées
Elles apparaissent dans la vue et dans la légende
Ensuite, pour un besoin particuleir, j'ai besoin de reparcourir ces couches (ou layers) et pour chacue d'elle, etrouver leurd caractéristiques
- Nature (Verteur ou raster)
- Leur source initiale (base ou fichier)
-  Leur localisation dans le cas de fichier)

Un petit exemple serait donc le bien venu


Merci de votre aide

Hors ligne

 

#5 Thu 14 December 2023 18:46

Sylther
Participant assidu
Lieu: Mpl
Date d'inscription: 17 May 2016
Messages: 186
Site web

Re: QGIS 3.28/Python: Proprietes des couches chargees

Bonjour,

pyjoubert a écrit:

[...]
les couches (vecteur ou  raster sont déjà chargées via les fonctions appropriées
[...]]Un petit exemple serait donc le bien venu


Peut-être qu'un exemple du code qui charge les couches via les fonctions appropriés serait utile pour répondre.

Bonne soirée.

Hors ligne

 

#6 Fri 15 December 2023 07:14

pyjoubert
Participant assidu
Lieu: Lyon
Date d'inscription: 21 Mar 2006
Messages: 347

Re: QGIS 3.28/Python: Proprietes des couches chargees

Vonjour,

Et voilà comment je charge mes couches
Les 2 premières fonctions sont des utilitaires, c'est la dernière qui fait le job
Il faut lui passée en argument une liste de fichiers shape ou tif

Merci

Code:

import os

# Retourne l'extension d'un fichier (. compris)
def WBO_FICHIER_DonnerExtensionFichier(fichier):
   _, extension = os.path.splitext(fichier)
   return(extension)


# Ajoute une couche shape ou tif
# Arg 1 : Chemin complet vers le jeu de données
# Arg2 : Nom que l'on veut voir dans la légende
# Res  : layer ajoute
def WBO_LAYER_CoucheAjouter(jeu,nom):
   if (WBO_FICHIER_DonnerExtensionFichier(jeu) == ".shp"):
      layer = iface.addVectorLayer(jeu, nom, "ogr")
   elif (WBO_FICHIER_DonnerExtensionFichier(jeu) == ".tif"):
      layer = iface.addRasterLayer(jeu,nom,"gdal")
   else:
      print ("Format inconnu")
   return(layer)


# Foncton à jouer
# Il faut 2 jeux de donnees (shape et/ou tif) dans C:Temp

def PRT_Test(liste):
   for radical in liste:
      jeu = ("c:/temp/" + radical + ".shp")
      layer = WBO_LAYER_CoucheAjouter(jeu,compo)

Hors ligne

 

Pied de page des forums

Powered by FluxBB