gravitystorm / openstreetmap-carto

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

Water is not rendered for parks extending over coastline #2609

Closed artischocke closed 7 years ago

artischocke commented 7 years ago

In South Florida, I've come across cases where a park extending over coastline areas results in water not being rendered over the green color of the park. One such example is Oleta River State Park 1

where, aside from the very odd location chosen by the rendered for the park's label, coastline features aren't visible over the green cover of the park. Here's the same view with the coastline features visible using OSMI's Coasline view 2

I had worked around this issue by creating relations which included the coastline way as the park's boundary, but in this case I believe it would be incorrect to exclude the surface of the water from the park's limits just to get the water to render (i.e. mapping for the renderer), so I thought I'd ask whether this was intended behavior or a bug. If the former, what would be a reasonable but still correct workaround?

imagico commented 7 years ago

Here specifically this could be considered a tagging problem, i.e. you want to use leisure=park for something other than what it is meant for (open, green area for recreation).

More generally this is a duplicate of #1473 which is meant to be be fixed by #1982.

imagico commented 7 years ago

The label is indeed wrong by the way, does not appear to be a data glitch since it is the same in the German style - looks like a Mapnik bug to me - likely https://github.com/mapnik/mapnik/issues/3558

artischocke commented 7 years ago

@imagico thanks for the answer, but I would say "open, green area for recreation" is a very narrow definition of what a park can be. I take 'open' to mean outdoors as opposed to covered (otherwise places with thick tree cover wouldn't fit the definition), and 'green' would necessitate that recreation activities take place exclusively over grass. Even if we ignore the fact that the name includes the word Park , it would seem to me that the site is indeed a park as most of its attributes and facilities match the definition offered by Wikipedia.

All that aside, the official park boundaries are over coastal waters, so whether we think that's correct or not, it's simply something that exists in the wild.

1

So if I'm understanding correctly, the takeaway here is that a leisure=park cannot (due to technical limitations) extend over coastlines, correct? The park is alternatively called Oleta River Recreational Area. Would I encounter the same behavior if the park were tagged landuse=recreation_ground. I feel that's the wrong tag and tagging for the renderer, but I'm curious if it would yield the same result.

Unfortunately, there are far more complex cases in Florida, such as West Lake Park just farther north. Here, there is a bay (which is also not rendered) with many many more features involved. The alternative of mapping this with the coastline ways on the intracoastal and all others in a natural=water relation seems unintuitive and unnecessarily complex. Thanks again for your feedback..

2

dieterdreist commented 7 years ago

sent from a phone

On 12. Apr 2017, at 19:06, artischocke notifications@github.com wrote:

Unfortunately, there are far more complex cases in Florida, such as West Lake Park just farther north. Here, there is a bay (which is also not rendered) with many many more features involved.

are you sure this should be mapped as leisure=park? Seems a good candidate for leisure=nature_reserve

a leisure=park is a man_made landscape, purposefully arranged "natural" objects

imagico commented 7 years ago

Ok, let's not start a tagging discussion here. I just wanted to mention the possibility that excluding this water area from the park might actually be the correct way to map this. This is not because of the way it is rendered here though - the current rendering behavior is not in any way meant to suggest that certain ways of mapping things are correct and others are not. The idea simply comes from the current meaning of the tag.

If you want to discuss where exactly to use leisure=park and how to tag official park boundaries for some meaning of the term 'park' better places would be the tagging mailing list or the OSM wiki.

dieterdreist commented 7 years ago

2017-04-12 23:12 GMT+02:00 Christoph Hormann notifications@github.com:

Ok, let's not start a tagging discussion here. I just wanted to mention the possibility that excluding this water area from the park might actually be the correct way to map this. This is not because of the way it is rendered here though - the current rendering behavior is not in any way meant to suggest that certain way of mapping things are correct and others are not. The idea simply comes from the current meaning of the tag.

If you want to discuss where exactly to use leisure=park and how to tag official park boundaries for some meaning of the term 'park' better places would be the tagging mailing list or the OSM wiki.

I believe tagging is important here. If you accept that parks are about "man made nature", this might exclude coastal waters in general, so there'd be no need to revisit the rendering for these. The "park" in question is described like this on the web:

"The ecological importance of the relationships between mangroves, our coastal waters, and the adjacent uplands cannot be overemphasized. West Lake is the largest remaining mangrove ecosystem in the 85-mile, highly developed urban coastal zone from Miami Beach to West Palm Beach. This vital coastal land provides valuable natural resources and significant recreational opportunities to urban residents and visitors." from: http://www.broward.org/Parks/WestLakePark/Pages/Default.aspx

look at terms like "remaining", "natural resources", and "mangroves", clearly a natural reserve (IMHO).

artischocke commented 7 years ago

@dieterdreist thanks for your thoughts regarding tagging. I would agree that West Lake fits the definition of a natural reserve better than that of a park. Unfortunately, the distinction isn't often clear to mappers, especially in cases where the name would seem to indicate they're parks. I'd maintain, however, that the in the case of the original question, Oleta River, is indeed a park. Secondly (and most relevant to this discussion), my point was that (correctly tagged) parks might extend over coastlines, at least with respect to the official park boundaries. Whether the renderer chooses to apply an appropriate layering in such cases seems to me more a question of being strict about the semantics of a tag vs. being lenient & practical and accommodating real-world scenarios.

The only question that remains open for me is whether the same would happen with a recreation ground. Thanks again for your comments.

dieterdreist commented 7 years ago

sent from a phone

On 15. Apr 2017, at 13:02, artischocke notifications@github.com wrote:

The only question that remains open for me is whether the same would happen with a recreation ground.

if you believe that "parks" which are (partly) in the sea are correctly tagged with leisure=park (which I am also not categorically refusing on second thought, e.g. there could be something belonging to a park in the waters nearby, hence extending the park into the sea), then the same might be true for recreation grounds as well (besides maybe the actual meaning of the word "ground")

mboeringa commented 7 years ago

being lenient & practical and accommodating real-world scenarios.

This is the difference between a hand-drawn map and a fully automatically created one like this. There are technical hurdles that make accommodating every wish of a single user impossible. You are more or less asking for a hand drawn map with this request.

As to the technical side of this issue: there is a cartographic choice of the developers of this style to render parks with a solid light green fill, which probably goes back to historic maps and is also frequently used in other styles (e.g. Google).

Solid-on-solid can't be displayed at the same time. Sea/ocean bodies are rendered below anything else, which is necessary as otherwise all islands and islets need to be cut from all waterbodies world wide. This would result in unmaintainable large MPs (multipolygons). Hence the park will cover the sea/ocean when you draw it across the coast. (EDIT: thinking about it a bit more, not entirely sure if this explanation is fully right... although it is clear sea sits below parks in the rendering)

A solution would be to render all parks as outline or even only with a label and no physical representation like an outline or fill. That requires the park to have a name to be visible (which is probably not a big issue, since most parks have them).

However, that breaks consistency with past choices. Such a potential change though, is neither good nor bad, just as the original choice to render with solid fill isn't good or bad. It is simply a cartographic styling choice, nothing else (and whatever you do, each one has consequences...)

artischocke commented 7 years ago

@mboeringa thanks for your input. I understand there are technical reason why this doesn't work as I mentioned in my first comment to @imagico, and I'm satisfied with that answer so long as the limitation is well understood (it's clearly well understood in this community, but it was unexpected behavior to me as a mapper).

You are more or less asking for a hand drawn map with this request.

I was simply asking whether this was intended behavior or a bug :-) I was also looking for your feedback in an appropriate workaround in case it was intended behavior. That was my intention when writing up this issue, just in case there was something which needed fixing, or otherwise find a way to make it work within reason given the limitations.

To recap, I'm fine with the rendering of parks, I understand why it happens and why it is a limitation of the renderer. That said, I don't subscribe to the view any park extending over coastal waters is incorrectly mapped and that all parks should be restricted to land and "open, green areas"; there are valid uses of parks which extend over coastal waters in my view (same goes for recreation areas).

Thanks again for taking the time to get back to me on this so quickly comprehensively! Cheers!