2009/12/6 Philip Stubbs <[email protected]>:
> I am inching forward here. My road text layer now uses the following
> SELECT statement
>
> <Parameter name="table">
> (SELECT way,highway,aeroway,name,ref,char_length(ref) AS length,
> ST_Length(way) AS road_len,
> CASE WHEN bridge IN ('yes','true','1') THEN 'yes'::text ELSE
> bridge END AS bridge
> FROM planet_osm_line
> WHERE waterway IS NULL
> AND leisure IS NULL
> AND landuse IS NULL
> AND (name IS NOT NULL OR ref IS NOT NULL)
> ORDER BY road_len DESC
> ) AS roads
> </Parameter>
>
> Now the road_len allows me to create a rule that selects point
> placement when the road gets too short. Great! Now I still have a
> problem where I have a residential road that has side branches with
> the same name. It seems to me that there should be a way to adjust
> that select statement to give me only one of each name. Any ideas?
Another step closer. I have started playing with psql and have found
that the following sort of works:
SELECT DISTINCT ON (name)
way,highway,aeroway,name,ref,char_length(ref) AS length,
ST_Length(way) AS road_len,
CASE WHEN bridge IN ('yes','true','1') THEN 'yes'::text ELSE
bridge END AS bridge
FROM planet_osm_line
WHERE waterway IS NULL
AND leisure IS NULL
AND landuse IS NULL
AND (name IS NOT NULL OR ref IS NOT NULL)
ORDER BY name,road_len DESC
The problem now is that it is really slow, and I guess it is looking
at the entire database for distinct names, not just the area I am
rendering. Any suggestions on how I can limit the area considered by
my query?
--
Philip Stubbs
_______________________________________________
Mapnik-users mailing list
[email protected]
https://lists.berlios.de/mailman/listinfo/mapnik-users