[OSM-talk] area topology

Andrew Chadwick (email lists) andrewc-email-lists at piffle.org
Wed May 14 14:43:19 BST 2008


Stephen Gower wrote:
> On Tue, May 13, 2008 at 02:31:32PM +0100, Andrew Chadwick (email lists) wrote:
>   
>   A road is represented by a single way.  Although the way has zero
>   width in the database, it represents the whole width of the
>   carriageway (pavement) and well as the pavement (sidewalk). If a
>   minor road meets a more important way at a T-junction, we do not
>   put the last node where the minor road ends, instead we extend it
>   to the centre of the more important one.

The Way in the database is the centre of the real-world carriageway,
plus any short extensions necessary to make the routing graph work. Not
the same thing as a centreline ;)

Representing shape accurately is important to areas. Rendering
reachability is more important than shape for roads. There are two
classes of object here, each with differing requirements and allowable
compromises.

>   In the same way, if an
>   area comes right up to the edge of a road (including its pavement,
>   etc), we should extend the area to use the same defining nodes.

I disagree! But you knew that. Let me try to explain more clearly why I
think this is wrong.

You _don't know_ where the edge of the rendered road will be but that
it'll lie within a certain zone. Thus you infect the edge of the abutted
area with that uncertainty, and for most buildings, fields, residential
areas, or any other Area that doesn't make sense. It's abusing the fact
that the renderer will render the road on top of a conjoined area at
whatever width the view dictates.

It is better to get shape and coverage down correctly for areas,
especially buildings.

With a system like OSM where one can ignore or disregard some types of
object when rendering in favour of others, it's important to map each
sort of object accurately *in and of itself*, *in its own terms*,
without undue reliance on adjacent objects and the way they get
rendered. Contrived example: say you're an arty type or a town planner
rendering _just_ the buildings and building-like zones within a city and
considering the negative spaces between them for either aesthetic[1] or
civil engineering reasons. Abut two buildings to a single road, render
without the road "defining" the edge, and suddenly your negative space
is zero, buildings are touching, and the rendered map is All Wrong. It
is wrong because the data was wrong for the buildings.



To think of it all another way, road widths are always scaled to
whatever is appropriate for the viewer. Take a look at some other street
maps, and you'll see roads seemingly painted with yard brushes because
for their readership it's street names and road routes that matters.


[1] Yes, it matters *pats his copy of _A Pattern Language_*.

-- 
Andrew Chadwick




More information about the talk mailing list