Pages: 1
- Sujet précédent - PostGis requete 1 to n avec entités sans correspondances. - Sujet suivant
#1 Thu 21 March 2013 10:00
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
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: 1554
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
#4 Thu 21 March 2013 14:14
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: 1554
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
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: 1554
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: 3199
- 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
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
Hors ligne
#10 Fri 22 March 2013 12:01
- ChristopheV
- Membre
- Lieu: Ajaccio
- Date d'inscription: 7 Sep 2005
- Messages: 3199
- 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
Pages: 1
- Sujet précédent - PostGis requete 1 to n avec entités sans correspondances. - Sujet suivant