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 Thu 21 March 2013 10:00

loloseven
Participant assidu
Lieu: Grenoble
Date d'inscription: 5 Jan 2011
Messages: 167
Site web

PostGis requete 1 to n avec entités sans correspondances.

Bonnjour,

Je cherche à réaliser une jointure de type 1-n entre une couche SIG de parcelles et une table alphanumérique avec les propriétaires (donc une parcelle correspond à plusieurs lignes).... Je me heurte au problème suivant.


Dans le 1er cas, je parviens à démultiplier les parcelles et j'ai bien une relation 1-n avec autant de ligne de parcelles que de propriétaires.
Cependant lorsqu'il n'existe pas de correspondance entre les parcelles et la table alphanumérique, les parcelles sautent....
La requête est simplement :

SELECT * FROM parcelles_2003, resulats_2003 WHERE id_parc = a;


Dans le 2nd cas, je parviens à garder les parcelles qui n'ont pas de correspondance avec la requête SQL suivante, MAIS cela fait une jointure 1-1 à et non 1-n donc je n'ai que le premier propriétaire. :

SELECT * FROM parcelles_2003 LEFT OUTER JOIN resulats_2003 ON (parcelles_2003.id_parc = resulats_2003.a);


Vous l'aurez compris ..... je cherche donc à combiner les deux... c'est à dire à faire une relation 1-n ET garder les parcelles sans correspondances....
Si quelqu'un à une idée smile

Merci beaucoup d'avance.

Loïc

Hors ligne

 

#2 Thu 21 March 2013 10:57

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

Re: PostGis requete 1 to n avec entités sans correspondances.

Bonjour,

Etes-vous sur que le lien parcelles_2003.id_parc = resulats_2003.a soit le bon ?

Votre requete avec un left join est bonne pour obtenir ce que vous voulez: toutes les parcelles de la table parcelles_2003 avec toutes les correspondances dans la table resultats_2003.

Nicolas

Hors ligne

 

#3 Thu 21 March 2013 13:57

loloseven
Participant assidu
Lieu: Grenoble
Date d'inscription: 5 Jan 2011
Messages: 167
Site web

Re: PostGis requete 1 to n avec entités sans correspondances.

Bonjour,

Merci pour votre retour. Effectivement je m'étais trompé de champs pour le lien smile
Bonne journée.

Loïc

Hors ligne

 

#4 Thu 21 March 2013 14:14

loloseven
Participant assidu
Lieu: Grenoble
Date d'inscription: 5 Jan 2011
Messages: 167
Site web

Re: PostGis requete 1 to n avec entités sans correspondances.

Finalement mon souci n'est toujours pas réglé.
La requête

SELECT * FROM parcelles_2003 LEFT OUTER JOIN resulats_2003 ON (parcelles_2003.id_parc = resulats_2003.a);

fonctionne bien dans postgre et me donne bien le nombre de lignes attendues (9832) mais je souhaite créer un shape avec le résultat de la requête en passant par pgsql2shp...


voici la ligne de commande que je lance.

c:\Program Files\PostgreSQL\9.2\bin>pgsql2shp -f "c:\cadastre_proprietaires_2003" h- localhost -p5432 -P XXXX -u postgres postgis "SELECT * FROM parcelles_2003 LEFT OUTER JOIN resultats_2003 on (parcelles_2003.id_parc = resultats_2003.abc);

et là le résultat n'est pas le même que dans postgres, j'ai bien une couche crée mais avec deux parcelles manquantes, précisement celles qui n'ont pas de correspondance dans les tables alphanumeriques...

Avez vous une idée du pourquoi ?
Merci d'avance

Hors ligne

 

#5 Thu 21 March 2013 15:30

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

Re: PostGis requete 1 to n avec entités sans correspondances.

Quelle version de Postgis (select postgis_full_version(); ) et de pgsql2shp utilisez-vous ?

Etes-vous sur que les geometries ne sont pas nulles dans la table parcelles_2003 ?

Nicolas

Hors ligne

 

#6 Thu 21 March 2013 15:57

loloseven
Participant assidu
Lieu: Grenoble
Date d'inscription: 5 Jan 2011
Messages: 167
Site web

Re: PostGis requete 1 to n avec entités sans correspondances.

La version de Postgis est la 2.0.1.
Mon postgres est la 9.2
La version de pgsql2shp est la 2.0.1 également

Je suppose que les géométries de la table parcelles_2003 est bonne. La colonne est remplie lorsque que je charge la table avec Qgis il ne manque aucune parcelle. ...

Hors ligne

 

#7 Thu 21 March 2013 16:40

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

Re: PostGis requete 1 to n avec entités sans correspondances.

Peut etre des geometries invalides ?

Que donne la requete:

Code:

select id_parc from parcelles_2003 where geom is null or not st_isvalid(geom);

Nicolas

Hors ligne

 

#8 Thu 21 March 2013 18:27

ChristopheV
Membre
Lieu: Ajaccio
Date d'inscription: 7 Sep 2005
Messages: 3169
Site web

Re: PostGis requete 1 to n avec entités sans correspondances.

Bonjour,

Je suppose que les géométries de la table parcelles_2003 est bonne. La colonne est remplie lorsque que je charge la table avec Qgis il ne manque aucune parcelle. ...


Que donne un export shape via QGis ?


Christophe
L'avantage d'être une île c'est d'être une terre topologiquement close

Hors ligne

 

#9 Fri 22 March 2013 10:45

loloseven
Participant assidu
Lieu: Grenoble
Date d'inscription: 5 Jan 2011
Messages: 167
Site web

Re: PostGis requete 1 to n avec entités sans correspondances.

Bonjour,

Merci, c'est la bonne solution ! J'ai fait un export dans une table postgres à partir du résultat de la requête et ensuite ouvert cette table avec PostGis.
Par contre cela n'explique pas pourquoi le LEFT JOIN ne fonctionne pas avec pqsql mais tant pis...
Merci du coup de pouce smile

Hors ligne

 

#10 Fri 22 March 2013 12:01

ChristopheV
Membre
Lieu: Ajaccio
Date d'inscription: 7 Sep 2005
Messages: 3169
Site web

Re: PostGis requete 1 to n avec entités sans correspondances.

Bonjour,

De rien.

Par contre cela n'explique pas pourquoi le LEFT JOIN ne fonctionne pas avec pqsql mais tant pis...


A l'armée on dit que chercher à comprendre c'est commencer à désobéir ... Mais mon petit doigt me dit qu'il y a qqu'un qui cherche le pourquoi, espérons qu'il trouve.


Christophe
L'avantage d'être une île c'est d'être une terre topologiquement close

Hors ligne

 

Pied de page des forums

Powered by FluxBB