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

Printemps des cartes 2024

#1 Thu 17 July 2014 11:53

Marc_M
Juste Inscrit !
Lieu: Paris
Date d'inscription: 5 Mar 2014
Messages: 5

QGIS 2.4 : Ajout d'une couche après une requête GeoAlchemy2

Bonjour à tous,

Je travaille actuellement sur un plugin et je rencontre des difficultés quant à l'utilisation de GeoAlchemy2.

Pour résumer, j'ai une base de données au format PostgreSQL/PostGIS contenant 3 tables, dont une seule est géoréférencée (Multipoint). Je souhaiterais ajouter cette table sous la forme d'un shapefile mais en effectuant préalablement une sélection, avec un attribut présent dans une autre table. Il est donc nécessaire de faire une jointure, opération infructueuse en utilisant QgsVectorLayer() et setSubsetString()...

J'ai donc utilisé GeoAlchemy2, qui de part sa nature d'ORM, me sera bien utile pour la suite du développement. Après avoir mapper mes tables et tester que j'obtenais les bons résultats dans le terminal,  je souhaiterais que les objets sélectionnés soient ajoutés au mapCanvas en tant que couche. Et c'est là que je bloque.

Je n'ai trouvé aucun exemple concret d'une situation similaire, à part peut-être la méthode to_shape() (de Shapely) dans la documentation de GeoAlchemy2, qui n'a pas fonctionné dans mon cas.

Connaissez-vous donc une méthode pour obtenir un shapefile, à partir d'une requête GeoAlchemy2, et ainsi l'ajouter en tant que couche, ou une solution effective pour faire une requête avec jointure tout en utilisant le schéma :

Code:

uri = QgsDataSourceURI()
uri.setConnection("localhost", "5432", "...", "postgres", "...")
uri.setDataSource("public", "...", "geom")
vlayer = QgsVectorLayer(uri.uri(), "...", "postgres")
#vlayer.setSubsetString(...)
QgsMapLayerRegistry.instance().addMapLayer(vlayer)

Si vous avez besoin d'infos supplémentaires, n'hésitez-pas !

Merci !

Marc

Hors ligne

 

Pied de page des forums

Powered by FluxBB