Message posté par : bd66300
----------------------------------------
Objet: PyQGis symbology rulebased
(re) bonjour,
Suite à mon précédent message , j’ai progressé un peu. J’arrive maintenant à ‘lire’ les différents éléments de chaque règle (code ci-dessous) mais n’arrive pas à modifier l’un de ces éléments.
Dans l’exemple ci-dessous, j’essaie de modifier la condition de la 7ème règle ("MotsCles" like \'%GEOLOGI%\''). Mais lorsque je regarde dans Qgis, la modification n’a pas été faite.
Avez-vous une idée?
-----------------
Code :
layerPhotos = QgsProject.instance().mapLayersByName('Photographies')[0]
iface.setActiveLayer(layerPhotos)
renderer = layerPhotos.renderer()
root_rule = renderer.rootRule() # objet de la class qgis._core.QgsRuleBasedRenderer.Rule
print(root_rule.children()[6].symbol())
print(root_rule.children()[6].label())
print(root_rule.children()[6].maximumScale())
print(root_rule.children()[6].minimumScale())
print("filtre: ", root_rule.children()[6].filter())
print("description:", root_rule.children()[6].description())
exp = QgsExpression('"MotsCles" like \'%GEOLOGI%\'')
renderer.rootRule().children()[6].filterExp = exp
layerPhotos.setRenderer(renderer)
layerPhotos.triggerRepaint()
-----------------
----------------------------------------
Le message est situé https://georezo.net/forum/viewtopic.php?pid=343038#p343038
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
Message posté par : Thomas Gratier (thomas.gratier(a)gmail.com)
----------------------------------------
Bonjour,
Essayez d'utiliser un "setter" comme suivant plutôt que d'assigner une propriété
-----------------
Code :
renderer.rootRule().children()[6].setFilterExpression('"MotsCles" like \'%GEOLOGI%\'')
-----------------
A partir de la documentation, vous allez voir toute la liste disponible depuis "setActive" https://qgis.org/api/classQgsRuleBasedRenderer_1_1Rule.html
De manière intuitive, si vous avez un appel "root_rule.children()[6].description()" vous aurez la possibilité de faire "root_rule.children()[6].setDescription('ma description')"
Un autre manière pour avoir toutes les méthodes disponible pour votre objet est de faire "print(dir(root_rule.children()[6]))"
Cordialement
Thomas
----------------------------------------
Le message est situé https://georezo.net/forum/viewtopic.php?pid=343041#p343041
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
Message posté par : bd66300
----------------------------------------
Bonjour à tous,
Je cherche à modifier avec Python les éléments d’une symbologie ‘rule based’.
Voici les 2 premiers élements que me donne le layer.renderer().dump():
-----------------
Code :
RULE Tous, pas d'échelle - scale [0,0] - filter - symbol MARKER SYMBOL (1 layers) color 25,136,233,255
RULE date spécifique - scale [0,0] - filter "datePhoto" like '%2020-02-10%' - symbol MARKER SYMBOL (1 layers) color 250,255,57,255
-----------------
La question est comment puis-je atteindre chacun de ces éléments (“Tous, pas d’échelle”, scale [0,0], etc…)
et comment je peux les modifier.
Merci pour vos réponses
BD
----------------------------------------
Le message est situé https://georezo.net/forum/viewtopic.php?pid=343033#p343033
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
Message posté par : bd66300
----------------------------------------
Bonjour à tous,
Je cherche à modifier avec Python les éléments d’une symbologie ‘rule based’.
Voici les 2 premiers élements que me donne le layer.renderer().dump():
-----------------
Code :
RULE Tous, pas d'échelle - scale [0,0] - filter - symbol MARKER SYMBOL (1 layers) color 25,136,233,255
RULE date spécifique - scale [0,0] - filter "datePhoto" like '%2020-02-10%' - symbol MARKER SYMBOL (1 layers) color 250,255,57,255
-----------------
La question est comment puis-je atteindre chacun de ces éléments (“Tous, pas d’échelle”, scale [0,0], etc…)
et comment je peux les modifier.
Merci pour vos réponses
BD
----------------------------------------
Le message est situé https://georezo.net/forum/viewtopic.php?pid=343032#p343032
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
Message posté par : bd66300
----------------------------------------
Bonjour à tous,
Je cherche à modifier avec Python les éléments d’une symbologie ‘rule based’.
Voici les 2 premiers élements que me donne le layer.renderer().dump():
-----------------
Code :
RULE Tous, pas d'échelle - scale [0,0] - filter - symbol MARKER SYMBOL (1 layers) color 25,136,233,255
RULE date spécifique - scale [0,0] - filter "datePhoto" like '%2020-02-10%' - symbol MARKER SYMBOL (1 layers) color 250,255,57,255
-----------------
La question est comment puis-je atteindre chacun de ces éléments (“Tous, pas d’échelle”, scale [0,0], etc…)
et comment je peux les modifier.
Merci pour vos réponses
BD
----------------------------------------
Le message est situé https://georezo.net/forum/viewtopic.php?pid=343031#p343031
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
Message posté par : zutix
----------------------------------------
Bonjour
Que faut-il écrire en python 2 pour faire l’équivalent du chargement manuel suivant ?
Clic sur l’icône (apostrophe) qui permet d’ajouter une couche de texte délimité (csv) puis choix des paramètres suivants :
Nom fichier : D:/QGIS/PROJETS/TEST/TestFic.csv
Nom couche : Test Codage : UTF-8
√ Délimiteurs personnalisés ( √ Tab et √ Point-virgule)
Enregistrements (Nb lignes à ignorer : 0 et √ en-têtes en 1ère ligne)
Options des champs ( ) ( ) signifie : aucune sélection
Définition de la géométrie (√ Pas de géométrie)
Paramètres de la couche ( )
Le code suivant dans la console python ne charge pas la couche, probablement parce qu’il manque l'information : pas de géométrie (point est sélectionné par défaut).
uri = "file:///D:/QGIS/PROJETS/TEST/TestFic.csv?delimiter=%s" % (";")
layer = QgsVectorLayer(uri, "Test", "delimitedtext")
D'avance merci.
Cordialement
----------------------------------------
Le message est situé https://georezo.net/forum/viewtopic.php?pid=343021#p343021
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
Message posté par : bd66300
----------------------------------------
Bonjour,
Merci à PA. C'est effectivement la solution.
Chez moi (QGIS 3.10), c'est légèrement différent: plugin/extension s'appelle Lat Lon Tools dans lequel/laquelle se trouve effectivement Lat Lon digitize
Merci pour cette réponse.
Par contre, la réponse de conejo me semble inappropriée.
Bonne journée,
BD
----------------------------------------
Le message est situé https://georezo.net/forum/viewtopic.php?pid=343018#p343018
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
Message posté par : romainbh
----------------------------------------
Alors avec des images aériennes "planes", la problématique devient déjà moindre mais reste tout de même complexe et hors d'atteinte des outils SIG traditionnels. Cependant des experts en traitement raster pourraient peut-être vous donner des pistes.
Il existe un outil de géoréférencement automatique chez Esri (https://pro.arcgis.com/fr/pro-app/latest/help/data/imagery/georeferencing-a…) mais il ne fonctionne que dans un cadre restreint (il faut déjà positionner approximativement le raster sur zone). Faire ce calcul automatique sur toute la France serait juste monumental.
----------------------------------------
Le message est situé https://georezo.net/forum/viewtopic.php?pid=343011#p343011
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
Message posté par : MLsig (martinliberati(a)laposte.net)
----------------------------------------
Bonjour à tous,
J'aurais besoin d'aide pour un traitement en apparence simple mais qui ne fonctionne pas de mon côté.
Je dispose de deux couches :
-couche 1 : La BD Carthage (couche shape format ligne avec l'ensemble des cours d'eau de France)
-couche 2 : La base de donnée des masses d'eau DCE (couche shape format lignes contenant des informations sur les cours d'eau principaux de la BD Carthage)
La couche 2 est faite à partir de la couche 1, les deux sont donc bien superposées. Cependant la couche 2 est plus simplifiée, et ne contient donc pas des informations sur tous les cours d'eau de la couche 1.
J'aimerais extraire les informations de la couche 2 dans la couche 1 lorsqu'elles existent (et sinon avoir NA). Les limites des lignes n'étant pas toujours les mêmes, il faudrait que la couche 1 soit découpée par la couche 2 lorsque nécessaire.
C'est donc plus ou moins une jointure spatiale entre deux jeux de données lignes, mais lorsque j'utilise 'joindre les attributs par localisation' avec le prédicat intersection, j'obtiens des erreurs, et certaines lignes sont multipliées un grand nombre de fois dans le jeu de données en sortie.
Existe-il un outil pour réaliser ce genre de jointure ?
Merci
----------------------------------------
Le message est situé https://georezo.net/forum/viewtopic.php?pid=342948#p342948
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
Message posté par : Steph01300
----------------------------------------
Bonsoir,
Je suis débutant sur QGis et je voudrai créer une base de données naturaliste de ma commune.
Pour cela je souhaite créer un formulaire d'attribut avec une liste de valeur à partir d'un fichier csv.
J'arrive a faire cette procédure mais comme j'utilise un csv a plus de 2 colonnes, celles-ci sont empilées dans la liste.
Y a-t-il un moyen ou une extension qui permette de ne prendre que les 2 premières colonnes du fichier plutôt que d'en créer un autre avec 2 colonnes. Celui_ci me servant également de couche de texte délimité.
Merci d'avance de vos réponses.
----------------------------------------
Le message est situé https://georezo.net/forum/viewtopic.php?pid=343007#p343007
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