Le mercredi 22 février 2012 21:54:48, yvecai a écrit :
> J'ai pris la grande décision de me frotter un peu à postgis, 

Tu ne le regrettera pas !

> mais j'ai
> un peu de mal en sql, alors c'est l'occasion d'animer un peu cette liste.

Ouais ! ça motivera peut-être certains (dont moi ;-) ) à se bouger et à venir 
ici plutôt que d'encombrer talk-fr

> Dans une base 'osm2pgsql', je recherche les relations qui partagent un
> bout de chemin avec, disons la relation 1347356.
> Je n'arrive pas à comprendre comment faire fonctionner les fonctions de
> comparaison.
> 
>     SELECT a.osm_id, b.osm_id
>     FROM planet_osm_line a, planet_osm_line b
>     WHERE ST_overlaps(a.way,select b.way where osm_id=-1347356);
> 
>     ERREUR:  erreur de syntaxe sur ou près de « select »
>     LIGNE 3 : WHERE ST_overlaps(a.way,select b.way where osm_id=-1347356);
> 
> 
> Quelqu'un pour me mettre le pied à l'étrier?

Attention, je ne me veux ni condescendant, ni exaspérant, ni malpoli, c'est 
juste pour adapter mes réponses à ton niveau actuel :

Tu as déjà pratiqué SQL dans un contexte non GIS ou pas encore ?


>     WHERE ST_overlaps(a.way,select b.way where osm_id=-1347356);
tu ne peux avoir 2 "where" la bonne syntaxe, si on remet les ( ) au bon 
endroit est :
where ST_overlaps(a.way,select b.way) and (osm_id=-1347356);


Au delà de la syntaxe que je viens de corriger, il faut maintenant voir si 
chaque champ est bien défini et bien unique
si tu re-tentes ta requête, il devrait te dire osm_id est ambigue car il ne 
sait pas de quel table tu veux a ou b

Donc :

where ST_overlaps(a.way,select b.way) and (b.osm_id=-1347356);

Je sais plus pourquoi, mais je crois que j'utiliserais st_intersects plutôt 
que st_overlaps


Et au cas où tu ne connaisses pas, la bible :
http://www.postgis.org/docs/reference.html


-- 
sly (sylvain letuffe)

_______________________________________________
dev-fr mailing list
dev-fr@openstreetmap.org
http://lists.openstreetmap.org/listinfo/dev-fr

Répondre à