[OSM-talk-fr] Rendu des terrains de sport
Christian Quest
cquest at openstreetmap.fr
Ven 22 Mar 13:15:09 UTC 2013
Les terrains de basket et de rugby sont désormais rendus eux aussi...
http://tile.openstreetmap.fr/?lon=2.44176&lat=48.83262&zoom=17&layers=B00000
Pour le tennis, le tag surface est pris en compte:
http://tile.openstreetmap.fr/?lon=2.24749&lat=48.84697&zoom=17&layers=B00000
(Roland Garros)
http://tile.openstreetmap.fr/?lon=2.24749&lat=48.84697&zoom=17&layers=B00000
(Wimbledon)
J'ai corrigé les principaux défaut signalés en applicant une
simplification au polygone et en tenant compte de sa "rectangularité".
Si un polygone n'est pas assez rectangulaire ou de forme trop
irrégulière, aucun rendu spécial n'est fait.
Pour les curieux, j'ai tout commité sur github:
https://github.com/cquest/osmfr-cartocss/commits/master
La requête SQL ressemble à ça:
select *, abs(a12-a23) as angle_diff, (a12+a23+90)/2 as angle from
(select way, sport, surface, way_area, st_npoints(way2) as nb, osm_id,
ST_Distance(st_pointn(way2,1),st_pointn(way2,2)) as d12,
ST_Distance(st_pointn(way2,3),st_pointn(way2,2)) as
d23,ST_Distance(st_pointn(way2,1),st_pointn(way2,3)) as d13,
degrees(st_azimuth(st_pointn(way2,1),st_pointn(way2,2))) as a12,
degrees(st_azimuth(st_pointn(way2,2),st_pointn(way2,3))) as a23 from
(select *, ST_ExteriorRing(ST_SimplifyPreserveTopology(way,100)) as
way2 from planet_osm_polygon where sport in
('tennis','soccer','basketball','rugby_union','rugby_league') AND way
&& !bbox!) as simplified) as simplified2) as sports
Y'a sûrement plus efficace et robuste !
Plus d'informations sur la liste de diffusion Talk-fr