gravitystorm / openstreetmap-carto

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

Unify and clarify icons for some vertical man-made structures #2556

Closed BushmanK closed 6 years ago

BushmanK commented 7 years ago

In my diary entry here http://www.openstreetmap.org/user/BushmanK/diary/39981 I've described the current situation with tagging masts and towers in OSM. I already have engineering definitions for masts and towers added to man_made=mast and man_made=tower OSM Wiki pages to clarify it. Earlier, I promised to draw a set of icons for the OSM Standard style. Since there are several contradictions in current tagging scheme, I'd like to hear some feedback from developers, how you see this situation.

So, here are six of these icons, rendered from original SVG into PNG at 200% scale:

Cantilevered (standing on its own foundation, not supported by anything else) tower man_made=tower tower:construction=freestanding tower_cantilever Cantilevered tower used for communication man_made=tower tower:construction=freestanding tower:type=communication tower_cantilever_communication

Lattice tower man_made=tower tower:construction=lattice tower_lattice Lattice tower used for communication man_made=tower tower:construction=lattice tower:type=communication tower_lattice_communication

Mast (guyed vertical structure) man_made=mast mast Mast used for communication man_made=mast tower:type=communication mast_communications

Some of these icons could also be used for other combinations of tags, because, for example, all tower:construction=guyed* (there are three documented values) fall into a category of masts. Therefore, can be rendered as this: mast The same icon could be used for man_made=mast without any additional tags. It applies to man_made=tower with no other known details and this icon: tower_cantilever

I am not touching (yet) other purposes of vertical structures (tower:type= values), but I can definitely draw more of them if there is any demand for it.

If someone thinks that cantilevered tower icon is too similar to one for monuments, I can probably change it a bit, for example - make its top square and/or reduce the width of its foundation.

pnorman commented 7 years ago

I already have engineering definitions for masts and towers to man_made=mast and man_made=tower OSM Wiki pages to clarify it.

Is this what actual usage is?

BushmanK commented 7 years ago

@pnorman If you take a look at articles for tower and mast, they give no clear way to tell "it's a mast" or "it's a tower", except the structural engineering definition I've added. So, all objects, tagged before I did that, were tagged by own perception of every mapper. Therefore, in the vast majority of cases, nobody can tell, if any object, tagged with man_made=mast or man_made=tower is a mast or tower.

There is a detailed description of this in the diary entry I've mentioned above.

pnorman commented 7 years ago

, all objects, tagged before I did that, were tagged by own perception of every mapper. Therefore, in the vast majority of cases, nobody can tell, if any object, tagged with man_made=mast or man_made=tower is a mast or tower.

If there's not agreement in the tagging in-use we shouldn't do these changes until the usage has changed.


The icons seem to have some pixel alignment problems, even at 2x.

image

For some reason I'm having trouble copying and pasting the PNGs directly to see what they're like at 100% size

BushmanK commented 7 years ago

Just for the reference, here is what I've added to these two OSM Wiki articles: tower https://wiki.openstreetmap.org/w/index.php?title=Tag%3Aman_made%3Dtower&type=revision&diff=1222019&oldid=1202714 mast https://wiki.openstreetmap.org/w/index.php?title=Tag%3Aman_made%3Dmast&type=revision&diff=1222326&oldid=1201405

BushmanK commented 7 years ago

Nobody seems to really care about having the agreement - unclear explanations were there for years. Clear ones are not my own imagination.

And no, it doesn't have any problems with pixel alignment. If I were you, I wouldn't judge by an enlarged example before seeing an actual icon file. Here is a screenshot from Inkscape: grid

imagico commented 7 years ago

Rendering of towers/masts is definitely something that could use improvement. See in particular also #1225.

The proposed symbol for towers might be prone to confusion with the symbol for historic=monument.

tower:construction depends on the database reload.

BushmanK commented 7 years ago

By the way, I see no ground under a requirement of a formal agreement regarding of tags with "in use" status. It is not something that community agreed on via proposal procedure, so we have to stick to it until another formal voting or something. Someone just started using a tag many years ago, then someone has it described in OSM Wiki, using an own vision of it. I've added engineering definitions more than a year ago and nobody said anything against that. Therefore, there are only two logical ways: to render both masts and towers equally by default because nobody can actually tell the difference; or to go a bit ahead of this mess and to start using consistent rendering, so people will eventually get used to it, start checking what OSM Wiki says about that and so on. There is an example of similar situation in comments to my diary entry:

Here, I'm saying that proper rendering of malformed data might promote fixing it with proper tagging. And I have an example of a similar situation. In Russian, "kiosk" refers to a small shop in general, not to specific product range of a small shop (as it is in many European languages). Right after shop=kiosk got its own newspaper icon in OSM Standard style, Russian mappers started fixing hundreds of improperly mapped amenities by setting proper values such as ice cream, tobacco and so on. I don't see any reason why it can't work the same way with masts and towers.

BushmanK commented 7 years ago

@imagico, yes, there is a similarity with a monument. But it is based on the current icon for communication structures: https://github.com/gravitystorm/openstreetmap-carto/blob/master/symbols/communications.svg - I only made the foundation thicker. With "radio waves" removed, it looks similar to a monument too. Do you have any ideas how to make it more distinctive? Narrower foundation or, maybe, a square top?

boothym commented 7 years ago

Is this what actual usage is?

Actual usage for the man_made=mast seems to be a combination of actual masts, large towers, small mobile phone "masts", and those tagged as masts so they get rendered on the map. Then you have man_made=tower which is used 171,000 times, but not rendered. There's also the poorly defined ("huge tower" - how big?) and inconsistently tagged communications_tower which adds another 3,600.

I must agree with @BushmanK - the current situation of rendering just one of these doesn't benefit anyone.

kocio-pl commented 7 years ago

There's also man_made=communications_tower (https://github.com/gravitystorm/openstreetmap-carto/issues/339#issuecomment-272518084) - what do you think it should look like?

BushmanK commented 7 years ago

man_made=communication_tower doesn't seem to have any clear distinctive documented features to give it a different icon. I don't see, why it can't be rendered as this: tower_cantilever_communication It is still a tower standing on its foundation and it is used for communication.

BushmanK commented 7 years ago

There is only one real-world feature, that can be sometimes seen in structures that most likely supposed to be tagged with man_made=communications_tower. It is a space inside it, designed for people to work there more or less permanently in opposite to just visiting it for inspection, for example. But since many towers were modernized recently to accommodate digital TV and cellular equipment as well as a wireless relay network equipment, it is hard to tell, if any particular tower still has a room for personnel inside (and it is still safe to work there because of a higher microwave radiation). So, this tag, without a better description, is completely redundant and mixed with man_made=tower tower:type=communication

Features, currently offered as distinctive ones for man_made=communications_tower, don't seem to work. For example, many "smaller" towers built of drum-shaped elements have a stair inside it, so nobody has to climb from the outside. At the same time, even really large (higher than 150m) regional broadcasting towers (with room for people inside it) in warm climate areas have outside stairs. For example, Yerevan TV tower in Armeina - https://en.wikipedia.org/wiki/Yerevan_TV_Tower

BushmanK commented 7 years ago

Here are several variants of cantilevered tower icon, enlarged: tower_cantilever_1 tower_cantilever_2 tower_cantilever_3 tower_cantilever_4 tower_cantilever_5 The latter two are a kind of similar to a chimney symbol - it's just for the reference. The first one on the left uses the same design as the current icon for communication towers (https://github.com/gravitystorm/openstreetmap-carto/blob/master/symbols/communications.svg), but with "radio waves" removed and a bit taller.

dieterdreist commented 7 years ago

sent from a phone

On 21 Jan 2017, at 00:09, BushmanK notifications@github.com wrote:

With "radio waves" removed, it looks similar to a monument too. Do you have any ideas how to make it more distinctive? Narrower foundation or, maybe, a square top?

I'd get rid of the basis, it makes it look like a classic basis/pedestal

Maybe the towers can get something slightly larger on top, something like a cabin/platform, as opposed to the masts which could have the same width along all the height.

BushmanK commented 7 years ago

@dieterdreist, removing foundation completely does not seem to be an option because it refers to the main distinctive feature of a free-standing (cantilevered) tower. And it doesn't seem like anyone has argued about that when the current icon have been introduced, so I'm not sure why this question came up now.

I agree, that many towers have a platform, cabin, or some equipment installed closer to its top. However, masts have it too (at least, sometimes). Question is, how to make a tower icon with such feature without making it look like a canine male genitalia. I will try.

BushmanK commented 7 years ago

The main problem with adding/removing features is that people have a tendency to take it literally. I mean, if there would be a platform, someone will definitely get an idea that structure must have it to be called "a tower".

BushmanK commented 7 years ago

tower_cantileve_5r tower_cantileve_6r Something like that.

wmyrda commented 7 years ago

@BushmanK I really like your work and the icons. If You could point me out to where to take from the svg icons used I would try to add them my variation of carto http://bigvo.hopto.org/osm/ to test how they look like in real world scenarios.

wmyrda commented 7 years ago

Proposition of the icon for http://taginfo.openstreetmap.org/tags/tower:type=bell_tower would also be welcomed.

BushmanK commented 7 years ago

@wmyrda , here is what I have (hosted at Megaupload). It includes all icons from the first message. Since I haven't got any further feedback on experimental drawings, I didn't prepare corresponding SVG files.

I will think about a bell tower.

wmyrda commented 7 years ago

the original once are good enough for me. Thanks. Keep in mind it may take some time (few days?) as I would have to figure out proper way to ask postgres database for those items as this is hard part for me at the moment.

wmyrda commented 7 years ago

adding for reference https://forum.openstreetmap.org/viewtopic.php?id=57136

imagico commented 7 years ago

I have read over this again and looked at the subject in general and it seems to me the most important thing would be to render:

with suitable icons and cease rendering

with a communication related icon - although i see no reason not to keep rendering it with a mast icon.

For the above we would need suitable generic mast and tower icons that can be combined with a radio waves visualization to indicate tower:type=communication. The design for man_made=mast would also need to be clearly identifiable as such without the radio waves.

In addition i would suggest to try making the design for masts less heavy that that for towers since typically masts are of less massive construction (for basic mechanical reasons) and having it the other way round could be misleading.

Beyond that the question is of course if and how to render

I would like to see this also in light of the fact that many types of towers are actually buildings. building=tower is a fairly common tag. Rendering the building geometry and an icon for the building as a tower might be confusing - especially at high zooms w.r.t. the building is a tower vs. there is a tower on the building.

Apart from that i see nothing wrong with specific designs for specific tower type as long as the type is well defined, consistently used and the icon design is intuitively readable.

BushmanK commented 7 years ago

@imagico, here is a generic mast icon (2x size) that has a twice thinner main stem, as you've suggested. Does it look better for you? mast_thin

Regarding of other tower types, I can also easily adapt the cooling tower icon I made before for the Mapsurfer rendering style: http://openstreetmap.ru/#map=18/55.82296/37.77672&layer=S

imagico commented 7 years ago

Yes, that goes in the right direction. Making the guy lines notably thinner than the main structure might further improve it - that would make them semitransparent in normal rendering resolution which would require testing in actual rendering of course. The really important thing with such a simple shape will be to make sure it is not mistaken for a mapped geometry.

With cooling towers the main difficulty will be to avoid confusion with chimneys.

BushmanK commented 7 years ago

Thinner guy lines will be less than 1px, but I could try that for sure. In this case, I could even try two-level guying as an option to make an icon that resembles this: 220px-guywire

A cooling tower icon could have its height equal (or almost equal) to its base width, so it makes them different enough from chimneys to my eye.

BushmanK commented 7 years ago

Default man_made=mast with 1/2px wide single guy lines, double size preview mast_thin_thin_g Default man_made=mast with 1/2px wide single guy lines, actual size 14x14 preview (rendered by Inkscape) mast_thin_thin_g_actual

Default man_made=mast with 1/2px wide two-level guy lines, double size preview mast_thin_thin_2g Default man_made=mast with 1/2px wide two-level guy lines, actual size 14x14 preview (rendered by Inkscape) mast_thin_thin_2g_actual

imagico commented 7 years ago

Looks good - fine tuning should be done with evaluation in actual rendering.

I have a bit of fear that the single pixel line width will not be sufficiently visible with a busy background so it might also be necessary to go to a 1.5 pixel line width - but that also needs evaluation under practical conditions.

BushmanK commented 7 years ago

Good. Whatever variant will be considered suitable, I can always provide a corresponding SVG.

imagico commented 7 years ago

Why don't you put up a pull request with one of those for testing. For the start this is as simple as replacing the SVG. Most work will be testing at different places. If that works out adding additional rules for the different variants will not be that difficult.

If you don't feel like it you will need to wait until someone else can implement and test it.

BushmanK commented 7 years ago

I'm not sure, what exactly should I do to implement that. I can create a pull-request with just several icons added to it, but I have no idea about testing conventions here and so on. In addition, MapCSS is not a language I'm really familiar with (I can read some styles here, but still not sure about adding completely new rules). Another question is what to do with multiple icons for the same type of object - is there a naming convention for that kind of case?

imagico commented 7 years ago

First of all if you don't have a testing environment set up you would need to start with that, see:

https://github.com/gravitystorm/openstreetmap-carto/blob/master/INSTALL.md

The main thing about testing is that you need to verify your change works and does what you intend it to do by looking at the results in kosmtik. If you then make a sample screenshot of your test render and add it to your PR that is all you need at first.

Don't worry about the language - as said for just testing the icons you don't need to code anything, just replace the svg file. Beyond that you just have to study the existing code and extend and adjust it to what is needed.

There is no codified rule for file names but using the matching tags is usually a good idea - like mast_communication.svg or similar.

If you run into problems with any of these things just ask.

BushmanK commented 7 years ago

Unfortunately, deploying an own testing environment is a bit out of my current abilities for many reasons. I can draw any icons, put it into a pull request to any repository, that's probably all I can offer.

imagico commented 7 years ago

No problem.

wmyrda commented 7 years ago

Thinking about it are masts even used for anything other than communication? Looking at the examples at wiki http://wiki.openstreetmap.org/wiki/Tag:man_made%3Dmast it has tower:type=communication in every proposed case. That makes me think even just using "man_made=mast" in the actual implementation should be drawn even if tower:type=communication tag is missing.

That being said I like the version with "1/2px wide single guy lines" more for OSM as it is just more appealing. IMHO version with "1/2px wide two-level guy lines" is just not recognizable with that 14x14 pixel size.

As for towers it is important to differentiate with tower:type as besides "communication" there are others like "observation" and "bell_tower" which have about 10K uses each see http://taginfo.openstreetmap.org/keys/?key=tower%3Atype#values and those uses are very different from each other.

Skippern commented 7 years ago

There are masts that have other functions than communication, though these are not so common. One example I can think of is hyperbol radio positioning systems, such as NELS/LORAN C, DECCA, Consol, etc. NELS is still active in Europe/Russia, and as far as I know DECCA is still active in India. Just a count from the top of my head, that would amount to somewhat less than 100 masts world wide.

BushmanK commented 7 years ago

Indeed, the vast majority of masts are used for communication. But since not all of them, there should be a default icon that doesn't imply any function at all. We also need that for situations, when function is basically unknown, while mast itself could easily be mapped (from super-high-resolution imagery or street view photos).

In addition, I could easily name some more non-communication masts:

HolgerJeromin commented 7 years ago

Yes, It would be nice to see incomplete tagging and not default to communication.

wmyrda commented 7 years ago

I am not sure of proper tagging for radio masts and likely proper tagging would be to tag them as masts, but for some other examples like metrology or surveillance we have different tagging that quite likely would be used first instead of mast see here: http://wiki.openstreetmap.org/wiki/Tag:man_made%3Dmonitoring_station http://wiki.openstreetmap.org/wiki/Tag:man_made%3Dsurveillance

That being said I acknowledge masts may have different use than communication I code which finally works for me reflects that and few other ideas http://bigvo.hopto.org/osm-extra/carto-patches/013-towers_v5.patch

What the code still needs is more icons (observation and bell towers comes to mind, probably different default for tower) and maybe some changes to the height and zoom level, but the main ideas should be fine.

@BushmanK If You could prepare more icons I'll add them to my test environment http://bigvo.hopto.org/osm/

wmyrda commented 7 years ago

Now that we have hstore in the database I prepared new version of the patch http://bigvo.hopto.org/osm-extra/carto-patches/4.0/013-towers.patch for towers to get them included in the carto. It woulso fix https://github.com/gravitystorm/openstreetmap-carto/issues/2024 as height is also used.

kocio-pl commented 7 years ago

This patch is a bit out of sync - symbols were not in the right directory, so I moved them, but I also got some rejected code in project.mml:

--- project.mml 2017-06-30 23:27:35.468210408 +0200
+++ project.mml 2017-06-30 23:50:00.560814739 +0200
@@ -2098,7 +2104,7 @@
                                                   'residential', 'garages', 'meadow', 'grass', 'allotments', 'forest', 'farmyard', 'farmland',
                                                   'greenhouse_horticulture', 'retail', 'industrial', 'railway', 'commercial', 'brownfield', 'landfill',
                                                   'construction', 'military', 'plant_nursery', 'religious') THEN landuse ELSE NULL END,
-              'man_made_' || CASE WHEN man_made IN ('lighthouse', 'windmill', 'mast', 'water_tower', 'pier', 'breakwater', 'groyne', 'obelisk') THEN man_made ELSE NULL END,
+              'man_made_' || CASE WHEN man_made IN ('lighthouse', 'windmill', 'mast', 'tower', 'water_tower', 'pier', 'breakwater', 'groyne', 'obelisk') THEN man_made ELSE NULL END,
               'natural_' || CASE WHEN "natural" IN ('wood', 'water', 'mud', 'wetland', 'marsh', 'bay', 'spring', 'scree', 'shingle', 'bare_rock', 'sand', 'heath',
                                                     'grassland', 'scrub', 'beach', 'shoal', 'reef', 'glacier') THEN "natural" ELSE NULL END,
               'place_' || CASE WHEN place IN ('island', 'islet') THEN place ELSE NULL END,
@@ -2225,7 +2231,7 @@
                                                       'residential', 'garages', 'meadow', 'grass', 'allotments', 'forest', 'farmyard', 'farmland',
                                                       'greenhouse_horticulture', 'retail', 'industrial', 'railway', 'commercial', 'brownfield', 'landfill',
                                                       'construction', 'military', 'plant_nursery', 'religious') THEN landuse ELSE NULL END,
-                  'man_made_' || CASE WHEN man_made IN ('lighthouse', 'windmill', 'mast', 'water_tower', 'obelisk') THEN man_made ELSE NULL END,
+                  'man_made_' || CASE WHEN man_made IN ('lighthouse', 'windmill', 'mast', 'tower', 'water_tower', 'obelisk') THEN man_made ELSE NULL END,
                   'natural_' || CASE WHEN "natural" IN ('wood', 'peak', 'volcano', 'saddle', 'cave_entrance', 'water', 'mud', 'wetland', 'marsh', 'bay', 'spring',
                                                         'scree', 'shingle', 'bare_rock', 'sand', 'heath', 'grassland', 'scrub', 'beach', 'glacier', 'tree')
                                                         THEN "natural" ELSE NULL END,
@@ -2265,7 +2271,7 @@
                   OR landuse IN ('reservoir', 'basin', 'recreation_ground', 'village_green', 'quarry', 'vineyard', 'orchard', 'cemetery', 'residential',
                                  'garages', 'meadow', 'grass', 'allotments', 'forest', 'farmyard', 'farmland', 'greenhouse_horticulture',
                                  'retail', 'industrial', 'railway', 'commercial', 'brownfield', 'landfill', 'construction', 'military', 'plant_nursery', 'religious')
-                  OR man_made IN ('lighthouse', 'windmill', 'mast', 'water_tower', 'cross', 'obelisk')
+                  OR man_made IN ('lighthouse', 'windmill', 'mast', 'tower', 'water_tower', 'cross', 'obelisk')
                   OR "natural" IS NOT NULL
                   OR place IN ('island', 'islet')
                   OR military IN ('danger_area')

I've made a branch here and at least it renders, but didn't try to work on this rejection, so please look at it.

BTW - the best thing would be if you make a fork of this style, create a branch yourself and make a Pull Request, so we could just examine it.

wmyrda commented 7 years ago

Reason it didn't apply cleanly is likely because it is part of larger patchset I used http://bigvo.hopto.org/osm-extra/carto-patches/4.0/ I'll prepare the code for this patch directly on the present carto

As of branching the code and creating my own pull request it is something I would have to learn/re-learn as it is ages from when I did that therefore I'll rather prepare a patch

wmyrda commented 7 years ago

This one should apply cleanly on carto git http://bigvo.hopto.org/osm-extra/carto-patches/4.0/013-towers_direct.patch

geozeisig commented 6 years ago

A tower is a significant element in the landscape. Therefore, I would like to point out again that we should also have an icon for it. It is not easy to choose one because there are many different types of towers. For this reason it must be a very general and simple symbol as suggested above. We already have icons for insignificant things like hunting stand or mast, so we should be and worth the effort to pick an icon for a tower as well.

kocio-pl commented 6 years ago

The PR is #2671 and I plan to deploy it eventually, but I have no exact time frame for this. If you want to help and speed up the process, you can check the icons and test the rendering for example.

dieterdreist commented 6 years ago

2018-02-13 9:11 GMT+01:00 geozeisig notifications@github.com:

A tower is a significant element in the landscape. Therefore, I would like to point out again that we should also have an icon for it. It is not easy to choose one because there are many different types of towers. For this reason it must be a very general and simple symbol as suggested above.

while I agree that many types of towers should be rendered, I think we should not render all man_made=tower the same, but rather differentiate according to tower type and maybe other tags (height etc) which is now possible due to hstore.

kocio-pl commented 6 years ago

There are multiple icons for different types in this PR and it really uses hstore (like tower:type for example).

geozeisig commented 6 years ago

We have 190,686 towers to date and 58% of them have tower: type. So it makes sense to render this tag with an icon and not wait years for special types. The detailed elaboration is also important and can be operated in parallel. An icon like this would certainly be appropriate: a8fb9828-dfcd-11e6-92a8-47539052faa5

kocio-pl commented 6 years ago

See the test renderings of the mentioned PR code: https://github.com/gravitystorm/openstreetmap-carto/pull/2671#issuecomment-368689153.