gravitystorm / openstreetmap-carto

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

Rethinking major and minor buildings #2532

Open kocio-pl opened 7 years ago

kocio-pl commented 7 years ago

Rewriting the buildings in #565 took place 1,5 year ago and proved to be right in general, but it's time to fine tune it. It become apparent to me in a discussion about unifying current major buildings (https://github.com/gravitystorm/openstreetmap-carto/pull/2515), which I meant as a simple, clearly focused fix, but turned into discussing special buildings rendering.

There are some related issues already created:

but they are also related to certain features, while the underlying problem is wider:

  1. Do we want having any other building types rendering than just standard brown?
  2. If yes, which buildings should be rendered as major?
  3. If yes, which buildings should be rendered as minor?

My take is that it's good to have basic subtypes of building class which is very large and important for universal map style, but has no clear rules for differentiation. That means it's up to us to decide. Some buildings are landmarks or plays a special function (like places of worship or transportation terminals), while the others are less important than typical buildings (like greenhouses, sheds, roofs or garages) and we should show it if possible. Major building list should be however treated with more care than minor ones to avoid visual clutter.

My opinion is that using dark brown for major buildings and light brown for minor ones is a consistent rule and hints the users that all these are still buildings.

pnorman commented 7 years ago

Historically we had three classes of buildings

We cannot reliably style buildings based on what they contain without a query like https://github.com/gravitystorm/openstreetmap-carto/pull/565#issuecomment-44358786.

Stepping away from 3 classes of buildings was a big step for making the logic behind rendering understandable. Let's not do anything that would take us backwards.

wmyrda commented 7 years ago

Seems that moving away from 3 stage hierarchy did not go as planned hence there are buildings that render differently like airports.

565 made almost all buildings render lighter including those that are tagged with only building=yes. This time around no one wants to render those as major.

For me clarity of the map would not be hurt if we render public places building=civic where located are police & fire stations, town halls and all those that fall on the landuse=residential area and are not highlighted on the map in any way. Stating that if colour of regular building is 1 and major is 100 than on than scale it would not hurt if we give semi-major buildings 25-30.

There is more arguments towards having "semi-major" render differently. It would encourage to give buildings proper tagging instead just building=yes which many of those still have.

imagico commented 7 years ago

I am open to the idea to rendering individual types of buildings in a distinct way - although there are many different ways of doing that other than using a different color. However

kocio-pl commented 7 years ago

I am open to the idea to rendering individual types of buildings in a distinct way - although there are many different ways of doing that other than using a different color. However

Nice to hear it.

Any ideas what other tools (than colors) could we use? Sounds interesting to me, it might be useful. For now the only such tool I can think of would be hatching for roofs proposed by @mboeringa.

all discussion on undefined abstract concepts like major and minor is a waste of time in my eyes.

I started with extending current scheme, but I'm not attached to idea of strict minor/major classes, for me it's just useful generalization for discussion (shorter form of "more important than standard" and "less important than standard"). It might be more individual and kind of "sliding scale" of importance.

The nice thing is that brown is not overused, so we can use more semi-tones (as @wmyrda has sugested) and not get people confused.

values for the building tag are a mixture of physical characterizations (like building=church) and use characterizations (like building=commercial). For any use of these values we need to see if the individual tags are well defined and consistently used. Combinations of these two in a common styling would likely be confusing for the map user.

Right, typical problem here is finding the right tagging scheme for stadium. We will need to talk to the Tagging dept. and check the numbers in some cases.

I am strictly against rendering in a way that encourages mappers to apply tags to a building that do not actually apply to the building like for shops which often only use parts of it. See also the comment by @pnorman regarding the need for spatial queries.

I don't understand this part, could you explain it?

in any case the rule of differences in meaning and purpose as mentioned in #2515 (comment) should IMO be a guiding principle in any decisions here.

If you mean "The difference in rendering between different types of features should foremost be based on their difference in meaning and purpose for the target map users", I'm all for that.

kocio-pl commented 7 years ago

I've checked building values in use and this is my rough list of 10k+ candidates for "minor" buildings (lighter brown rendering probably):

imagico commented 7 years ago

I am strictly against rendering in a way that encourages mappers to apply tags to a building that do not actually apply to the building like for shops which often only use parts of it. See also the comment by @pnorman regarding the need for spatial queries.

I don't understand this part, could you explain it?

If you render buildings differently if they also have a shop=* tag but ignore any separate shop features within the building you'd encourage mappers to apply the shop tag to the building even if the shop does not use the whole building.

As @pnorman said we cannot reliably style buildings based on what they contain without querying multiple features and their spatial relationships.

mboeringa commented 7 years ago

If you render buildings differently if they also have a shop=* tag but ignore any separate shop features within the building you'd encourage mappers to apply the shop tag to the building even if the shop does not use the whole building.

I don't see a real problem with this. This is basically an unsolvable issue: you can not display multiple "functions" of a single building in one map as polygon symbolization (unless you want to go the route of horrible multi-coloured or mixed building colors).

Therefore, the only logical conclusion is that you need to set priorities: is the fact there is a shop more important than that there may be offices or apartments on upper floors? If so, rendering based on building=retail (yes, no need for individual shop tagging here), could be an option.

At least in the Netherlands, there is quite a number of buildings tagged with building=retail, and giving them a slightly distinct color worked quite well in my own style. I actually had to smile when I saw Google implementing something similar two years after I implemented this in my personal renderer. Contrary to Google though, I simply use the existing building tagging, and don't derive "retail" based on shop POI.

There is +265k buildings tagged building=retail according to taginfo...

dieterdreist commented 7 years ago

sent from a phone

On 3 Jan 2017, at 10:59, Christoph Hormann notifications@github.com wrote:

all discussion on undefined abstract concepts like major and minor is a waste of time in my eyes.

I agree for major but believe we can get some agreement on minor (like greenhouse for example)

values for the building tag are a mixture of physical characterizations (like building=church) and use characterizations (like building=commercial).

actually building=commercial can be seen as a physical classification as well. There's always some correlation between intended use and physical manifestation (or you have a bad architect)

For any use of these values we need to see if the individual tags are well defined and consistently used. Combinations of these two in a common styling would likely be confusing for the map user.

there aren't "two" IMHO.

dieterdreist commented 7 years ago

sent from a phone

On 3 Jan 2017, at 15:18, Christoph Hormann notifications@github.com wrote:

If you render buildings differently if they also have a shop=* tag but ignore any separate shop features within the building you'd encourage mappers to apply the shop tag to the building even if the shop does not use the whole building.

a part from using the whole building or not, if you apply the shop tag to the same object as the building tag you loose the semantics: e.g. you don't know whether the name belongs to the shop or the building or both (actually you suggest that it belongs to both then, which is hardly true for any tag)

dieterdreist commented 7 years ago

sent from a phone

On 3 Jan 2017, at 14:44, kocio-pl notifications@github.com wrote:

Any ideas what other tools (than colors) could we use? Sounds interesting to me, it might be useful. For now the only such tool I can think of would be hatching for roofs proposed by @mboeringa.

for example you could use outline width (or no outline at all) or zoom level of appearance

daganzdaanda commented 7 years ago

I would appreciate the return of "minor" buildings, and would not be opposed to add a carefully selected few building-types to the "major" style of rendering.

As for what to include in "minor", @kocio-pl 's list is good for me.

The example renderings developed for greenhouses shown in #2538 seem to work OK. We should test this on all kinds of possible backgrounds, though, since a "shed" or "garage" could be located on mud or scree or bare rock, too.

As for what to include in "major", I would probably add airport terminals but after that I'm very sceptical. Assuming a "major" rendering should indicate that the building is "more important" than others, it's hard to decide which buildings really are more important for most of the users. Making that decision based on the building=* value alone will be harder yet. With churches and other religious buildings, apart from possible historical reasons, the main reason for their importance was that they (often) stand out in a town and are useful for navigation and orientation. With that reasoning, building=castle or tower might be added but these are not documented in the wiki. Maybe there are other buildings that fit this mold?

The case for train stations IMO is not mainly that they stand out (which many do) but that they are useful for many people to navigate to or from ("high traffic"). This also applies to bus stations, but they are tagged as amenity... Airport terminals are useful in this sense too, so I think they could be getting the same "major building" treatment. I don't see why they need a completely separate colour. Other than that, I don't think e.g. building=civic/public should make the grade. There are too many different uses for those, and not all are really important.

imagico commented 7 years ago

With churches and other religious buildings, apart from possible historical reasons, the main reason for their importance was that they (often) stand out in a town and are useful for navigation and orientation.

For clarification: current distinct rendering of p.o.w. buildings is based on amenity=place_of_worship and not building=church. A historic church that no more functions as a place of worship is rendered like any other building.

dktue commented 5 years ago

I would really love to see minor buildings rendered in a more discreet way -- whats the current status of this issue?

kocio-pl commented 5 years ago

It's not active currently. But your idea might work, the difference between standard and major buildings is very strong and maybe does not have to be this way. Do you have some colors we could test?

dktue commented 5 years ago

I just tried with paint: Before: before

After: after

I would probably lighten the outlines of the minor-buildings (garages, sheds, etc.), too, but this wasn't feasible with paint.

kocio-pl commented 5 years ago

Sorry, I misunderstood you. I thought you're talking about major buildings.

I was trying to do that in #2538, but it was rejected.

Tomasz-W commented 5 years ago

For me it's quite obvious that castles should be rendered as major buildings, because historically they were central buildings of city/ village and nowadays they are usually are a symbol of certain place, what makes them important tourist attraction. For the same reason I would consider also manors and townhalls.

jeisenbe commented 5 years ago

I agree with adding town halls / city halls to the "major" building list.

As an American I have no experience with castles and manors, but I can see how they could be important.

What about building=stadium? These are already large features, in most cases, so perhaps they do not need extra emphasis?

Ferry terminals and bus stations might also be rendered as "major" buildings, because train stations and airport terminals are already included.

Tomasz-W commented 5 years ago

@jeisenbe Stadiums was already rejected for these reasons: https://github.com/gravitystorm/openstreetmap-carto/issues/1205#issuecomment-404920038

imagico commented 1 year ago

A single symbol pattern as we discussed in a different context in #844 could be worth exploring as a subtle technique for differentiating buildings at high zoom levels.