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

Rencontres QGIS 2025

L'appel à participation est ouvert jusqu'au 19 janvier 2025!

#1 Thu 05 September 2013 14:38

Shetty
Juste Inscrit !
Date d'inscription: 5 Sep 2013
Messages: 9

Import d'une vue de PostGis dans Qgis

Bonjour,

je débute avec postgis/qgis, que j'utilise via PGAdminIII.

J'ai un problème avec la création de mes vues : une fois ma requête créée et testée, je créé une vue, comprenant un champ gid et un champ geom.
Le problème est que, une fois dans QGis, cette vue n'apparait pas dans la liste des tables avec géométrie. Dans PGAdmin, elle n'est pas non plus référencée dans la vue geography_columns.

Je ne sais pas si ma question est très claire, mais j'ai l'impression d'avoir loupé quelque chose à la création de la vue, qui me permettrait de la considérer comme contenant des objets géographiques et donc de visualiser la carte avec QGis.

Je n'ai rien trouvé de vraiment simple sur l'utilisation des vues avec Qgis/postGis, je suis donc preneuse de toute documentation, et si il vous faut plus d'infos pour m'aider n'hésitez pas...

Merci

Hors ligne

 

#2 Thu 05 September 2013 16:49

JP LLORENS
Participant assidu
Date d'inscription: 12 Nov 2008
Messages: 231

Re: Import d'une vue de PostGis dans Qgis

Bonjour.
Il faut que tu références à la main ta vue (comme une  table ) dans la table geography_column en prenant soin de mettre le bon srid et le bon type (polygon, linestring, multilinestring...)
JPL

Hors ligne

 

#3 Sun 08 September 2013 03:03

SANTANNA
Moderateur
Lieu: Angers
Date d'inscription: 18 Jan 2008
Messages: 3945

Re: Import d'une vue de PostGis dans Qgis

Bonjour, quelle version de postgis as-tu? 1.5 ou 2.0? As-tu regardé dans la table geometry_columns, sinon?
Arrives-tu à ouvrir la(les) table(s) postgis (dont tu extraies la vue) sous qgis? et si oui, peut-on avoir la requête de création de ta vue?

Hors ligne

 

#4 Mon 09 September 2013 09:45

Shetty
Juste Inscrit !
Date d'inscription: 5 Sep 2013
Messages: 9

Re: Import d'une vue de PostGis dans Qgis

Bonjour,

merci pour vos réponses.
J'utilise PostGIS 1.5. Mes requêtes n'apparaissent pas dans la table geometry_columns non plus...
Je peux ouvrir les tables postgis (ici Table1) sous qgis sans problème et afficher les cartes.
Voilà la requête :

Code:

 
SELECT "Table1".gid, "Table1".lib, "Table1".aire, "Table1".code, "Table1".cd_sig, "Table1".the_geom
   FROM "Table1"
  WHERE "Table1".code::text = '40'::text;

N'y a t-il vraiment aucun autre moyen que de renseigner la table geography_columns à la main?
Je peux le faire, mais les personnes qui vont utiliser ma BdD après moi ne savent pas se servir du logiciel, cette opération va complexifier l'utilisation de la base...

Merci

Hors ligne

 

#5 Mon 09 September 2013 12:28

Nicolas Ribot
Membre
Lieu: Toulouse
Date d'inscription: 9 Sep 2005
Messages: 1554

Re: Import d'une vue de PostGis dans Qgis

Bonjour,

Vous avez plusieurs solutions:

• Vous pouvez appeler des fonctions de gestion de Postgis pour renseigner automatiquement la table geometry_columns: Populate_Geometry_Columns (http://postgis.net/docs/manual-1.5/Popu … lumns.html), soit après chaque création de vue, à la main, soit de facon automatique par une table planifiée.

• Vous pouvez migrer sur Postgis 2.1, où la gestion des colonnes géo est automatique.

Nicolas

Hors ligne

 

#6 Mon 09 September 2013 19:54

SANTANNA
Moderateur
Lieu: Angers
Date d'inscription: 18 Jan 2008
Messages: 3945

Re: Import d'une vue de PostGis dans Qgis

Bonjour,

Je peux le faire, mais les personnes qui vont utiliser ma BdD après moi ne savent pas se servir du logiciel, cette opération va complexifier l'utilisation de la base...


Pas du tout! une fois que votre colonne géométrique est référencée comme telle, c'est bon, c'est intégré dans votre base. Il sera accessible via qgis comme n'importe quelle autre table. Les utilisateurs (notamment sous QGiS) n'auront donc aucune action à mener sur ce point.

Mais si vous êtes au début de Postgis et qu'il n'y a pas de contrainte particulière liée à ce qui existe déjà dans votre boîte, pourquoi ne pas directement aller sur une version plus récente, avec plus de fonctions?

Hors ligne

 

#7 Tue 24 September 2013 08:20

Shetty
Juste Inscrit !
Date d'inscription: 5 Sep 2013
Messages: 9

Re: Import d'une vue de PostGis dans Qgis

Bonjour,

merci pour cette réponse, je vais tenter de migrer sur Postgis 2.1.

Merci à tou.te.s

Hors ligne

 

#8 Wed 16 October 2013 12:10

Benoit91
Participant assidu
Date d'inscription: 2 Oct 2008
Messages: 263

Re: Import d'une vue de PostGis dans Qgis

Bonjour

J'ai un peu le même problème mais pas tout à fait. Je m'explique:

J'ai une table postgis "om_bornes_app_volontaire" qui localise toutes les colonnes d'apport volontaires (verres, textile, journaux) sur notre territoire.
infos de la table (une partie des infos)
gid         id_point_eco         commune             nature          geom
1            PE-235-34            Fleury                  verre
2            PE-235-34            Fleury                  textile
3            PE-103-1              Bretigny              verre
4            PE-549-25            Ste Genevieve     journaux

Donc avec cette table, je peux avoir plusieurs colonnes d'apport volontaire sur un même espace (du point de vue carto les points ne se superposent pas)

J'ai créer une vue "vue_point_ecolo" qui me permet de synthétiser cette table en groupant par 'id_point_eco' afin d'avoir

id_point_eco         commune             nature          geom
PE-235-34            Fleury                  verre,textile
PE-103-1              Bretigny              verre
PE-549-25            Ste Genevieve     journaux

Le but de cette vue est de me permettre de cartographier chaque lieux d'apport volontaires avec une symbologie différente qui renseigne directement sur la nature de la ou les colonnes présentes.(voir image jointe)

Pour ce faire j'ai créer la requête suivante:

Code:

CREATE OR REPLACE VIEW dechets_om.vue_point_ecolo AS 
SELECT tab_A.id_point_eco, tab_A.commune, 
    tab_A.adresse, string_agg(tab_B.nature, '-') AS nature_pt, 
    tab_A.geom
   FROM ( SELECT om_bornes_app_volontaire.id_point_eco, 
            om_bornes_app_volontaire.commune, om_bornes_app_volontaire.adresse, 
            st_centroid(st_union(om_bornes_app_volontaire.geom)) AS geom
           FROM dechets_om.om_bornes_app_volontaire
          GROUP BY om_bornes_app_volontaire.id_point_eco, om_bornes_app_volontaire.commune, om_bornes_app_volontaire.adresse) AS tab_A
   LEFT JOIN ( SELECT om_bornes_app_volontaire.id_point_eco, 
            om_bornes_app_volontaire.nature
           FROM dechets_om.om_bornes_app_volontaire
          GROUP BY om_bornes_app_volontaire.id_point_eco, om_bornes_app_volontaire.nature) tab_B ON tab_a.id_point_eco = tab_B.id_point_eco
  GROUP BY tab_A.id_point_eco, tab_A.commune, tab_A.adresse, tab_A.geom;

Dans pgadmin, pas de problème j'ai bien ma vue mais lorsque je veux l'ouvrir sous QGIS j'ai ce message d'erreur "la couche n'est pas une couche valide et ne peut être ajoutée à la carte"


Par contre si je vais cette vue test:

Code:

CREATE OR REPLACE VIEW dechets_om.vue_test AS
SELECT id_point_eco, st_centroid(st_union(geom)) AS the_geom FROM dechets_om.om_bornes_app_volontaire GROUP BY id_point_eco

Je peux l'importer dans QGIS.

Ces deux vues s'affichent dans la vue "geometry columns" avec en type de geometry la valeur "geometry".

J'avoue ne pas comprendre où çà bloque...pourquoi ma vue test s'affiche et pas l'autre.

Pour info, je travail avec QGIS 2.0.1, postgresql 9.2 et postgis 2.

Par avance merci de votre aide.

Dernière modification par Benoit91 (Wed 16 October 2013 12:12)


Fichier(s) joint(s) :
Pour accéder aux fichiers vous devez vous inscrire.

Hors ligne

 

#9 Wed 16 October 2013 12:58

Nicolas Ribot
Membre
Lieu: Toulouse
Date d'inscription: 9 Sep 2005
Messages: 1554

Re: Import d'une vue de PostGis dans Qgis

Bonjour,

Peut etre une difference dans la structure des deux vues (identifiant non unique ou type de données que QGIS n'aime pas comme identifiant ?)

Quelles sont les structures de ces deux vues ? (\d+ <vue> dans psql, par exemple)

Nicolas

Hors ligne

 

#10 Wed 16 October 2013 13:58

Benoit91
Participant assidu
Date d'inscription: 2 Oct 2008
Messages: 263

Re: Import d'une vue de PostGis dans Qgis

Merci pour ce premier retour rapide.

Pour les 2 vues, je considère comme identifiant unique le champ "id_point_eco". Il n'y a pas de doublon d'identifiant dans le résultat des vues.
En premier j'ai crée ma vue "vue_point_ecolo" (la plus complète), comme j'ai eu le message d'erreur QGIS, j'ai voulu tester une requête plus simple (en groupant simplement le id_point_eco et la géométrie).

voir images jointes pour la structure.

Dernière modification par Benoit91 (Wed 16 October 2013 13:59)


Fichier(s) joint(s) :
Pour accéder aux fichiers vous devez vous inscrire.

Hors ligne

 

#11 Wed 16 October 2013 14:11

Benoit91
Participant assidu
Date d'inscription: 2 Oct 2008
Messages: 263

Re: Import d'une vue de PostGis dans Qgis

Pour completer:

Sous QGIS 2.0.1, j'importe mes vues via la fonction "parcourir" (celle qui permet d'avoir l’arborescence des fichiers).
Je viens de remarquer que lorsque je fais "couche"=> "ajouter une couche postgis" le champ considéré comme primary key est mon champ "nature_pt" (voir image jointe)

Si je le change avec mon champ "id_point_eco" je peux charger ma vue "vue_point_ecolo".
D'où ma question, comment forcer le primary key sur un champ spécifique de la vue ?

Dernière modification par Benoit91 (Wed 16 October 2013 14:11)


Fichier(s) joint(s) :
Pour accéder aux fichiers vous devez vous inscrire.

Hors ligne

 

#12 Wed 16 October 2013 14:34

florent vanhoutte
Participant actif
Lieu: Compiègne
Date d'inscription: 27 Apr 2006
Messages: 110

Re: Import d'une vue de PostGis dans Qgis

Bonjour,

En espérant répondre à votre problématique, Qgis implique une contrainte technique sur les vues postgis en imposant la présence d'un champ de type serial (int4) comme identifiant. A défaut, il prend un champ de la table source et là, au petit bonheur la chance. Soit les valeurs de ce champ respectent le principe d'unicité et dans ce cas, la vue est dispo en chargement, sinon pas de chargement possible dans qgis.

A voir du côté de la v2.1 de postgis si une parade est possible.

source http://docs.qgis.org/1.8/fr/docs/user_m … _data.html

Cordialement

FV

Dernière modification par florent vanhoutte (Wed 16 October 2013 14:35)


1/2 décision = bordel²

Hors ligne

 

#13 Wed 16 October 2013 14:53

Benoit91
Participant assidu
Date d'inscription: 2 Oct 2008
Messages: 263

Re: Import d'une vue de PostGis dans Qgis

Merci pour ces réponses, mais je viens de trouver une solution.

Effectivement je vois que QGIS prend un champ au hasard.
Dans ma requête de création de vue j'ai donc intégré la fonction row number() over () afin d'avoir un identfiant en integer

Voici la requête:

Code:

CREATE OR REPLACE VIEW dechets_om.vue_point_ecolo AS 
SELECT row_number()OVER(ORDER BY tab_A.id_point_eco) as gid, tab_A.id_point_eco, tab_A.commune, 
    tab_A.adresse, string_agg(tab_B.nature, '-') AS nature_pt, 
    tab_A.geom
   FROM ( SELECT om_bornes_app_volontaire.id_point_eco, 
            om_bornes_app_volontaire.commune, om_bornes_app_volontaire.adresse, 
            st_centroid(st_union(om_bornes_app_volontaire.geom)) AS geom
           FROM dechets_om.om_bornes_app_volontaire
          GROUP BY om_bornes_app_volontaire.id_point_eco, om_bornes_app_volontaire.commune, om_bornes_app_volontaire.adresse) AS tab_A
   LEFT JOIN ( SELECT om_bornes_app_volontaire.id_point_eco, 
            om_bornes_app_volontaire.nature
           FROM dechets_om.om_bornes_app_volontaire
          GROUP BY om_bornes_app_volontaire.id_point_eco, om_bornes_app_volontaire.nature) tab_B ON tab_a.id_point_eco = tab_B.id_point_eco
  GROUP BY tab_A.id_point_eco, tab_A.commune, tab_A.adresse, tab_A.geom;

L'import s'effectue correctement.

Merci pour votre aide.

Hors ligne

 

#14 Wed 16 October 2013 15:03

florent vanhoutte
Participant actif
Lieu: Compiègne
Date d'inscription: 27 Apr 2006
Messages: 110

Re: Import d'une vue de PostGis dans Qgis

Benoit91 a écrit:

Effectivement je vois que QGIS prend un champ au hasard.


pas tout à fait il me semble, d'après mes tests, qu'il prend le premier champ par ordre alphabétique.

A creuser.

Cordialement

FV


1/2 décision = bordel²

Hors ligne

 

#15 Tue 17 March 2015 13:12

v_roux
Participant occasionnel
Date d'inscription: 21 Mar 2007
Messages: 30

Re: Import d'une vue de PostGis dans Qgis

Bonjour,

Même si le post date d'un peu... tout d'abord, merci pour l'info qui me permet enfin d'afficher mes vues (Postgis 2.0) dans QGis (2.6) et aussi pour la fonction row_number() qui me manquait depuis un moment...

Ce que je constate de mon côté, c'est que l'affichage des vues dans QGIS ne fonctionne que sous les conditions suivantes :
- la geometrie dans la table source est définie > geom type geometry(Point, 2154)
- le tout premier champ de la vue est l'identifiant en int4

D'après mes essais, QGis ne prend pour identifiant ni le premier par ordre alphabétique, ni au petit bonheur, ni le champ qui s'appelle gid, mais le tout premier champ de la liste (je suis donc obligée de reprendre toutes mes vues qui commençaient par le champ geom...) - à confirmer.

Bonne journée,

VR

Hors ligne

 

#16 Tue 17 March 2015 16:06

MathieuB
Membre du bureau
Lieu: Montpellier
Date d'inscription: 18 Jan 2006
Messages: 1233
Site web

Re: Import d'une vue de PostGis dans Qgis

Bonjour,

QGis affiche les vues spatiales quelque soit le type de géométrie. Si votre vue contient une géométrie de type non restreint (geometry(GEOMETRY,2154) alors il vous faut décocher la case "ne pas résoudre le type pour les géométries non restreintes" de l'assistant de connexion à PostGIS.

Concernant l'identifiant, vous pouvez choisir la colonne concernée lors de la sélection de la table.


Mathieu BOSSAERT
Association GeoRezo

Hors ligne

 

Pied de page des forums

Powered by FluxBB