Message posté par : Robin BNF
----------------------------------------
Bonjour,
L'erreur indique que l'import du module QgsLayer a échoué. D'après l'API QGIS python, il me semble que cette classe n'existe pas et donc ne pas être importée.
En parcourant rapidement votre code, il me semble que ce module n'est pas nécessaire, vous pouvez essayer de le supprimer.
Concernant l'IA pour éditer des codes python, je ne sais pas laquelle vous avez utilisé, mais si il s'agit de Chat GPT, mon expérience est qu'il n'est pas très performant en pyQGIS. Il peut être utile pour donner des idées de fonctions ou de méthodes mais il est nécessaire de retoucher ensuite le code car il y a fréquemment des erreurs.
Pour des fonctions courantes en pyqgis, vous pouvez consulter de livre des recettes pyQGIS qui est très bien fait : https://docs.qgis.org/3.28/fr/docs/pyqgis_developer_cookbook/index.html
----------------------------------------
Le message est situé https://georezo.net/forum/viewtopic.php?pid=362466#p362466
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 : antho0023
----------------------------------------
Bonjour merci pour votre retour. En fait j'utilise l'IA par défaut de connaissances dans la programmation en générale. j'ai pu effectivement constater que bien souvent il y a des éléments à revoir. Pour un petit retour d'expérience, meme si là n'est pas le sujet, Chat GPT peut etre un bon allié dans l'utilisation de la calculatrice de champs. Je n'ai rencontré que peu d'erreurs même si j'ai appris à être vigilant car des fois, les réponses ne sont pas bonnes ou pertinente.
Le code que j'ai inséré a été produit lui par Bard qui ne semble pas très chaud sur le sujet. D'ailleurs même en le poussant " à la reflexion" les réponses sont toujours les mêmes.
Je vais tenter de faire passer le code de cette manière. Pour un info et pour d'éventuels autres utilsateurs qui seraient dans ce cas, je vais tenter le script avec un profil utilisateur vierge, car celui que j'utilise à l'heure actuelle me fais générer des erreurs python au démarage en lien avec cette classe d'attributs.
----------------------------------------
Le message est situé https://georezo.net/forum/viewtopic.php?pid=362484#p362484
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 : Pascal1968
----------------------------------------
Bonjour à toutes et tous,
J'ai un petit souci d'extraction partielle d'une chaîne de caractères d'un champ pour remplir un autre champ.
Je sais qu'il y déjà quantité de sujet du même style, mais l'expression que j'utilise fonctionne parfaitement sauf pour un cas en particulier.
Si quelqu'un sait me dépanner ... ?
Soit une couche avec un champ "Fullname" comprenant des valeurs de type :
Abies concolor => Genus + Species
Acer campestre _'Elsrijk' => Genus + Species + Cultivar
Carpinus betulus _'Albert Beeckman' => Genus + Species + Cultivar (cultivar en deux mots)
Ilex _'Nellie R. Stevens' => Genus + Cultivar
Populus (x) canadensis => Genus + Species (mais avec "(+)" devant le nom d'espèce)
Salix (x) sepulcralis _'Chrysocoma' => Genus + Species (mais avec "(+)" devant le nom d'espèce) + Cultivar
Je souhaite remplir automatiquement un champ "Genus", un champ "Species" et un champ "Cultivar" sur base de "Fullname".
"Genus" est le premier mot de "Fullname".
"Species" est le second mot sans quotes de "Fullname" lorsque ce deuxième mot existe.
"Cultivar est le second ou troisième mot de "Fullname" et est toujours entre deux quotes.
Pour "Genus", en valeur par défaut, je mets : array_get (string_to_array ("Fullname",' '), 0)
Pour "Cultivar", en valeur par défaut, je mets : array_get (string_to_array ("Fullname",'_'), 1)
Les deux expressions fonctionnent à marveille.
Le problème est pour le champ "Species".
En valeur par défaut, pour résoudre tous les différents cas, je mets:
CASE
WHEN length("Fullname")-length(replace("Fullname", '(x)', '')) = 3
THEN 'x '||array_get (string_to_array ("Fullname",'(x)'), 1)
ELSE
array_get (string_to_array ("Fullname",' '), 1)
END
Cela fonctionne dans tous les cas sauf un: les valeur du type Salix (x) sepulcralis _'Chrysocoma' qui renvoient "x sepulcralis _'Chrysocoma'".
Il y a donc la partie ( _'Chrysocoma') en trop.
Voir capture d'écran : https://imagizer.imageshack.com/img923/2386/5YvlLf.jpg
J'ai essayé de comprendre l'expression regexp_substr, mais sans succès
Elle me semble pourtant être adaptée à ce que je souhaite faire : extraire une partie d'une chaîne de caractères, toujours comprise entre les deux mêmes caractères.
Début = la parenthèse fermée.
Fin = le underscroll (en réalité, l'espace avant le underscroll).
Une âme charitable pourrait-elle me mettre sur la bonne piste ?
D'avance merci !
----------------------------------------
Ce message est accompagné de fichiers, pour les télécharger, suivre le lien ci-dessous.
----------------------------------------
Le message est situé https://georezo.net/forum/viewtopic.php?pid=362483#p362483
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 : Jérémie
----------------------------------------
Ca me semble étonnant, un étiquetage "par défaut" permet à l'étiquette de dépasser du polygone. Elle se place au centroide du polygone.
Est-ce que tu as fait des paramétrages spécifiques sur ton étiquetage ?
----------------------------------------
Le message est situé https://georezo.net/forum/viewtopic.php?pid=362461#p362461
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 : Jérémie
----------------------------------------
Bonjour
Vous pouvez essayer via GRASS et r.surf.area après avoir découpé le MNT selon le surfacique (avec l’outil Découper un raster selon une couche de masque)
Et si par hasard vous êtes utilisateur/trice de FME ça sera via le transformer SurfaceDraper (MNT pour entrée Points/lines et surfacique pour entrée DrapeFeature) puis AreaCalculator en mode SlopedArea.
----------------------------------------
Le message est situé https://georezo.net/forum/viewtopic.php?pid=362467#p362467
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 : Laurebou
----------------------------------------
Bonjour.
Je souhaiterais calculer les surfaces des polygones d'une couche SIG en prenant en compte le relief de mon terrain. Les fonctions "area" de la calculatrice de champ ne me permettent pas de prendre en compte mon MNT dans le calcul des surfaces. Connaissez vous un moyen d'y parvenir ?
Merci.
----------------------------------------
Le message est situé https://georezo.net/forum/viewtopic.php?pid=362464#p362464
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 : antho0023
----------------------------------------
Bonjour à tous. Je me permets de venir vers vous car je rencontre des problèmes sur qgis avec la console python. Dans l'optique d'accélérer mon travail, j'ai demandé à l'IA de me pondre un code pour effectuer plusieurs opérations dans un même script que je dispose ci-dessous:
-----------------
Code :
# Importe les modules nécessaires
from qgis.core import QgsProject, QgsLayer, QgsFeature
# Récupère la couche active
layer = QgsProject().activeLayer()
# Insère les valeurs dans les champs
layer.setFeatureValue(0, "Commune", "Valeur de la commune")
layer.setFeatureValue(0, "Code INSEE", "Valeur du code INSEE")
layer.setFeatureValue(0, "Source", "Valeur de la source")
# Génère l'identifiant unique
identifiant = layer.feature(0).attribute("Commune")[:3] + "_" + str(1)
# Insère l'identifiant dans le champ
layer.setFeatureValue(0, "Identifiant", identifiant)
# Sauvegarde les modifications
layer.save()
-----------------
Lorsque j'insère ce code dans la console python avec l'insertion des bonnes valeurs, voici ce que j'obtiens:
-----------------
Code :
Processing: Traceback (most recent call last): File "C:\OSGeo4W/apps/qgis/./python/plugins\processing\script\ScriptEditorDialog.py", line 260, in runAlgorithm exec(self.editor.text(), _locals) File "", line 2, in ImportError: cannot import name 'QgsLayer' from 'qgis.core' (C:\OSGeo4W/apps/qgis/./python\qgis\core\__init__.py)
-----------------
J'ai pris soin d'installer la dernière version stable de python mais force de constater que cela ne change à rien.
Auriez vous déjà rencontré ce problème et si oui existe-t-il une solution ?
Pour info je tourne sous Windows 11 à jour et la version de qgis est la 3.32.2
----------------------------------------
Le message est situé https://georezo.net/forum/viewtopic.php?pid=362463#p362463
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 : Julanselem
----------------------------------------
Bonjour,
Je travaille avec QGis 3.22.5 sur un projet. Cependant, je rencontre un problème au niveau des étiquettes. J'ai fait des recherches sur le forum ainsi que des essais infructueux pour le résoudre.
Afin que vous ayez une idée du projet, j'ai téléchargé mes couches sur Géofabrik, ajouté mes styles perso... J'ai également ajouté sur certaines entités de ma couche "building" (polygone) un numéro sous forme d'étiquette. Elle s'affiche sans problème à petite échelle. Mais dès que je dézoome elles disparaissent.
J'aimerais que mon étiquette recouvre et déborde de mon polygone lorsque je dézoome afin de voir mon étiquette. C'est possible ?
Merci d'avance.
----------------------------------------
Ce message est accompagné de fichiers, pour les télécharger, suivre le lien ci-dessous.
----------------------------------------
Le message est situé https://georezo.net/forum/viewtopic.php?pid=362453#p362453
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 : Jérôme KEREBEL
----------------------------------------
Bonjour à tous.
Je viens vers vous car je tourne un peu en rond sur ma problématique.
Sur Postgis, je recherche à sélectionner les x premières entités dont la sommes des longueurs représente 10% de la totalité des longueurs…
J’ai tenté pour commencé:
SELECT id FROM ma_table WHERE sum(ma_table.longueur)=100
ou encore
SELECT id FROM ma_table LIMIT sum(ma_table.longueur)=100
Mais les fonctions d’agrégats ne sont autorisées dans WHERE ni dans LIMIT.
Auriez-vous une piste, une alternative SVP ?
Jérôme
----------------------------------------
Le message est situé https://georezo.net/forum/viewtopic.php?pid=362450#p362450
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