On 2015-11-13 02:42, Paul Johnson wrote:
On Sun, Nov 8, 2015 at 8:04 PM, Paul Norman
<[email protected]
<mailto:[email protected]>> wrote:

    On 11/7/2015 10:18 AM, Kevin Kenny wrote:

        I find lately that it needs a patched Mapnik, because Mapnik
        (sensibly)
        went to a read-only database connection, and one of Phil's stored
        procedures modifies the database the first time that a shield
        cluster
        is requested. One of these times I'll fix it.

        I'm a little disappointed that none of the 'standard' renderers
        picked this up.


    Phil's demo was an excellent proof of concept of pictorial shields
    from route relations, but isn't something that can be reasonably
    incorporated into a stylesheet as-is.
    https://github.com/gravitystorm/openstreetmap-carto/issues/596 is
    the OpenStreetMap Carto issue for shields from relations,
    https://github.com/gravitystorm/openstreetmap-carto/issues/508 is
    the one for pictorial shields.


There's been a lot of productive talk thus far about potentially moving
this forward, but I'm curious if it makes any difference if we preserve
the existing legends for ref right now, but start rendering the route
relations for the existing style legends where available and just skip
shields until a viable read-only method is developed on the back
burner.  Or is the problem not necessarily depending on shield legends
but something more central?

I'm not very familiar with the toolchain involved here, but this is what I gather after racking my brain on the issue for some time:

osm-carto and lots of other styles rely on osm2pgsql to import OSM data into a Postgres database. There's already rudimentary support in osm2pgsql for generating geometries based on route relations. Specifically, it reads in each cycling or walking route and turns it into a linestring that coincides with the member ways.

This is fine for OpenCycleMap, which represents routes as translucent, badged overlays on roads and trails. But that won't necessarily work for road shields. You have to somehow conflate shields on ways with shields on the overlaid route. My impression is that that could be expensive, though I haven't looked deeply into it. So you'd have to ignore all refs on all ways, which could be a nonstarter in parts of the world that have yet to see the relation light.

So this osm2pgsql issue asks for a way to apply the relation's tags on the member ways:

https://github.com/openstreetmap/osm2pgsql/issues/230

It's a great idea, but it depends on keeping all potential route member ways in memory until the relations are all done processing. Or issuing lots and lots of UPDATEs. Either way, it sounds expensive, but I really hope I'm wrong.

At a higher level, this openstreetmap-carto ticket covers the overall enhancement:

https://github.com/gravitystorm/openstreetmap-carto/issues/596

The question then becomes: what sort of shield do you display? Obviously switching to pictoral shields is a large undertaking in itself, due to the amount of artwork required. But if we instead stick to the textual badges for now, we have some additional complications: in the U.S., a badge with just a number is horribly ambiguous. Out in Logan County, Ohio, there's a state route, county route, and township route all with the same number, and two of them intersect.

http://www.openstreetmap.org/relation/184351
http://www.openstreetmap.org/relation/2599900
http://www.openstreetmap.org/relation/2605494

So we need alphabetic prefixes on badges. Unfortunately, it isn't straightforward to map `network` values to familiar alphabetic prefixes:

network=US:I                  => I ###
network=US:US:Business        => US ### Business
network=US:CA                 => CA ###
network=US:OH                 => SR ###
network=US:TX:Beltway         => Beltway #
network=US:KY:Parkway         `short_name`?
network=US:NY:Onondaga        => CR ###
network=US:OH:MED:Harrisville => T-###

Then there's the issue of concurrencies, where the relations aren't in any particular order. You'd need rules for prioritizing one network over another in badges or shields. The best heuristic I've come up with is to sort by the number of colons, but that doesn't work in Europe (where they don't use the same format) or even for some of the examples above.

So in short, it's complicated, and that conclusion comes from someone who's both enamored with route shields and very naïve. But no one said it was easy. :-)

--
[email protected]


_______________________________________________
Talk-us mailing list
[email protected]
https://lists.openstreetmap.org/listinfo/talk-us

Reply via email to