[OSM-dev-fr] Question noob postgis
J'ai pris la grande décision de me frotter un peu à postgis, mais j'ai un peu de mal en sql, alors c'est l'occasion d'animer un peu cette liste. 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? Yves ___ dev-fr mailing list dev-fr@openstreetmap.org http://lists.openstreetmap.org/listinfo/dev-fr
Re: [OSM-dev-fr] Question noob postgis
On 22/02/2012 21:54, yvecai wrote: J'ai pris la grande décision de me frotter un peu à postgis, mais j'ai un peu de mal en sql, alors c'est l'occasion d'animer un peu cette liste. 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); Ton sql n'est pas bien structuré : SELECT a.osm_id, b.osm_id FROM planet_osm_line AS a, planet_osm_line AS b WHERE b.osm_id=-1347356 AND ST_overlaps(a.way, b.way) ; Ou en plus jolie : SELECT a.osm_id, b.osm_id FROM planet_osm_line AS a JOIN planet_osm_line AS b ON ST_overlaps(a.way, b.way) WHERE b.osm_id=-1347356 ; ___ dev-fr mailing list dev-fr@openstreetmap.org http://lists.openstreetmap.org/listinfo/dev-fr
Re: [OSM-dev-fr] Question noob postgis
Le 22/02/2012 22:24, Frédéric Rodrigo a écrit : On 22/02/2012 21:54, yvecai wrote: J'ai pris la grande décision de me frotter un peu à postgis, mais j'ai un peu de mal en sql, alors c'est l'occasion d'animer un peu cette liste. 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); Ton sql n'est pas bien structuré : SELECT a.osm_id, b.osm_id FROM planet_osm_line AS a, planet_osm_line AS b WHERE b.osm_id=-1347356 AND ST_overlaps(a.way, b.way) ; Ou en plus jolie : SELECT a.osm_id, b.osm_id FROM planet_osm_line AS a JOIN planet_osm_line AS b ON ST_overlaps(a.way, b.way) WHERE b.osm_id=-1347356 ; ___ dev-fr mailing list dev-fr@openstreetmap.org http://lists.openstreetmap.org/listinfo/dev-fr Entre-temps j'avais trouvé: SELECT a.name, a.osm_id FROM planet_osm_line a, (select way from planet_osm_line where osm_id=-1354395) as b WHERE ST_intersects(a.way,b.way); Mais bien moins joli, je te l'accorde ! Yves ___ dev-fr mailing list dev-fr@openstreetmap.org http://lists.openstreetmap.org/listinfo/dev-fr
Re: [OSM-dev-fr] Question noob postgis
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
Re: [OSM-dev-fr] Faire un tableau nom de rue et longueur
Le 22/02/2012 à 20:42:50 +1100 Frédéric Rodrigo fred.rodr...@gmail.com a écrit au sujet de [OSM-dev-fr] Faire un tableau nom de rue et longueur: Ici le plus simple me semble de charger new-caledonia.osm.pbf dans une base (osmosis ou osm2pgsql qui va déjà en partie fusionner les rues et les limites administrative (c'est bien la première fois que je conseille du osm2pgsql !)) Par contre, je ne sais pas s'il est envisageable d'automatiser le traitement des raccord aux rond-points Une rue en plusieurs segments, continues ou non, peut facilement est regroupé par son nom avec un GROUP BY name sql lors de la requête. pour ne pas compter en double ces segments. Donc probablement il va falloir manuellement pré-traiter les données OSM pour qu'elles donnent du sens. Plus gênant sont rues dont plusieurs voies sont tracées. Il faut faire du road matching. Pas de solution immédiate à te proposer. Merci pour tes conseils. Je vais voir ce que je peux faire. Pour d'autres idées je suis toujours preneur. -- Cordialement Hendrik Oesterlin ___ dev-fr mailing list dev-fr@openstreetmap.org http://lists.openstreetmap.org/listinfo/dev-fr