[OSM-dev-fr] Question noob postgis
sly (sylvain letuffe)
liste at letuffe.org
Mer 22 Fév 21:33:44 GMT 2012
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)
Plus d'informations sur la liste de diffusion dev-fr