-
Notifications
You must be signed in to change notification settings - Fork 819
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Landcover recolour #599
Landcover recolour #599
Conversation
"Base" landuse colours have some issues and are generally without a great deal of reason. As some examples * Lightness is all over the place * Of the "base" landuses only ``landuse=retail`` has a border, but it's strong-red, only it's got a width of 0.3 so you don't realize it. * ``landuse=retail`` is more closely related to shop POIs than ``landuse=commercial``, but ``landuse=commercial`` has a colour more similar to the shop colours A few things are done here * Split out "base" solid landuse colours of residential, retail, commercial, industrial/railway, and farm/farmland. * Gives them all the same lightness of 89. This is about the same as residential and retail were, and lightens the others, particularly commercial and industrial. * This basically flips retail and commercial in some ways. I looked at keeping them more the same, but I kept on tending to this, so decided to do it this way so that there was a colour difference between them * Adjusts chromas * Moves the industrial hue farther away from red. This is necessary with such light colours to allow it to be distinct from commercial while commercial is distinct from both retail and residential. * Adds light lines to the ones missing them, consistent with current retail, school/university/college/hospital/kindergarten and most more POI-like landcover styles * Retail centres, industrial parks, residential development and commercial areas may all be named, and with a name is useful to have a border to indicate what size area the name applies to. * It aids in showing the limits between railway usage and adjacent industrial usage * Farm fields can be individually mapped, and the lines can be useful there, and those areas are typically low-clutter * The effect is intentionally fairly subtle * Widened existing lines around retail, but still under 1 pixel. This helps with antialiasing artefacts. I didn't go all the way to 1, because I found that looked worse where there were two adjacent landuses of the same type. It is possible to compute the difference between colours, either by transforming to Luv and using Euclidean distance, or [calculating directly in Lch](https://en.wikipedia.org/wiki/LCH_color_space#Color_and_hue_difference) ``` Res. Retail Comm. Ind. Farml. Farml. 12.0 12.4 10.0 17.3 0 Ind. 9.0 13.9 8.1 0 Comm. 8.5 7.6 0 Retail 16.0 0 Res. 0 ```
Although not quite a "base" landuse in the same way farmland is, it's worth handling at the same time to keep it in harmony with farmland.
Great improvement. |
I like changes, but I would make farmland even more paler. Borders on landuse=railway are rather poor idea - as it requires either continent-sized multipolygons or ugly rendering somewhere: see http://bl.ocks.org/pnorman/raw/f1b113ca40658de27405/#18.00/50.08300/19.88916 Maybe landuses railway and industrial may differ a bit? In general, I am unsure about whatever borders are a good idea, in many places there is no definite divide between landuses. Why garages landuses have no border unlike everything else? |
generally the changes make the situation much better, in detail:
|
👍 overall.
I'd've gone the other direction with the borders by dropping them from retail. Borders should be reserved for where there's a sense of a single identifiable feature, which is often not the case with landuses. Perhaps make the border dependent on identifying tags like name=*? That's a pattern I see in mapping: retail (no name) = group of shops, retail w/name = mall; residential (no name) = group of houses, residential w/name = housing development/complex. Also, borders can visually compete with our other "thin line" features (barriers and power lines at least). |
I would also prefer dropping borders (in fact I suggested it in #333). Current desert colour is really heavy and aggressive - see for example http://www.openstreetmap.org/?mlat=39.6344&mlon=-118.4687#map=12/39.6344/-118.4687 |
I agree, but out of scope for this PR.
Garages are unchanged. |
Carto did this before when preprocessing, but doing it explicitly makes it easier to make later changes to one but not the other
Railway landuse can span wide areas and sometimes needs to be broken up at arbitrary places, similar to rivers. Faint outlines are maintained on named railway landuse, which is typically yards
I did some work on the outlines and refreshed my demo with 084d9a4. Cache is empty so initial loads may be slow! The railway issue is gone (no image, as there's nothing to see) as I'm only putting an outline on named railway landuses. The other landuse outlines are the same if named, and lighter if unnamed. I've pushed the outline rendering down to z16+, which is when fences, minor_lines, bushes and such appear. I feel these changes fix fence confusion. The industrial colour concerns mentioned in #599 (comment) are unchanged. I'm not sure that there's an issue or risk of confusion. The colours involved are Going farther into purple for either industrial or commercial remains an option. Reducing chroma is not an option - it will become too close to residential then. |
I like new industrial colour, but that is just personal opinion. Is it intentional that in pnorman@596dba6 colour of railway landuse fill is unchanged? I am still not a fan of borders on any unnamed landuses, but overall changes are a great improvement. |
Yes - there's no colour changes here. I might give it a separate variable name for ease in customization |
This makes customization easier and makes it clear that it's intentional that it's the same colour as industrial. The same is not done for farm/farmland because it is unlikely that anyone would want to differentiate between those two tags as they mean the same thing.
@gravitystorm Thoughts on the industrial colour? I'm happy with the rest of this PR Also, I want to take on some of the other bad colouring (e.g. desert and construction, as raised here). Do you think it should be in a follow-up pull request? |
2014-06-04 5:29 GMT+02:00 Paul Norman [email protected]:
thank you, very nice! |
I like all of it a lot! |
This looks overall like an improvement. I have the impression that the retail colour is too bright. What do others think? |
It has more colour (chroma). Edit: To expand on the matter, to reduce the retail chroma would require adjusting the commercial hue to keep them distinct. This would then require the same from industrial, pushing it farther into purple. Which I'd be okay with, but it's important to be aware that reducing retail chroma will do that. |
I also think that retail would look better with less chroma. @pnorman, maybe you could make the changes you described and show a screenshot? |
@residential: #E1E1E1; // Lch(89,0,0)
@residential-line: #B9B9B9; // Lch(75,0,0)
@retail: #F4DAD6; // Lch(89,10,30)
@retail-line: #DFADA7; // Lch(75,20,30)
@commercial: #F0DAE5; // Lch(89,10,345)
@commercial-line: #D8ADC3; // Lch(75,20,345)
@industrial: #E2DDF0; // Lch(89,10,300)
@industrial-line: #BCB4D8; // Lch(75,20,300)
@railway: @industrial;
@railway-line: @industrial-line; Industrial on the left, commercial in the middle, retail on the right. Note: After CIE-Lch to sRGB conversion, the values get rounded to the nearest integer (256th of 100%). In the case of industrial, it results in the chroma being 10.1 and the others are 9.8. If we're okay with this general look, I might slightly tweak the values to get better post-conversion agreement. |
All looks great to me, so I've merged this in. Feel free to open further pull requests to tweak colours or tackle additional ones as you see fit. |
Note that the rendering algorithm for outlines in Mapnik is quite counterintuitive. I gave forest a 2px red outline and grassland a 2px blue outline with the following result: It seems most of the outline is rendered on the outside of polygons, with the exception of a sliver of less than a pixel (this might have to do with the gamma setting). That means that with outlines of at least a pixel, in the case of two adjacent polygons, only the polygon that is drawn second is drawn with outline. If the second drawn polygon doesn't have an outline, the size of the outline is restricted to less than a pixel. CC @pnorman |
While working on #565 I realized that the landuse colours are generally without reason. As some examples
landuse=retail
has a border, but it's strong-red, only it's got a width of 0.3 so you don't realize it.landuse=retail
is more closely related to shop POIs thanlanduse=commercial
, butlanduse=commercial
has a colour more similar to the shop coloursAs a background, you can work in several different colour systems when picking colours. The best ones to work in are perceptual colour systems like CIELAB, CIELUV, and the angular variants. Unfortunately carto does not support these systems, so you need to convert to/from them. Fortunately, there are websites that will do that for you, and websites with colour pickers.
This pull request adjusts the colours for residential, retail, commercial, industrial/railway, farm/farmland, and farmyard. Exact details in the commits.
I've placed a demo up at http://bl.ocks.org/pnorman/raw/f1b113ca40658de27405. Coverage is British Columbia, Washington, Northeast US, Tokyo, and Krakow.
Vancouver has all of the adjusted landuse within it, and one good example is in New Westminster, where there are Residential, Commercial, Retail and Industrial landuses near each other: http://bl.ocks.org/pnorman/raw/f1b113ca40658de27405/#16.00/49.2/-122.92
Industrial
Retail/Commercial (New to the right, Riverside Plaza is Retail, Riverside Business Center is Commercial)
Retail/Commercial
Residential
Residential
Low-zoom Industrial
Farms
Many farm fields
Low-zoom farms