gravitystorm / openstreetmap-carto

A general-purpose OpenStreetMap mapnik style, in CartoCSS
Other
1.55k stars 822 forks source link

Outline coordination (meta issue) #3045

Open polarbearing opened 6 years ago

polarbearing commented 6 years ago

Some areas on the map already use outlines, for other features it has been proposed. This issue intends to coordinate such approaches and find a common language among them, following on #1624 which discusses some candidates.

Current use of outlines

Examples are in z13 and z17.

large parks/reserves

Double line with a darker outside and a more transparent inside. That visualises the direction of the outline even when only parts of the polygon is in the viewer's window.

tourism = theme_park, tourism = zoo, identical, color = #660033 (changed from tourism brown #734a08 in #3582):

nature=reserve

hatched overlays

landuse=military

amenity=prison

Proposed outlines:

tourism=museum areas #2704 tourism=(accommodation) on the example of leisure=resort #2290
amenity=(uniformed services), i.e. military, police, fire brigade, some drafts in #2670, #3035 boundary=protected area #603 amenity= monastery #3036 leisure=dog_park #3041 boundary=aboriginal_lands #3520

kocio-pl commented 6 years ago

I don't have a time to look at it, but big thanks for pushing this forward!

Slawek234 commented 6 years ago

I propose. Unfortunately, I do not have artistic skills so there are not many pictures.

tourism=theme_park, tourism=zoo these are purely commercial and entertainment areas designed mainly for children's entertainment. Should be marked with a bright, intense color (like school, landuse=retail, landuse=commercial) I suggest yellow, orange or red https://s17.postimg.org/uf8dpbhbz/pomara.png , https://s17.postimg.org/5jey1num7/z_te.jpg or red https://s17.postimg.org/5lytop0wf/red2.jpg

tourism=museum This is the largest group of objects to be considered. These are various areas of an educational nature, which is why a more subdued color would brown #734a08: exactly the same as it is currently used by tourism=theme_park, tourism=zoo.

amenity=monastery I think landuse=religous it's fine right now. If not, possibly a border slightly darker than #734a08: or violet border https://postimg.org/image/t94dqpg8b/

amenity=prison this is a place of isolation, and it should not be distinguished in any way from surrounding the current method of tagging should take hold.

landuse=military the area should be less noticeable at the moment it is too bright, leaving aside that the military areas should be camouflaged:) I would suggest changing the color to gray just like amenity=prison. Since this is not an area that should attract tourists with its color, the meaning of gray should be ok. Contrary to appearances, large gray areas also stand out, but not as in shades of red.

In my opinion, strategic places such as Military areas, police and low importance as prisons should not stand out too much from other areas. The gray color would be fine here.

There is also an area that is eagerly mapped all over the world, but there is no definition on the wiki children's traffic park or traffic town I suggest roses https://s17.postimg.org/x9bj2qwcv/r_owy.png or blue https://s17.postimg.org/p3th4g2xb/granat.png https://wiki.openstreetmap.org/wiki/Talk:Tag:leisure%3Dplayground #Possible combination or new Tag?

nature=reserve I do not feel the need for a bigger change in this case for now.

kocio-pl commented 6 years ago

Military area (#f3dad5) without the hatching (with and without the barrier) compared to commercial, retail, industrial and power areas around: yhftz2yv vgzui0dl

What do you think about it?

polarbearing commented 6 years ago

Is that solid fill colour under everything? I'd indeed prefer that to the current transparent overlay which causes tinting. Are the different outline colours in the first example only from the barrier?

kocio-pl commented 6 years ago

Is that solid fill colour under everything?

More or less. Currently it's done by overlaying transparent raster file, so when I gave up with more subtle methods, I just tried to pick the resulting color from rendering. Hence it's probably mix of lighter parts of this file with ground color, but that's probably the most typical case.

Applying it in a rough way hides all the buildings, but that's not important in this phase.

Are the different outline colours in the first example only from the barrier?

Yes, I think so.

kocio-pl commented 6 years ago

General thoughts about military areas:

polarbearing commented 6 years ago

Outlines should be offset inwards into the polygon (as with the current zoo). When you shift them outwards they interact badly with adjacent areas. Current military is in the middle which already has some interaction, see my example in the first post.

The problem with military forest was probably the reason why hatching was chosen originally. We are running into the old issue of landuse vs. landcover.

I was searching the mapnik doc if there was some algorithmic area hatching without pattern files, but could not find any?

kocio-pl commented 6 years ago

My idea is to at least update current rendering:

I think that will improve rendering to a reasonable state, so we can think about further changes later.

andrzej-r commented 6 years ago

This may work better for small areas like the ones in your examples but it will be almost as obnoxious at middle zoom levels (8-10) as it is now. In that scenarios it is mostly the border and fill that dot the map.

Consider (1) turning down the opacity of the fill colour and thickness of the boundary, or (2) greatly (>10x) increasing the size filter threshold. Preferably both.

To avoid stacking issues with other land uses I would suggest keeping these layers as transparent overlays as it is now. I don't know if it is technically possible but putting the overlay below buildings/roads and above land uses could work well.

kocio-pl commented 6 years ago

Could you provide some code to test the suggested changes?

Current style code is here:

andrzej-r commented 6 years ago

I can provide it but it would be essentially the same code as in my previous proposal minus hatching. Is there anything you would like me to try or do differently this time?

andrzej-r commented 6 years ago

BTW, my comment about placing the transparent overlay behind buildings etc is incorrect - it is already the case in the current implementation. So it may be good to keep military areas as overlays.

I the evening I will prepare a new proposal implementing the following:

Does the above sound worth trying or do you want me to change/add anything?

kocio-pl commented 6 years ago

That sounds good.

BTW: why did you close the #3035?

polarbearing commented 6 years ago

I'd like to have some clarity about what we want to show before we prepare any code or jump into details, that might save work in the long run. So, how visible should the landuse=military be, from a distance (low zoom) and close up (high zoom)?

An outline shows the perimeter well in low zoom, but when we are in the middle of the area we don't get that hint any more.

For other landuses, the area is shown via intransparent colour fill, with infrastructure on top. This will work for military as well (if we find a colour distinguishable enough from commercial), with one exeption, that are forests. You might have forest within the military, and military within forests.

Using a transparent overlay (if there is no hatching you probably don't need a PNG) is visible in both high and low zoom, but when zoomed in you don't get a clue why the colour is strangely tinted. Furthermore, as the eyes adjust to the overall colour of the area, the overlay becomes unrecognisable.

I don't know if @gravitystorm is following us here, but I remember he was fighting against transparencies for exactly this reason.

Things like how transparent outlines could be used, and their thickness, should be discussed separately, for different outline cases together. That was the prime goal of this meta issue here.

kocio-pl commented 6 years ago

I believe that discussion is very general and might easily stuck at some point, so I'd like to make some limited steps when possible which are not turning for example the military areas upside down. Discussing transparency is important, but it can be resolved later (if ever, because this is tough problem).

Are there some things which you agree that can be changed without big hassle, so we could try to do that, or you think that nothing should be changed until we set general rules for outlining? I'd be happy to go on with these smaller changes and discussing big things in the background.

Tomasz-W commented 6 years ago

use this new military style also for police and fire services,

I don't like this idea. Military area is dangerous (you can get shot there), but police/ fire stations are places where you can shelter from danger. For me, they are kind of opposite things and military style shouldn't include them.

kocio-pl commented 6 years ago

Military danger area is defined separately and I plan to keep the hatching there. We look for similar things to make "clusters", but they can differ of course.

andrzej-r commented 6 years ago

I'm happy going ahead with the plan above. Seems like a fair trade off and a good step forward from the current implementation. Otherwise we may have an endless debate on unification and aesthetics - that has derailed #3035, and may very well derail this ticket too.

I think unifying wrt "uniformed services" is a fine and easy to understand concept. Level of danger would also be OK but that may be too subjective (what about runways or volcanoes while we're at it?) and, aside of danger areas, not currently mapped.

My issue with military areas is that they tend to be quite big and often contain other land uses. So we need transparency/hatching and run into over prominent rendering issues at mid zoom levels. Nothing that couldn't be fixed with more aggressive filters, though.

I don't mind either transparency or hatching, assuming we are OK with a raster image I may keep very slight hatching (just a notch less transparent than the rest of the background), if only for familiarity reasons. Just transparency is also OK IMHO, once we are inside the area we no longer need visual hints about it, just like we don't need the name of the country when zoomed to a street level.

andrzej-r commented 6 years ago

The following code:

#landuse-overlay {
  [landuse = 'military'][zoom >= 9][way_pixels > 900] {
    polygon-pattern-file: url('symbols/military_red_hatch.png');
    polygon-pattern-alignment: global;
    line-color: @military; 
    line-width: 2; 
    line-offset: -1.0;
    line-opacity: 0.24;
  }
}

Zoom >= 9 to match danger_area, more aggressive filtering. A bit more transparent borders, width=2 with offset. Fill opacity 0.08 with very a finer hatching pattern with only slightly higher opacity (0.16).

Results

Zoom=10: ver2_l10

Zoom=14, note overlapping military+military areas and military+danger areas (in the proposed version the danger area is a bit easier to distinguish, although it would benefit from some fixes too), the thick border in the middle is in fact two 2px borders with offsets: ver2_l14

andrzej-r commented 6 years ago

https://github.com/andrzej-r/openstreetmap-carto/commit/f9f190ab03c0e88d321c4805c77ca265e6f0554b If you're happy with this version I'll make a PR. Otherwise let me know what to fix.

polarbearing commented 6 years ago

I am happy in general as an intermediate fix to the current ugliness, thanks. The line-offset fixes the current overspill into the neighbourhood, and the hatching is better than before. In the example it seems that some areas are painted twice, but this is rather a tagging error, with the same landuse overlapping.

A small concern is the [landuse = 'military'][zoom >= 9][way_pixels > 900], which I understand that at any even high zoom level we only render objects >900. Probably from z13 or so we should render any size?

andrzej-r commented 6 years ago

I've removed filtering at zoom>=13 and reduced border thickness at low zoom (no change at zoom>=15 when exact border location may be of interest). https://github.com/andrzej-r/openstreetmap-carto/commit/b81bc8f7adb96bebeba6a81bd6dc8f042b64c119 Preview at zoom=10: ver3_l10

gravitystorm commented 6 years ago

Note that opacity-based artefacts can be reduced by using compositing. For example, to avoid problems where multiple overlapping landuse areas leads to unwanted effects, you can fill the polygons at full opacity and then use opacity: 0.5 on the layer/attachment to ensure that overlapping areas look the same as single areas.

kocio-pl commented 6 years ago

@andrzej-r Since we agree that it'd be a good intermediate change, I guess you can open a PR.

There are many details we want to test, but they don't belong here. It was important to make sure that this change is not against global outline plans, but that's enough for now.

kocio-pl commented 6 years ago

I like the idea to use some bright red/yellow/orange outline for tourism=theme_park and tourism=zoo, as proposed here: https://github.com/gravitystorm/openstreetmap-carto/issues/3045#issuecomment-361734148. We have enough delicate colors to use something stronger once in a while, especially when it's associated with fun.

That would also allow us to use a brown outline for cultural institutions, like cinema, theatre or museum and other "quiet" places.

The question is if we want to use a background too? This combo looks nice to me in https://github.com/gravitystorm/openstreetmap-carto/pull/3075#issuecomment-367131953.

What do you think?

Tomasz-W commented 6 years ago

I like orange outline for theme parks, but I'm not sure about changing zoos outlines to this color (current brown is ok fo me)

Generally, I very like zoo/ nature reserve/ marina etc. outlines. They are darker outside and lighter inside, so it's very intuitive to see the object size. I think we should consider using outlines/ ovelays for many more tags. Map is getting more and more presice year after year, and many background-filled areas becomes covered by physical elements like grass etc. To show you what I mean, few examples from Poland - almost fully-covered areas of:

Lack of outlines/ overlays for these areas is part of problem, which I was analyzing in #2796

Tomasz-W commented 6 years ago

Topic analysys

I've reviewed all of areas included in landcover.mss and all of landcover-tagged issues, trying to separate from each other two types of map landcover:

The biggest problem are the tags which are used in two ways: for describe whole district (or large indicative area) usage or in second way - for describe bounaries of certain company/ named public leisure area (e.g. landuse=industrial, sometimes small industrial comanies areas are placed on the large industrial district area). In cases like this, I think we should consider outlines only for areas with name=*.

List of non-psychical, "cultural" areas:

Amenity:

Landuse:

Leisure:

Tourism:

Other:

Already rendered ones:

polarbearing commented 6 years ago

Don't have many of the landuses already have thin outlines? See residential below, even with a width difference when a name is present. Thus smaller named areas are well distinguished.

 [feature = 'landuse_residential'][zoom >= 8] {
    polygon-fill: @built-up-lower-lowzoom;
    [zoom >= 11] { polygon-fill: @built-up-upper-lowzoom; }
    [zoom >= 13] { polygon-fill: @residential; }
    [zoom >= 16] {
      line-width: .5;
      line-color: @residential-line;
      [name != ''] {
line-width: 0.7;
Tomasz-W commented 6 years ago

I know about these thin outlines, but they are not enought for me. They are placed under buildings, landcovers, etc., so again - map becomes more and more detailed, and someday these areas will be fully covered, so it's edges become unvisible.

Example with landuse=commercial: https://www.openstreetmap.org/way/31795449

PS. Just to be clear: I didn't mention landuse=residential on the list, because I think that outline is unnecessary in this case.

polarbearing commented 6 years ago

landuse=residential on the list, because I think that outline is unnecessary in this case

If you drop the outline on residential, you cannot see the boundaries between named areas.

kocio-pl commented 6 years ago

Maybe we should add the outline for natural=grass - it's smaller than meadows or grasslands and can have precise borders. If the outline is not too strong that would be a nice hint.

dieterdreist commented 6 years ago

sent from a phone

On 8. Mar 2018, at 21:25, kocio-pl notifications@github.com wrote:

Maybe we should add the outline for natural=grass - it's smaller than meadows or grasslands and can have precise borders.

there is not much usage of natural=grass and the wiki discourages its use: https://wiki.openstreetmap.org/wiki/Tag%3Anatural%3Dgrass

kocio-pl commented 6 years ago

Sorry, I meant https://wiki.openstreetmap.org/wiki/Tag:landuse%3Dgrass :

A tag for a smaller areas of mown and managed grass for example in the middle of a roundabout, verges beside a road or in the middle of a dual-carriageway.

Tomasz-W commented 6 years ago

I just found that outlines are under highway areas: https://www.openstreetmap.org/#map=19/52.40037/16.99419

I think they should be above them as a border of the area.

HolgerJeromin commented 6 years ago

I just found that outlines are under highway areas

Related to #688

kocio-pl commented 6 years ago

Another case: #3137.

polarbearing commented 6 years ago

I just found that outlines are under highway areas: Related to #688

No it is not. It was considered a positive side effect in #3037, which moved outlines deeper to show barriers. It was reasoned there, and I still see this as beneficial, as it improves the visibility of gates; and if an ungated road runs over the boundary this is now clearer.

https://www.openstreetmap.org/#map=19/52.40037/16.99419 The example looks funny but that is a result of mapping:

  • the pedestrian area should be split in two, one inside and one outside
  • fences and gates are missing
Tomasz-W commented 6 years ago

the pedestrian area should be split in two, one inside and one outside

It's called "Tagging for the renderer" ;)

If we would have an order like this (from highest to lovest pririty):

there wouldn't be a problem.

polarbearing commented 6 years ago

It's called "Tagging for the renderer" ;)

No it is not. Most likely these are two distinct area, one outside belonging to the municipality, and one inside belonging to the zoo operator.

Tomasz-W commented 6 years ago

With this philosophy, every landcover divided by linear barrier should be mapped as two areas - e.g. grasses, forests etc. The line of a barrier is giving an information about area border, not two separate landcover areas.

polarbearing commented 6 years ago

Sorry you are mixing barrier and the brown touristic outline here. The current order is tourist outline - highway - barrier. Thus the barrier is best visible, that was the target of #3037.

The touristic outline indeed gives information about the boundary of a specific landuse, and often this boundary has a barrier.

It's called "Tagging for the renderer" ;)

Most likely these are two distinct area, one outside belonging to the municipality, and one inside belonging to the zoo operator.

eehpcm commented 6 years ago

A vote here to add historic=castle to the list.

The boundaries of a castle's outer fortifications may be well known even though some sections of wall may no longer be present. I consider it of interest to data consumers have that original outline visible in some way, in the same way that they can see the outline of an industrial estate or a school. In the case I'm thinking of, Cardigan Castle, that outline is somewhat similar to Cadw's listing of the castle as a scheduled monument (Cadw include some land outside the fortifications to the east, amongst other differences).

Although there are modern buildings within the extent of the fortifications they (and some buildings outside the fortifications) are all operated by the Castle Preservation Trust as a tourist attraction. There is some argument to be made for also marking that outer area to include all the things operated by the preservation trust despite being outside the original fortifications, but I can't think of a suitable tag. For example, itx would be nice for data consumers to know that the children's playground to the east is part of the "castle experience."

kocio-pl commented 6 years ago

Any news here, maybe something is ready for PR?

polarbearing commented 6 years ago

Still interested to finish the museum and accomodation when a time budget comes along.

polarbearing commented 6 years ago

wrong button, sorry

HolgerJeromin commented 6 years ago

Border of education color is barely visible: https://www.openstreetmap.org/way/286047412 image

jragusa commented 6 years ago

Why not the same colour than the label ?

eehpcm commented 6 years ago

@jragusa

Why not the same colour than the label ?

Good idea. We could have a black label on a black background. And when you click on it, it lights up black.

Yes, I stole that idea from Douglas Adams.

Adamant36 commented 6 years ago

@jragusa, it would probably be %30 darken (or whatever) of the main yellow color. I think that's how every other border color is.

Tomasz-W commented 6 years ago

I prefer outline more than just a border (see https://github.com/gravitystorm/openstreetmap-carto/issues/3045#issuecomment-370333927), and some "darken, X%" of amenity yellow fill would propably work good.