Nous utilisons des cookies pour vous garantir la meilleure expérience sur notre site. Si vous continuez à utiliser ce dernier, nous considèrerons que vous acceptez l'utilisation des cookies. J'ai compris ! ou En savoir plus !.
banniere

Le portail francophone de la géomatique


Toujours pas inscrit ? Mot de passe oublié ?
Nom d'utilisateur    Mot de passe              Toujours pas inscrit ?   Mot de passe oublié ?

Annonce

Suite à un problème technique intervenu entre le 22 et le 23 mars, nous avons du procéder dans la soirée du 25 mars, à la restauration de la base de données du 24 mars (matinée).

En clair, nous avons perdu vos contributions et inscriptions du dimanche 24 et du lundi 25 mars.
Nous vous prions de nous excuser.

#1 Tue 12 June 2018 09:55

erwannlh
Participant occasionnel
Date d'inscription: 8 Sep 2015
Messages: 19

QGIS: probl avec QgsDataSourceURI pour script python

Bonjour tout le monde,

résumé de mon problème : "NameError: name 'QgsDataSourceUri' is not defined" quand je tente de faire un plugin pour modifier une couche sur une base de données postgres


Verison plus détaillée :

je cherche a developper un plugin QGIS qui me permettra de recuperer les noms des voies dans le cadastre pour les associer aux polylignes les plus proches.

la couche dans laquelle je veux enregistrer ces adresses se trouve sur un serveur postgres.

La partie pour recuperer l'adresse se fait bien, mais pour l'instant je n'y arrive que sur une couche enregistrée localement.

De ce que j'ai pu voir, le code pour ouvrir et modifier sous QGIS utilise "QgsDataSourceURI"

mon code ressemble a cela:


Code:

from qgis.core import *
from PyQt4.QtCore import *
from PyQt4.QtCore import QSettings
from PyQt4.QtCore import QSettings
from qgis.core import QgsVectorLayer, QgsDataSourceURI


uri = QgsDataSourceUri()
# set host name, port, database name, username and password
uri.setConnection(hote_IP, "5432", base_de_donnee, utilisateur, mot_de_passe)
# set database schema, table name, geometry column and optionally
# subset (WHERE clause)
#uri.setDataSource("public", "roads", "the_geom", "cityid = 2643")

uri.setDataSource("", sql, "geom", "", "gid")
vlayer = QgsVectorLayer(uri.uri(), zapm, "postgres")
QgsMapLayerRegistry.instance().addMapLayer(vlayer)

(c'est ce que j'ai récupéré sur le net, sur je ne sais plus quel site)


Mon probleme:

Quand je teste ce code sur Python, je prends directement une erreur  "Traceback (most recent call last):
  File "<input>", line 1, in <module>
NameError: name 'QgsDataSourceUri' is not defined"

Meme quand je tente avec uniquement les import et la ligne uri = QgsDataSourceUri(), je prends la meme erreur.


J'ai cherché sur le net ce que je trouvais sur cette erreur, mais je n'ai rien trouvé qui résolve mon problème.

Est ce un problème d'installation? une librairie que je n'aurais pas bien installée? Mon import n'est pas bon? (j'aurais très honte...)

Si quelqu'un a des idées, je suis preneur, parce que je me prends vraiment la tete la dessus.

Merci, Erwann

Hors ligne

 

#2 Tue 12 June 2018 10:43

JD
Moderateur
Date d'inscription: 8 Aug 2013
Messages: 722

Re: QGIS: probl avec QgsDataSourceURI pour script python

Bonjour,

erwannlh a écrit:

NameError: name 'QgsDataSourceUri' is not defined"


Attention à la casse :

QgsDataSourceUri est différent de QgsDataSourceURI.

La classe QgsDataSourceURI a été renommée pour la version 2.99 en QgsDataSourceUri mais je suppose que vous êtes sur une version inférieure.

Cordialement,

Dernière modification par lejedi76 (Tue 12 June 2018 10:44)

Hors ligne

 

#3 Tue 12 June 2018 12:22

erwannlh
Participant occasionnel
Date d'inscription: 8 Sep 2015
Messages: 19

Re: QGIS: probl avec QgsDataSourceURI pour script python

rhhhhhhhhhhhhhhhaaaaaaaaaaaaaaaaaaaaaaaaaaa, c'est tellement bête ^^

Merci beaucoup! smile

et oui, tu as raison, je suis en 2.18

bon, je peux avancer maintenant. encore merci smile

Hors ligne

 

Pied de page des forums

Powered by FluxBB