> SELECT Y(ST_AsText(ST_Transform(way, 4326))), > X(ST_AsText(ST_Transform(way, 4326))), > Distance(way, (SELECT way FROM planet_osm_point WHERE osm_id=582505865))::int, > amenity || ' ' || name, 'icon.png', '16,16', '0,0' > FROM planet_osm_point P WHERE (amenity ILIKE 'res%' OR amenity ILIKE > 'caf%') AND Distance(way, (SELECT way FROM planet_osm_point WHERE > osm_id=582505865)) < 10000 > ORDER BY 3; > > Ca me retourne des données directement exploitable avec Openlayer mais > il est certainement possible de faire 100x mieux. > Suggestions bienvenues
grosso modo c'est pas mal, mais je te conseille : - de ne pas faire de mise en forme au niveau SQL, fais le au niveau de ton langage afin de générer le fichier pour openlayers sans quoi on n'y comprend rien - limite le nombre de requête imbriquées, on doit pouvoir faire ce que tu veux faire sans aucune requête imbriquée En plus là, elle ne servent pas puisque j'imagine que "chez toi" est un concept pas nécessairement dans la base OSM, donc plutôt que de galérer à trouver le feu le plus proche de chez toi (582505865) donne directement les coordonnées GPS dans ta requête Sinon, tu peux passer par une requête sur deux fois la même table style : select name from planet_osm_point as p1, planet_osm_point as p2 where p1.osm_id=l'id du point choisi and st_distance(p1.way,p2.way)<bidule Sinon, voilà ce que j'ai fais en plaçant (6.6 46.52) comme origine des recherches : select name, round(st_distance(st_transform(way,2154),st_transform('SRID=4326;POINT(6.62 46.52)',2154))) as distance_m from planet_osm_point as p where p.amenity='cafe' and st_distance(st_transform(way,2154),st_transform('SRID=4326;POINT(6.62 46.52)',2154))<5000 order by distance_m limit 5; name | distance_m ------------------+------------ | 800 Le Petit-Chene | 818 Starbucks | 833 Café de Beaulieu | 939 Starbucks | 970 (5 lignes) C'est juste triste que je ne puisse récupérer distance_m comme condition et être obligé de répéter mon st_distance (à factoriser dans le langage qui fait l'appel à la requête) -- sly qui suis-je : http://sly.letuffe.org _______________________________________________ dev-fr mailing list dev-fr@openstreetmap.org http://lists.openstreetmap.org/listinfo/dev-fr