[OSM-dev] Converting OSM Mapnik stylesheet to Cascadenik or Carto

Komяpa me at komzpa.net
Sat Jul 30 17:39:07 BST 2011


2011/7/30 Igor Brejc <igor.brejc at gmail.com>:
> Great work and thanks for the detailed info.
> One comment/question: from your description (using Mapnik) and from looking
> at the json_getter.py I conclude you rely Osm2pgsql DB schema.
yes.

> The main reason is that IMHO flattening of OSM
> data  produces some loss of information which is vital for creating high
> quality maps.

That really depends on what you call "quality". But yes, flattening
database lets you lose some data.

> Example: Osm2pgsql flattens bus route relations into one or more chunks of
> consecutive ways. But in order to render a bus network (like this one
> http://www.harvestersway.co.uk/images/location_busmap.jpg), one would need
> to reconstruct a graph of all the bus routes, which can have several routes
> (relations) share the same way, and each relation can consist of several
> ways. So it's a many-to-many relationship, which would be difficult to
> reconstruct from this flattened schema.

are you aware that slim osm2pgsql database contains a lot more data,
and also mentions relations?
http://latlon.org/pt is constructed entirely from osm2pgsql schema.


> So my question is: how would you go about implementing MapCSS support for an
> "original" schema, if at all? This is why I expressed concerns about
> performance, since I don't see an efficient way of fetching the data using a
> declarative map styling.

I don't really understand what's the problem there.

Any mapcss selector can be translated into SQL WHERE clause. You can
easily join them with ") OR (", and get almost all the data you need.
For some of them there will be more than one where clause (i.e. you
need to get "ways in relation like that" and "relations like that
which have ways like that"). It requires thinking (mostly about
writing queries to use indexes efficiently) but it's doable.

After you get needed data from database, I don't see any problem to
render it - even flash-based Halcyon is able to do it ;)


-- 
Darafei "Komяpa" Praliaskouski
OSM BY Team
xmpp:me at komzpa.net mailto:me at komzpa.net



More information about the dev mailing list