PostgreSQL
La base de données la plus sophistiquée au monde.

Ouverture de session

Navigation

Contactez-nous

Administration du site :
"equipe chez postgresqlfr point org"

Contact presse :
"fr chez postgresql point org"

Contact association :
"bureau chez postgresqlfr point org"

Questions PostgreSQL :
 IRC :
  serveur irc.freenode.net
  canal #postgresqlfr

Recherche

Accéder aux archives

« Octobre 2008  
Lun Mar Mer Jeu Ven Sam Dim
  2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31  

Syndication

Flux XML

Sondage

Quelle est la version de PostgreSQL la plus répandue sur vos serveurs ?
8.3
10%
8.2
42%
8.1
40%
8.0
2%
7.4
6%
7.3 ou antérieure
0%
Nombre de votes: 48

Pb requĂȘte Postgres-PostGIS

Technique - gĂ©nĂ©ral | Pb requĂȘte Postgres-PostGIS

Par odyssee le 18/08/2005 - 11:14

Bonjour,

J'utilise Postgres-PostGIS depuis peu et je rencontre le problĂšme suivant :

J'ai dans ma BdD gĂ©orĂ©fĂ©rencĂ©e plusieurs objets, points et lignes, plus un polygone qui matĂ©rialise les limites de ma zone d'Ă©tude. J'utilise la requĂȘte SQL suivante afin de rĂ©cupĂ©rer l'objet le plus proche (en distance) d'un autre objet.

SELECT a.libelle FROM mabase b, mabase a WHERE b.libelle='objet1' AND Distance(b.the_geom,a.the_geom)=(SELECT min(Distance(d.the_geom,c.the_geom)) FROM mabase d, mabase c WHERE d.libelle='objet1' AND c.libelle!='objet1');

Or, je viens de constater que Postgres ne calcule pas la distance
polygone-point (= 0)
polygone-ligne (= 0)

Du coup j'obtiens pour ma requĂȘte un rĂ©sultat faux. Il renvoit systĂ©matiquement comme objet le plus proche Ă  un autre objet le polygone.

Quelqu'un aurait-il rencontré ce genre de problÚme ? Auriez-vous qqchose à me proposer pour le contourner ?

Merci par avance.

Options d'affichage des commentaires

Sélectionnez la méthode d'affichage des commentaires que vous préférez, puis cliquez sur "Sauvegarder les paramÚtres" pour activer vos changements.

Il est normal que ta requete

bsimon/ = 24 Août, 2005 - 08:12

Il est normal que ta requete de distance (polygone-point) soit nulle si ton point se trouve a l'intérieur du polygone. Dans ta requete tu n'exclus pas le polygone.

Pour trouver l'objet le plus proche, j'effectuerais une requete a peu pres comme celle ci :

SELECT A.ID,DISTANCE(A.GEOM,B.GEOM) as DIST FROM table A, table B WHERE A.LIBELLE != POLYGON_LIBELLE AND B.LIBELLE != POLYGON_LIBELLE ORDER BY DIST ASC LIMIT 1;

(avec biensur table a = table b si tu n'as qu'une seule table)

Fais attention au calcul de distance (!). Si tes données ne sont pas projetées (i.e ne sont pas planes) tu dois utiliser la fonction distance_spheroid() pour éviter les erreurs de calcul.

Benjamin


© PostgreSQLFr, tous droits rĂ©servĂ©s.
Site déclaré à la CNIL sous le numéro 1074678, conformément à la Loi en vigueur.