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

Printemps des cartes 2024

#1 Fri 11 October 2013 17:06

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

PostgreSQL/PostGis/QGIS : requête sur plusieurs tables géographiques

Bonjour,

J'utilise une base de données cartographique sur PostgreSQL 9.2 avec PostGis (PGadminIII) et Qgis.

Mon problème est le suivant : toutes mes requêtes fonctionnent tant qu'elles ne concernent qu'une seule table géographique (avec un champ gid et un geom) et je peux ouvrir les vues correspondantes sous QGis.

Mais orsque je veux faire une vue croisant des données carto existant sur plusieurs tables différentes (par exemple les parcelles cadastrales et des points de relevés), avec les champs gid et geom renommés afin qu'ils n'existent pas en double, Qgis la considère comme 2 vues distinctes et je ne peux pas les ouvrir.

Y'a t'il quelque chose à faire pour pouvoir croiser des tables géographiques? Ou bien est-ce impossible?


Merci d'avance

Hors ligne

 

#2 Wed 16 October 2013 15:22

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

Re: PostgreSQL/PostGis/QGIS : requête sur plusieurs tables géographiques

Je m'aperçois aujourd'hui que ce problème vient peut être de ma requête et/ou de mes tables : aujourd'hui en tentant une requête sur plusieurs tables dont l'une est spatiale, ma requête fonctionne dans Query, mais impossible de l'utiliser pour créer une vue.
Le problème est que ma requête commence par

SELECT int4(row_number() OVER ()) AS  id,

Et j'ai un message de la forme ERREUR : ne peut pas modifier le nom de la colonne "Cle" en "id"

Ce champ est une clé primaire, j'ai réessayé en enlevant la contrainte mais ça ne change rien : cette requête fonctionne sur d'autres tables mais pas celle-là...

une idée?

Merci d'avance de votre aide!

Hors ligne

 

#3 Wed 16 October 2013 16:35

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

Re: PostgreSQL/PostGis/QGIS : requête sur plusieurs tables géographiques

Bonjour

Afin de bien comprendre. Cette requête vous la faite sur une vue déjà existante ?
Pour ma part j'ai ce message d'erreur lorsque je tente de modifier un nom de champ (voir en supprimer) dans une requête de création de vue dans la fenêtre de requête sql.

Si c'est le cas essayé de supprimer votre vue et de relancer votre requête CREATE OR REPLACE VIEW....

Sinon pouvez-vous nous en dire plus sur cette requête : quelles tables sont concernées ? la syntaxe de la requête...

Cordialement.

Hors ligne

 

#4 Wed 16 October 2013 17:06

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

Re: PostgreSQL/PostGis/QGIS : requête sur plusieurs tables géographiques

Bonsoir,

merci bien, effectivement en recréant une nouvelle vue avec la même requête ça fonctionne!

Me reste le souci des vues comportant plusieurs champs geom et gid que je n'arrive pas à importer sur QGis, bien que les vues fonctionnent, mais peut être qu'il ne peut tout simplement pas les gérer?

Cordialement

Hors ligne

 

#5 Wed 16 October 2013 18:53

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

Re: PostgreSQL/PostGis/QGIS : requête sur plusieurs tables géographiques

Bonsoir,

Oui effectivement, une table ou vue avec plusieurs colonnes géographiques est difficilement affichable par les outils SIG.
En terme de modèle, que représentent ces deux colonnes d'objets géographiques ?

Nicolas

Hors ligne

 

#6 Thu 17 October 2013 07:53

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

Re: PostgreSQL/PostGis/QGIS : requête sur plusieurs tables géographiques

Bonjour,

je ne suis pas sûre de comprendre votre question, mais ces colonnes d'objets géographiques correspondent pour l'une à des multipolygones (parcelles) et pour l'autre à des points (relevés) sachant que j'ai importé ces données depuis des shapefile, et que les shapefile d'origine ont le même SRC.
Sur Qgis ces couches se superposent parfaitement et je peux faire une intersection ; c'est le seul moyen que j'aie trouvé pour le moment pour recouper mes données.

Si je n'ai pas répondu à votre question n'hésitez pas à préciser (je débute en BDD et avec Qgis...)

Merci

Hors ligne

 

#7 Thu 17 October 2013 11:33

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

Re: PostgreSQL/PostGis/QGIS : requête sur plusieurs tables géographiques

Bonjour,

En général, une "couche" géographique (shapefile, table dans une base de données, etc.) représente un objet de la réalité. Elle modélise cet objet.
Par exemple votre shapefile des parcelles contient des attributs dont un, la géometrie, représente la position et la forme de la parcelle sur la terre.

En créant une couche avec deux colonnes géographiques, quel type d'objet voulez-vous représenter ?
En fait, que souhaitez-vous obtenir en croisant les deux couches, quelles sont les informations qui vous sont importantes lors de ce croisement ?

Nicolas

Hors ligne

 

#8 Thu 17 October 2013 14:33

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

Re: PostgreSQL/PostGis/QGIS : requête sur plusieurs tables géographiques

En fait ce qui m’intéresserait serait que la vue créé les deux couches, polygones et points, afin qu'on puisse les superposer une fois dans Qgis.
Là le problème est que la vue, une fois importée dans QGis, apparait bien sur 2 couches différentes, mais pas moyen de charger l'une ou l'autre : QGis plante systématiquement.
Si ce n'est pas possible, je vais conserver le système D que j'utilise, c'est à dire faire à chaque fois 2 requêtes donnant 2 vues que je superpose par la suite.

Merci beaucoup pour votre aide!

Bien cordialement

Hors ligne

 

#9 Thu 17 October 2013 15:10

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

Re: PostgreSQL/PostGis/QGIS : requête sur plusieurs tables géographiques

Ce n'est pas du système D, mais la bonne facon de faire wink :

Créez autant de vues que de couches qui sont utiles a votre métier (une vue = une couche = une colonne geo), puis ajoutez ces couches dans QGis pour faire une carte.
Il y a peu de cas où le stockage de deux colonnes géographique dans une meme table ou vue est pertinent. Ca peut etre utile pour des questions de performance d'affichage ou de traitement, mais rarement pour modéliser une réalité géographique.

Nicolas

Hors ligne

 

#10 Thu 17 October 2013 15:32

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

Re: PostgreSQL/PostGis/QGIS : requête sur plusieurs tables géographiques

Bonjour,
QGIS ne peut pas afficher dans une table (pour un champ geom) des objets qui soient polygones, lignes ou points (et je dirais, c'est tant mieux mais ce n'est que mon avis:)). C'est forcément un des trois (+ dérivés). Ainsi, si toutes vos géométries sont stockées dans un seul champ, QGIS ne pourra vous les afficher toutes. De même, si elles sont dans des colonnes géométriques différentes, il faudra a priori, afficher deux tables différentes, chacune avec son champ geom.
Si vous voulez donc superposer les parcelles et les points de relevés, il vous faudra préférentiellement afficher deux tables. Maintenant, vous n'avez pas forcément besoin de créer des vues réelles dans votre base postgis avant de les utiliser dans QGIS (oin peut à ce rythme se retrouver avec beaucoup de vues dans la base, selon ce que l'on fait); Dans QGIS vous pouvez appeler les tables mères et :
- soit dans les propriétés de la couche, onglet général faire une requête sur les champs de la couche pour ne conserver que les entités qui vous intéressent
- soit au moment de l'insertion, si vous utiliser "Ajouter une couche Postgis", faire une requête sql (je crois que ça se limite aussi aux champs)
- soit, si vous utilisez DBManager (ou autre?), faire une requête SQL préalable avec utilisation des fonctions spatiales de Postgis.

Hors ligne

 

Pied de page des forums

Powered by FluxBB