Message posté par : PY Joubert
----------------------------------------
Bonjour,
Voilà, j'ai dans ma sélection plusieurs objets et je voudrais faire l'union de ces objets.
Ils peuvent être jointif ou distants (Dans ce dernier cas, un objet multi part sera créé).
Je voudrais que cet objet nouvellement créé le soit dans une couche temporaire. afin de ne pas polluer la couche initiale
Je n'ai rien trouvé dans les docs ni dans le forum
Voici ce que je pense faire :
-----------------
Code :
liste = calque.selectedFeatures()
geoms = [f.geometry() for f in liste]
g = QgsGeometry.unaryUnion(geoms)
-----------------
Mais comment aire pour que ce nouvel objet soit créé dans la couche temporaire et comment l'a créé ?
Merci de vos réponse et bonne journée
PYJ
----------------------------------------
Le message est situé https://georezo.net/forum/viewtopic.php?pid=361919#p361919
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 : Benjamin Pierrevelcin
----------------------------------------
Bonjour,
Je souhaiterais simplement ajouter des caractères en fin d'une expression avec la calculatrice de champs.
L'idée est de rajouter les caractères ".jpg" à la fin du nom de photos, pour pouvoir les ouvrir avec une action.
Merci d'avance!
Benjamin
----------------------------------------
Le message est situé https://georezo.net/forum/viewtopic.php?pid=361909#p361909
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 : myh89
----------------------------------------
Bonjour,
J'avais déjà mis un sujet récent intitulé QGIS/Python: Besoin d'aide pour un script pour sortir des cartes, mais n'ai pas eu de retour
J'ai réussi à faire un script qui fonctionne à l'intérieur de la console Qgis, je vais le joindre en bas de ce message.
Par contre lorsque je j'essaie de le lancer hors de Qgis ça ne fonctionne pas, je ne comprends pas bien ce qu'il faut appeler pour que ça fonctionne.
J'ai essayé en ouvrant un projet vierge dans Qgis et en relançant le code depuis la console Python, là j'avais un premier blocage car il ne me trouvait pas un algorithme, mais ça fonctionne (dans Qgis) maintenant en réinitialisant Processing (cf lignes 84 et suivantes du code), mais par contre ça ne fonctionne toujours pas hors de Qgis.
J'ai placé ce script Python dans le répertoire bin de Qgis, est-ce à un autre endroit qu'il faut le mettre, je ne comprends pas bien ?
Merci d'avance pour votre aide.
Cordialement,
M. Huant
Le code est ici :
-----------------
Code :
# Appel des librairies nécessaires
from qgis import processing
from qgis.core import QgsApplication, QgsProject, QgsLayerTreeGroup, QgsLayerTreeLayer, QgsExpression, QgsExpressionContext, QgsExpressionContextUtils
from qgis.utils import iface
from PyQt5.QtCore import QVariant
from datetime import datetime
from qgis.core import *
import qgis.utils
# Variables d'environnement, noms des répertoires, projets, etc
chemin_projet_source = r'C:/UsersxxxxxxL/'
nom_projet_source = r'xxxxxxxxx.qgz'
ensemble_projet_chemin = chemin_projet_source + nom_projet_source
chemin_projet_impressions_PDF = r'C:/Users/xxxxxxxxxxS/'
# NOM DES VARIABLES
#uri
#couche_source
#couche_resultat
# chemin_projet_impressions_PDF
# Initialise l'application QGIS
QgsApplication.setPrefixPath('C:/Program Files/QGIS 3.26.1', True)
app = QgsApplication([], True)
app.initQgis()
# Ouvre le bon projet Qgis
projet_source = QgsProject.instance()
projet_source.read(ensemble_projet_chemin)
# Informations de connection à la base en MySQL
uri = 'MySQL:sig,host=xxxxxxx,user=xxxxxxxt,password=xxxxxxx|layername=vxxxxxxxs'
nom_couche_source = ('xxxxxxx')
layer = QgsProject.instance().mapLayersByName('xxxxxxx')[0]
iface.setActiveLayer(layer)
couche_source = iface.activeLayer()
datajour = str(datetime.now())
datajourH = datajour[:13]
minutes = datajour[14:16]
couche_resultat = 'POQ du ' + datajourH + 'h' + minutes + '.shp'
chemin_shapefile = chemin_projet_source + couche_resultat
writer = QgsVectorFileWriter.writeAsVectorFormat(couche_source, chemin_shapefile, "UTF-8", couche_source.crs(), "ESRI Shapefile")
vlayer = QgsVectorLayer(chemin_shapefile, couche_resultat[:23], "ogr")
QgsProject.instance().addMapLayer(vlayer)
# A ce niveau la nouvelle couche POQ avec date et heure est ajoutée dans la liste des couches et devient la nouvelle active layer
nom_champ_somme = 'DISPO'
colonnes_somme = ['nb_dispo', 'nb_dispo5', 'nb_dispo_s','nb_dispo_1' ]
expression_somme = '+'.join(colonnes_somme)
contexte_expression = QgsExpressionContext()
POQ = iface.activeLayer()
contexte_expression.setFeature(POQ.getFeature(0))
expression = QgsExpression(expression_somme)
expression.prepare(contexte_expression)
POQ.dataProvider().addAttributes([QgsField(nom_champ_somme, QVariant.Int)])
POQ.updateFields()
# a cet endroit là ça a bien créé le champ DISPO
index_champ_somme = POQ.fields().indexFromName(nom_champ_somme)
POQ.startEditing()
# ca ouvre la couche en édition
for entite in POQ.getFeatures():
contexte_expression.setFeature(entite)
valeur_somme = expression.evaluate(contexte_expression)
POQ.changeAttributeValue(entite.id(), index_champ_somme, valeur_somme)
# Là il faut faire un entrée pour que que ça fasse les calculs puis ensuite
POQ.commitChanges()
# ca enregistre les changements et ferme le mode edition
# Attribuer le style qui va bien et est déjà enregistré en qml
style_existant = r'C:/Users/xxxxxxxxxx.qml'
POQ.loadNamedStyle(style_existant)
POQ.triggerRepaint()
project = QgsProject.instance()
projectLayoutManager = project.layoutManager()
layout = projectLayoutManager.layoutByName("POQ_disponibilités")
sortie = chemin_projet_impressions_PDF + couche_resultat[:23]+ '.pdf'
# ca bloque à cet endroit, ne trouvait pas l'algorithme printlayouttopdf besoin de reinitialiser les processings vu sur GIS STAck Exchange questions num 321569 et avec les mots clés qgsapplication-processingregistry-loads-providers-however-is-empty-when-called
from processing.core.Processing import Processing
proc = Processing()
proc.initialize()
processing.run("native:printlayouttopdf",{'LAYOUT':'POQ_disponibilités', 'OUTPUT': sortie})
#Ferme le projet et l'application QGIS
projet_source.clear()
#ferme bien le projet mais pas Qgis
app.exitQgis()
-----------------
----------------------------------------
Le message est situé https://georezo.net/forum/viewtopic.php?pid=361911#p361911
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 : ccam86
----------------------------------------
-----------------
olivier.eckmann écrit :
Bonjour,
Voilà le tuto depuis Excel vers QGIS L93 : https://youtu.be/9qGSyftZSVE
Olivier
-----------------
Super, merci beaucoup ça fonctionne !! ^^
----------------------------------------
Le message est situé https://georezo.net/forum/viewtopic.php?pid=361910#p361910
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 : ccam86
----------------------------------------
-----------------
olivier.eckmann écrit :
Bonjour,
Voilà le tuto depuis Excel vers QGIS L93 : https://youtu.be/9qGSyftZSVE
Olivier
-----------------
Super merci beaucoup pour la vidéo explicative.
Je fais ça dans la journée et je vous redis si c'est bon pour moi ;-)
----------------------------------------
Le message est situé https://georezo.net/forum/viewtopic.php?pid=361907#p361907
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 : Vauchey Vincent (vincent.vauchey(a)iea45.fr)
----------------------------------------
Bonjour
Je tente de faire tourner "Channel Network" mais j'ai toujours le même message d'erreur :
-----------------
Code :
Chargement des couches de résultat
Les couches suivantes n'ont pas été générées correctement.
• //192.168.1.166/cartographie/CT 1701_ICPCAR_StBenoitBonnée/Tables_IEA/Étude BV/Channel.shp
Vous pouvez vérifier le Panel de messages du journal dans la fenêtre principale de QGIS pour trouver plus d'informations à propos de l'exécution de l'algorithme.
-----------------
Une idée de ou vient le problème.
Merci
Vincent
----------------------------------------
Le message est situé https://georezo.net/forum/viewtopic.php?pid=361902#p361902
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