#1 Thu 03 August 2023 12:15
- GDU42
- Juste Inscrit !
- Date d'inscription: 1 Aug 2023
- Messages: 8
QGIS/Modeleur graphique: Champs vectoriel
Bonjour à tous,
Après plusieurs recherches qui n'aboutissent pas, je viens demander de l'aide sur le forum pour comprendre pourquoi j'ai une erreur quand je lance un algorithme dans le modeleur graphique.
J'utilise le modeleur depuis peu, je ne suis donc pas très expérimenté, j'apprends "sur le tas" comme on dit.
Ce que je veux faire : réaliser un tampon dont la distance est fonction d'un champs d'une couche vectorielle.
Ce que je fais dans le modeleur : je définie une entrée "couche vecteur", puis je créé une entrée "champs vectoriel" pour cibler le champs qui m’intéresse.
Ensuite, j'utilise l'algorithme "Tampon" pour créer une couche avec pour distance un calcul basé sur le champs ciblé de ma couche vectorielle (formule : 1,2 * la valeur du champ). J'ai donc testé (valeur pré-calculée) :
1.2 * @champsvectoriel --> ne marche pas
1.2 * attribute(@couchevecteur, @champsvectoriel) --> ne marche pas
Peut-être que je n'utilise pas les bonnes expressions, mais je ne trouve justement nul part d'exemples de paramétrages du modeleur pour cette simple utilisation.
Je vous remercie.
PS : si vous connaissez un bon gros tuto qui me permettrait de trouver la réponse à ma question, et à d'autres futures du même type, je prends.
Hors ligne
#2 Thu 03 August 2023 12:18
- GDU42
- Juste Inscrit !
- Date d'inscription: 1 Aug 2023
- Messages: 8
Re: QGIS/Modeleur graphique: Champs vectoriel
Bonjour à tous,
Après plusieurs recherches qui n'aboutissent pas, je viens demander de l'aide sur le forum pour comprendre pourquoi j'ai une erreur quand je lance un algorithme dans le modeleur graphique.
J'utilise le modeleur depuis peu, je ne suis donc pas très expérimenté, j'apprends "sur le tas" comme on dit.
Ce que je veux faire : réaliser un tampon dont la distance est fonction d'un champs d'une couche vectorielle.
Ce que je fais dans le modeleur : je définie une entrée "couche vecteur", puis je créé une entrée "champs vectoriel" pour cibler le champs qui m’intéresse.
Ensuite, j'utilise l'algorithme "Tampon" pour créer une couche avec pour distance un calcul basé sur le champs ciblé de ma couche vectorielle (formule : 1,2 * la valeur du champ). J'ai donc testé (valeur pré-calculée) :
1.2 * @champsvectoriel --> ne marche pas
1.2 * attribute(@couchevecteur, @champsvectoriel) --> ne marche pas
Peut-être que je n'utilise pas les bonnes expressions, mais je ne trouve justement nul part d'exemples de paramétrages du modeleur pour cette simple utilisation.
Je vous remercie.
PS : si vous connaissez un bon gros tuto qui me permettrait de trouver la réponse à ma question, et à d'autres futures du même type, je prends.
Hors ligne
#3 Thu 03 August 2023 14:29
- LPlante
- Participant occasionnel
- Date d'inscription: 17 Nov 2021
- Messages: 44
Re: QGIS/Modeleur graphique: Champs vectoriel
Bonjour,
Est ce que tu peux créer dans un champ virtuel calculé (dans ton tableau attributaire) la distance du tampon?
Puis dans ton modeleur graphique, ta couche vecteur, ta couche vectorielle (le champs distance calculée) puis utiliser l'outil "distance tampon variable" en spécifiant pour le champ distance: l'entrée du modèle "ta_couche_vectorielle"
bon courage
Hors ligne
#4 Thu 03 August 2023 15:27
- GDU42
- Juste Inscrit !
- Date d'inscription: 1 Aug 2023
- Messages: 8
Re: QGIS/Modeleur graphique: Champs vectoriel
Bonjour, et merci pour ta réponse.
L'algorithme "Distance tampon variable" ne fonctionne que pour des vecteurs lignes, pas pour des points ou des polygones, je ne peux donc pas l'utiliser.
Dernière modification par GDU42 (Thu 03 August 2023 15:36)
Hors ligne
#5 Thu 03 August 2023 16:02
- LPlante
- Participant occasionnel
- Date d'inscription: 17 Nov 2021
- Messages: 44
Re: QGIS/Modeleur graphique: Champs vectoriel
Curieux, c'est un message d'erreur qui te dis ca?
L'outil fonctionne avec tout type de géométrie de mon coté sur la 3.16.7
Hors ligne
#6 Thu 03 August 2023 16:14
- GDU42
- Juste Inscrit !
- Date d'inscription: 1 Aug 2023
- Messages: 8
Re: QGIS/Modeleur graphique: Champs vectoriel
J'utilise la version 3.28.9-FIRENZE.
Ci-dessous quand je veux tester l'algorithme sans passer par le modeleur (depuis la boîte Traitements) :
https://ibb.co/WWwqGRL
Je dois réaliser un tampon sur une couche de points (une dizaine), dont la largeur du tampon est définie dans un champ 'diametre' de ma couche.
Quand j'utilise l'algorithme TAMPON sans passer par le modeleur, en choisissant dans les options la couche d'entrée et le champ correspondant, ça fonctionne. Mais dans le modeleur, je ne sais pas reproduire la même chose.
Hors ligne
#7 Mon 07 August 2023 14:07
- GlaDal
- Participant assidu
- Date d'inscription: 30 Aug 2013
- Messages: 1087
Re: QGIS/Modeleur graphique: Champs vectoriel
Bonjour,
Le champ de valeur 'tampon' à utiliser se trouve dans une deuxième couche ou bien il n'y a qu'une couche en jeu dans votre traitement ?
Hors ligne
#8 Tue 29 August 2023 15:41
- GDU42
- Juste Inscrit !
- Date d'inscription: 1 Aug 2023
- Messages: 8
Re: QGIS/Modeleur graphique: Champs vectoriel
Bonjour, il y a effectivement qu'une seule couche en jeu, celle que je met entrée de mon modeleur.
(désolé pour la réponse tardive, vacances ... ;-)
Hors ligne
#9 Tue 19 September 2023 09:20
- GDU42
- Juste Inscrit !
- Date d'inscription: 1 Aug 2023
- Messages: 8
Re: QGIS/Modeleur graphique: Champs vectoriel
Bonjour,
Je me permet de relancer mon sujet, pour lequel je n'ai pas trouvé de solution... l'explication de mon problème en début de sujet.
Pour résumer : dans le modeleur, je veux utiliser le champs d'une couche vectorielle, que j'appelle en entrée, pour réaliser le calcul d'une distance tampon autour de cette même couche vectorielle.
Je vous remercie pour l'attention que vous porterez à résoudre mon problème.
Hors ligne
#10 Tue 19 September 2023 15:14
- louloupzh18
- Participant occasionnel
- Lieu: Le Mans
- Date d'inscription: 9 Apr 2015
- Messages: 11
Re: QGIS/Modeleur graphique: Champs vectoriel
Bonjour,
L'utilisation de commandes en python est-elle envisageable ? Personnellement j'aurai traité le problème comme cela de mon coté :
Code:
from qgis.core import QgsProject, QgsVectorLayer, QgsFeature, QgsField, QgsFields from qgis.PyQt.QtCore import QVariant # Obtenez la couche de points à partir du nom de la couche points = QgsProject.instance().mapLayersByName('points')[0] # Créez une nouvelle couche pour stocker les zones tampons resultat = QgsVectorLayer("Polygon?crs=epsg:2154", "buffer_layer", "memory") # Ajoutez la nouvelle couche au projet QgsProject.instance().addMapLayer(resultat) # Préparez la couche de buffer pour l'édition resultat.startEditing() # Ajoutez les champs nécessaires à la couche de buffer fields = QgsFields() fields.append(QgsField("id", QVariant.Int)) fields.append(QgsField("diametre", QVariant.Double)) resultat.dataProvider().addAttributes(fields) resultat.updateFields() # Parcourez chaque entité de la couche de points for feature in points.getFeatures(): diametre = feature['diametre'] # Assurez-vous que le champ s'appelle 'diametre' # Créez la géométrie tampon buffer_geom = feature.geometry().buffer(diametre, 20) # Ajoutez la géométrie tampon à la nouvelle couche buffer_feature = QgsFeature() buffer_feature.setGeometry(buffer_geom) buffer_feature.initAttributes(2) # Initialisez deux attributs buffer_feature.setAttribute(0, feature.id()) # Définissez le premier attribut comme l'ID de l'entité buffer_feature.setAttribute(1, diametre) # Définissez le deuxième attribut comme le diamètre resultat.dataProvider().addFeature(buffer_feature) # Terminez l'édition et enregistrez les modifications resultat.commitChanges()
A adapter bien sûr en fonction du besoin.
En espérant que cela aide,
louloupzh
Hors ligne
#11 Wed 20 September 2023 13:01
- GDU42
- Juste Inscrit !
- Date d'inscription: 1 Aug 2023
- Messages: 8
Re: QGIS/Modeleur graphique: Champs vectoriel
Bonjour Louloupzh, merci pour ton retour.
Je préfèrerais éviter l'utilisation du Python, que je ne maîtrise pas du tout. De plus, là je ne présente que la partie du protocole qui bug, la suite fonctionne bien dans le modeleur, donc ça ferait rajouter des lignes de Python supplémentaires.
C'est pourquoi je veux utiliser le modeleur. Je conserve néanmoins ton approche au cas où.
Dernière modification par GDU42 (Wed 20 September 2023 13:03)
Hors ligne