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 Wed 23 August 2023 11:13

image95
Participant assidu
Date d'inscription: 6 Sep 2014
Messages: 246

Postgis : Vue à partir de plusieurs tables heterogenes

Bonjour,
J'ai 5 tables postgis qui ont des types de geometries différentes(1 ponctuel, 1 lineaire, 3 surfaciques). Et également des structures  de champs différents. Ces tables partagent des champs qui renseignent sur la même information (suivi_dossier, commune,etc). Bien que le nom de ces champs ne soit pas toujours identique selon les tables.

J'aimerais pouvoir malgré tout créer une  vue qui puisse récupérer quelques champs de ces tables :  les geom, les valeurs de communes, les suivi_dossier. Celà est il possible? Sauriez vous comment je peux faire ? Merci.

Hors ligne

 

#2 Wed 23 August 2023 12:02

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

Re: Postgis : Vue à partir de plusieurs tables heterogenes

Bonjour,

Oui c'est possible, il suffit de créer une vue en listant les champs de chaque table que vous voulez, en choisissant un nom pour chaque champ, par ex

Code:

create or replace view mavue as 
   select suivi_dossier as suivi_dossier, commune as commune, geom from table1 UNION ALL
   select suividossier, comm, geom from table2 UNION ALL
   select ... from table3;

Dans une requete qui ajoute des lignes de plusieurs tables (UNION ALL), les noms des colonnes de la premiere requête definissent les noms de colonnes de la vue.
Chaque select doit définir le même nombre de colonnes ayant le meme type, vous pouvez caster certaines colonnes s'il faut en changer le type.

Une table postgis peut avoir des geom de différents types (point, ligne, polygone, etc.) mais QGIS n'aime pas ca pour l'affichage.
Des outils comme OpenJump peuvent afficher ce genre de table avec des geom composites.

(évitez de poster sur plusieurs listes le même message wink )

Nicolas

Dernière modification par Nicolas Ribot (Wed 23 August 2023 12:03)

Hors ligne

 

#3 Wed 23 August 2023 12:34

image95
Participant assidu
Date d'inscription: 6 Sep 2014
Messages: 246

Re: Postgis : Vue à partir de plusieurs tables heterogenes

Bonjour Nicolas,
Un grand merci pour votre réponse qui semble tout à fait correspondre à mon besoin. je vais tester. Concernant le style/représentation dans qgis d'une table avec des geom composites, lorsque vous dites que Qgis n'aime pas, il le gère malgré tout? Ou c'est vraiment impossible d'afficher ce genre de table ? Je serai preneur de ressources sur ce point. Je vais chercher en parallèle. Encore un grand merci.

Hors ligne

 

#4 Wed 23 August 2023 14:00

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

Re: Postgis : Vue à partir de plusieurs tables heterogenes

Concernant QGIS, je ne suis pas un spécialiste de toutes ses fonctionnalités (tellement riches) mais je ne pense pas que ce soit possible d'afficher une table/vue avec des geométries hétérogènes (hélàs).

En général, si j'ai des tables avec geom mixtes, je fais des vues par types de geom (donc le contraire de ce que vous faites) et surtout pour le debug/visualisation j'utilise OpenJump, plus proche du modele OGC qu'utilise PostGIS que QGIS (OpenJump est basé sur JTS, la lib Java portée en C++ sous le nom GEOS, qui est au coeur de Postgis)

Nicolas

Hors ligne

 

#5 Wed 23 August 2023 14:17

image95
Participant assidu
Date d'inscription: 6 Sep 2014
Messages: 246

Re: Postgis : Vue à partir de plusieurs tables heterogenes

Merci Nicolas. Je vais tester tout cela. Cela semble possible via qgis si on croit ce post :
https://gis.stackexchange.com/questions … recognized
https://github.com/qgis/QGIS/issues/43186

Je vais tester et vous ferai un retour.

Hors ligne

 

#6 Wed 23 August 2023 16:18

image95
Participant assidu
Date d'inscription: 6 Sep 2014
Messages: 246

Re: Postgis : Vue à partir de plusieurs tables heterogenes

Je me permets une dernière question. Sauriez vous comment se passe la gestion du champ identifiant unique ce cas?
Toutes mes tables sources ont 1 champ GID serial (qui pour info est clef primaire).

J'ai fait

Code:

create or replace view SCHEMA.suivi_dossier as 
select row_number() OVER (ORDER BY XXXX) as gid,

Dois je faire la meme opération de generation automatique de valeurs gid pour toutes les clauses select ?

Dernière modification par image95 (Wed 23 August 2023 16:39)

Hors ligne

 

#7 Wed 23 August 2023 17:57

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

Re: Postgis : Vue à partir de plusieurs tables heterogenes

image95 a écrit:

Je me permets une dernière question. Sauriez vous comment se passe la gestion du champ identifiant unique ce cas?
Toutes mes tables sources ont 1 champ GID serial (qui pour info est clef primaire).

J'ai fait

Code:

create or replace view SCHEMA.suivi_dossier as 
select row_number() OVER (ORDER BY XXXX) as gid,

Dois je faire la meme opération de generation automatique de valeurs gid pour toutes les clauses select ?


Il faut mieux faire une CTE avec votre requête actuelle, et dans le select final générer la colonne id uniques, par ex:

Code:

create or replace view suivi_dossier as 
with tmp as (
   select suivi_dossier, geom from table1 UNION ALL
   select suividossier, geom from table2 UNION ALL
   ...
)
select row_number() over () as gid, *
from tmp;

Nicolas

Dernière modification par Nicolas Ribot (Wed 23 August 2023 17:59)

Hors ligne

 

#8 Thu 24 August 2023 12:38

image95
Participant assidu
Date d'inscription: 6 Sep 2014
Messages: 246

Re: Postgis : Vue à partir de plusieurs tables heterogenes

Un grand merci Nicolas !
Votre proposition fonctionne très bien !

Hors ligne

 

Pied de page des forums

Powered by FluxBB