Message posté par : GlaDal
----------------------------------------
Bonjour,
Je ne suis pas sûr de mon coup car je n'utilise pas cette extension mais Value tool semble faire ce que vous souhaitez.
----------------------------------------
Le message est situé https://georezo.net/forum/viewtopic.php?pid=343535#p343535
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 : GOLDOSAM (sambbs(a)free.fr)
----------------------------------------
Re,
Pour la jointure, vous faites un clic droit dans le répertoire de la couche sur votre BdD -> Propriétés -> Icône Jointure
Bonne journée,
-----------------
GlaDal écrit :
Bonjour,
Je cherche à ajouter en entrée le chargement d'un tableur Excel (ou csv peu importe) depuis l'explorateur Windows pour pouvoir faire une jointure avec une couche vecteur.
Je n'arrive pas à trouver cette possibilité dans le modeleur.
De plus, si y a un site miracle qui explique bien la manipulation du modeleur, je suis preneur.
Il existe de nombreuses vidéos et quelques docs pdf sur Internet mais ce sont très souvent les mêmes types d'exemple (buffer).
D'avance merci, Gladal
-----------------
----------------------------------------
Le message est situé https://georezo.net/forum/viewtopic.php?pid=333021#p333021
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 : jh_kd
----------------------------------------
Bon,
Il semblerait que je ne peux attacher qu'un seul fichier par message.
Donc le deuxième jpg avec gras et "substitution" de code (= les 2 lettres descriptives) n'a pas été joint.
Et sauf erreur sur ce nouveau message je n'arrive pas à attacher mon 2ème jpg.
Il faut me dire comment ou me croire sur parole!
Cordialement, JH
----------------------------------------
Le message est situé https://georezo.net/forum/viewtopic.php?pid=343455#p343455
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 : F.Duval
----------------------------------------
Bonjour,
Je n'ai trouvé de résultat en faisant des recherches sur les listes déroulantes non limitante (ou non exhaustive). Peut être que ça n'existe pas sous QGIS, il me semble qu'Excell le fait.
Sur mon projet, j'arrive à peu près à ce que je veux avec des listes déroulantes et des valeurs relationnelles, mais pour parfaire la chose j'aurai souhaité remplir un champ avec une liste non limitante.
Exemple explicatif :
Je rentre dans une base de donnée des infos sur des réseaux enterrés : les concessionnaires ENEDIS, GRDF, ORANGE, et bien d'autres vont revenir très souvent donc j'aurai un gain de temps à les mettre sous forme de liste, mais d'autres concessionnaires, le Syndicat des Energies de tel département, la Commune de Machin-Chose, etc... Ceux là reviendraient dans beaucoup moins de mes dossiers (traités séparément), voir une seule fois. Donc il faudrait pouvoir avoir un dernier choix dans la liste déroulante, comme ça se fait avec "NULL", mais qui soit modifiable pour que je puisse taper le nom que je souhaite.
Si quelqu'un à une idée ? D'avance merci.
Je retourne chercher :)
F.DUVAL
----------------------------------------
Le message est situé https://georezo.net/forum/viewtopic.php?pid=341808#p341808
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 : Glo
----------------------------------------
Bonjour,
Est-ce que vraiment personne n'a d'idée sur ce copier-coller ?
Je suis en train de le faire en méthode ultrabidouille là, j'utilise quatre logiciels différents (véridique !) à la suite, ça marche assez mal et c'est hyper laborieux... et tout à fait ridicule, soyons honnêtes :)
Si des gens parmi vous sont sûrs que cette fonction (qui paraitrait basique) n'existe pas, pouvez-vous me le dire aussi s'il vous plait ? Comme ça j'irai à l'occasion poster un message sur les hubs de développement pour suggérer qu'à l'avenir ce simple copier-coller soit possible.
Merci et bonne journée,
----------------------------------------
Le message est situé https://georezo.net/forum/viewtopic.php?pid=343498#p343498
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 : Salomeee
----------------------------------------
Bonjour,
J'ai un problème avec la symbologie d'une de mes couches. Je souhaiterais avoir une symbologie "remplissage simple" avec des couleurs pour mon champ Essence ainsi qu'une symbologie hachuré pour mon champ Type de reboisement (qu'elles puissent se superposer).
J'arrive à le faire avec l'ensemble de règles. Cela fonctionne avec un faible nombre d'Essence ainsi que le Type de reboisement, cependant avec de nombreuses Essences ainsi que le Type de reboisement plus rien ne s'affiche.
J'ai beau chercher sur internet, je ne trouve aucune solution à mon problème.
Merci pour votre aide.
Salomé
----------------------------------------
Le message est situé https://georezo.net/forum/viewtopic.php?pid=343493#p343493
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 : mickael91
----------------------------------------
Bonjour,
Je dois à partir d'un fichier ods avec des données geomloc, géolocaliser des bâtis.
Je ne l'ai jamais fait, j'ai besoin de votre aide.
Merci d'avance.
Michel.
----------------------------------------
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=343492#p343492
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 : Baptiste.Pignol
----------------------------------------
Bonjour à tous,
Est il possible de réaliser plusieurs sous dossiers dans les expressions de l'utilisateur. J'ai beaucoup d'expressions et j'aimerais les classer dans des dossiers pour y avoir accès plus rapidement.
Merci d'avance,
Cordialement.
----------------------------------------
Le message est situé https://georezo.net/forum/viewtopic.php?pid=343482#p343482
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)
----------------------------------------
Bonsoir,
Une solution testée ci-dessous.
La fin est "pompée" du fichier PostGISExecuteAndLoadSQL.py dans les scripts processing fournis avec QGIS
-----------------
Code :
from qgis.PyQt.QtCore import QCoreApplication
from qgis.core import (QgsProcessing,
QgsProcessingAlgorithm,
QgsProcessingException,
QgsProcessingContext,
QgsProcessingParameterString,
QgsProcessingOutputVectorLayer,
QgsProcessingOutputString,
QgsProcessingParameterNumber,
QgsVectorLayer,
QgsDataSourceUri,
QgsProject)
from qgis import processing
class ExampleProcessingAlgorithm(QgsProcessingAlgorithm):
"""
This is an example algorithm that takes string inputs,
to provide to DB connexion
"""
def tr(self, string):
"""
Returns a translatable string with the self.tr() function.
"""
return QCoreApplication.translate('Processing', string)
def createInstance(self):
# Must return a new copy of your algorithm.
return ExampleProcessingAlgorithm()
def name(self):
"""
Returns the unique algorithm name.
"""
return 'postgresconnexion'
def displayName(self):
"""
Returns the translated algorithm name.
"""
return self.tr('Return PostgreSQL layer')
def group(self):
"""
Returns the name of the group this algorithm belongs to.
"""
return self.tr('Example scripts')
def groupId(self):
"""
Returns the unique ID of the group this algorithm belongs
to.
"""
return 'examplescripts'
def shortHelpString(self):
"""
Returns a localised short help string for the algorithm.
"""
return self.tr('Example algorithm short description')
def initAlgorithm(self, config=None):
"""
Here we define the inputs and outputs of the algorithm.
"""
# 'INPUT' is the recommended name for the main input
# parameter.
self.addParameter(
QgsProcessingParameterString(
'HOST',
self.tr('Host'),
defaultValue = 'localhost'
)
)
self.addParameter(
QgsProcessingParameterNumber(
'PORT',
self.tr('Port'),
defaultValue = 5432
)
)
self.addParameter(
QgsProcessingParameterString(
'USERNAME',
self.tr('Username'),
)
)
# 'OUTPUT' is the recommended name for the main output
# parameter.
self.addParameter(
QgsProcessingParameterString(
'PASSWORD',
self.tr('Password')
)
)
self.addParameter(
QgsProcessingParameterString(
'DATABASE',
self.tr('Database')
)
)
self.addParameter(
QgsProcessingParameterString(
'SCHEMA',
self.tr('schema'),
defaultValue = 'public'
)
)
self.addParameter(
QgsProcessingParameterString(
'LAYERNAME',
self.tr('Layer name'),
defaultValue = 'Name of the layer'
)
)
self.addOutput(
QgsProcessingOutputVectorLayer(
'LAYER',
self.tr('Vector layer'),
QgsProcessing.TypeVectorAnyGeometry
)
)
def processAlgorithm(self, parameters, context, feedback):
"""
Here is where the processing itself takes place.
"""
# First, we get the count of features from the INPUT layer.
# This layer is defined as a QgsProcessingParameterFeatureSource
# parameter, so it is retrieved by calling
# self.parameterAsSource.
host = self.parameterAsString (parameters,
'HOST',
context)
# Retrieve the buffer distance and raster cell size numeric
# values. Since these are numeric values, they are retrieved
# using self.parameterAsDouble.
port = self.parameterAsString (parameters, 'PORT',
context)
username = self.parameterAsString (parameters, 'USERNAME',
context)
password = self.parameterAsString (parameters, 'PASSWORD',
context)
database = self.parameterAsString (parameters, 'DATABASE',
context)
schema = self.parameterAsString (parameters, 'SCHEMA', context)
layername = self.parameterAsString (parameters, 'LAYERNAME', context)
uri = QgsDataSourceUri()
uri.setConnection(host, port, database, username, password)
uri.setDataSource(schema, layername, "geom")
layer = QgsVectorLayer(uri.uri(), layername, "postgres")
if feedback.isCanceled():
return {}
if not layer.isValid():
raise QgsProcessingException(self.tr("""This layer is invalid!
Please check the PostGIS log for error messages."""))
context.temporaryLayerStore().addMapLayer(layer)
context.addLayerToLoadOnCompletion(
layer.id(),
QgsProcessingContext.LayerDetails('SQL layer',
context.project(),
'LAYER'))
# Return the results
return {'LAYER': layer.id()}
-----------------
Vous n'êtes pas obligé de passer par la définition de chaque paramètre de la base de données mais vous pouvez aussi réutiliser les connexions PostGIS existantes déjà définies en passant par QgsProcessingParameterProviderConnection (toujours en regardant le fichier PostGISExecuteAndLoadSQL.py)
Si vous souhaitez charger en une fois un ensemble de couches PostGIS en trouvant automatiquement leur nom, vous pouvez utiliser le code de https://gis.stackexchange.com/a/395994/638 (attention, pas dans le contexte d'un script processing et utilisant les connexions définies dans les connexions PostgreSQL définies dans QGIS)
Thomas
----------------------------------------
Le message est situé https://georezo.net/forum/viewtopic.php?pid=343479#p343479
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 : Caligraf (yoyolehmann(a)gmail.com)
----------------------------------------
Bonjour,
Je cherche à élaborer un script permettant de charger des couches issues d'une base de donnée PostGIS. Je n'ai pour l'instant pas réussi à intégrer la classe QgsDataSourceUri() comme je l'esperais. En effet, je tombe sur l'erreur suivante : TypeError: invalid result from LoadLayer.processAlgorithm(), NoneType cannot be converted to a C/C++ QVariantMap in this context
Voici le code en question :
-----------------
Code :
from qgis.PyQt.QtCore import QCoreApplication
from qgis.core import (QgsProcessing,
QgsProcessingAlgorithm,
QgsProcessingException,
QgsProcessingParameterString,
QgsProcessingOutputString,
QgsProcessingParameterNumber,
QgsVectorLayer,
QgsDataSourceUri,
QgsProject)
from qgis import processing
from qgis.utils import *
class LoadLayer(QgsProcessingAlgorithm):
"""
Charge une couche vectorielle depuis la base de donnée PostGIS
"""
def tr(self, string):
"""
Returns a translatable string with the self.tr() function.
"""
return QCoreApplication.translate('Processing', string)
def createInstance(self):
# Must return a new copy of your algorithm.
return LoadLayer()
def name(self):
"""
Returns the unique algorithm name.
"""
return 'load_post_gis_layer'
def displayName(self):
"""
Returns the translated algorithm name.
"""
return self.tr('Load layers from PostGIS')
def group(self):
"""
Returns the name of the group this algorithm belongs to.
"""
return self.tr('Load single vector layer')
def groupId(self):
"""
Returns the unique ID of the group this algorithm belongs
to.
"""
return 'load_single_vector_layer'
def shortHelpString(self):
"""
Returns a localised short help string for the algorithm.
"""
return self.tr('Charge les couches depuis PostGIS')
def initAlgorithm(self, config=None):
"""
Here we define the inputs and outputs of the algorithm.
"""
self.addParameter(
QgsProcessingParameterString(
'HOST',
self.tr('Host'),
defaultValue = '172.16.0.116'
)
)
self.addParameter(
QgsProcessingParameterNumber(
'PORT',
self.tr('Port'),
defaultValue = 5432
)
)
self.addParameter(
QgsProcessingParameterString(
'USERNAME',
self.tr('Username'),
defaultValue = 'xyz'
)
)
self.addParameter(
QgsProcessingParameterString(
'PASSWORD',
self.tr('Password'),
defaultValue = '***'
)
)
self.addParameter(
QgsProcessingParameterString(
'DATABASE',
self.tr('Database'),
defaultValue = 'abc'
)
)
self.addParameter(
QgsProcessingParameterString(
'SCHEMA',
self.tr('schema'),
defaultValue = 'schema'
)
)
self.addParameter(
QgsProcessingParameterString(
'LAYERNAME',
self.tr('Layer name'),
defaultValue = 'Name of the layer'
)
)
self.addOutput(
QgsProcessingOutputString(
'CONNEXIONSTR',
self.tr('Imported layer')
)
)
def processAlgorithm(self, parameters, context, feedback):
host = self.parameterAsString (parameters,'HOST', context)
port = self.parameterAsString (parameters, 'PORT', context)
username = self.parameterAsString (parameters, 'USERNAME', context)
password = self.parameterAsString (parameters, 'PASSWORD',context)
database = self.parameterAsString (parameters, 'DATABASE', context)
schema = self.parameterAsString (parameters, 'SCHEMA', context)
layername = self.parameterAsString (parameters, 'LAYERNAME', context)
uri = QgsDataSourceUri()
uri.setConnection(host, port, database, username, password)
uri.setDataSource(schema, layername, "geom")
layer = QgsVectorLayer(uri.uri(), layername, "postgres")
if feedback.isCanceled():
return {}
# Return the results
return {'CONNEXIONSTR': layer}
-----------------
En poussant mes recherches, j'ai également étudié la possibilité d'ajouter une ligne de connexion, récupérant les infos que l'on peut retrouver en cliquant sur une couche importée dans "propriétés", en m'inspirant de cette discussion :
https://stackoverflow.com/questions/3582552/what-is-the-format-for-the-post…
-----------------
Code :
return {'CONNEXIONSTR' : f"postgresql://{user}:{password}@{host}:{port}/{database}"}
-----------------
Toutefois ce code est incomplet, il manque des informations normalement délivrée par la méthode setDataSource ( nom de la table, la géométrie et "postgres" ) mais j'ignore le formatage nécessaire...
Bref, je n'ai pour l'instant pas de solution concrète, si ce n'est éventuellement de passer par un module tiers tel que sqlalchemy par exemple.
----------------------------------------
Le message est situé https://georezo.net/forum/viewtopic.php?pid=343471#p343471
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