[OSM-dev] OpenStreetMap Cartographic: A client-side rendered OpenStreetMap Carto

Christoph Hormann osm at imagico.de
Mon May 25 13:56:03 UTC 2020


On Monday 25 May 2020, Paul Norman via dev wrote:
> https://github.com/pnorman/openstreetmap-cartographic.

In general this looks like a good approach to evaluate where the 
practical issues are without being bogged down by bloated legacy tools 
(well - except for the client side of course).

> Landuse, vegetation, and other natural features are not rendered
> until zoom 7. This is the scale of OpenStreetMap Carto zoom 8, and
> these features first appear at zoom 5. There are numerous problems
> with unprocessed OpenStreetMap data at these scales. OpenStreetMap
> Carto gets a result that looks acceptable but is poor at conveying
> information by tweaking Mapnik image rasterizing options. I'm looking
> for better options here involving preprocessed data, but haven't
> found any.

Yes, i think this style as is is a good demonstration that the current 
approach used universally in the industry (and that is used in 
ST_AsMVT() as well) of performing per feature lossy vector geometry 
compression (usually in combination with way_area filtering) is a dead 
end.  You can see that nicely if you overzoom the demo map:

http://imagico.de/files/screenshot_cartographic.png
http://imagico.de/files/screenshot_carto.png

This creates a lot more artefacts and noise in the rendering than the 
AGG rendering issues in Mapnik typically do even at the resolution it 
is intended for - including counterproductively adding a lot of high 
frequency noise in many cases.

> Often forgotten is the development requirements. The style needs to
> support multiple developers working on similar areas, git merge
> conflicts while maintaining an easy development workflow. I'm still
> figuring this out. Mapbox GL styles are written in JSON and most of
> the tools overwrite any formatting. This means there's no way to add
> comments to lines of codes. Comments are a requirement for a style
> like this, so I'm investigating minimal pre-processing options. The
> downside to this will make it harder to use with existing GUI editors
> like Fresco or Maputnik.

I think this is a point that cannot be overstated.  Mapbox GL JSON (or 
FWIW JSON in general) in contrast to CartoCSS is a software developer 
centered format and not a cartographer centered format.  Many 
mainstream low sophistication users of client side vector tile 
frameworks focus exclusively on interactive editors and not working on 
the code level - which as you explained is not an option for a 
cooperative community project or for styles with a higher level of 
sophistication.

Just re-casting the JSON data structures in a different format easier to 
edit by hand, suitable for comments and leading to well readable diffs 
is IMO not enough for a truly cartographer centered approach.  But this 
is definitely a hard problem because there are so many in parts 
opposite requirements.

Having a reference renderer that does not build on an extremely complex 
and platform dependent framework (a.k.a. web browser) would be 
important for style development - i think Joseph also hinted in that 
direction.  It would also be important for things like automated tests 
etc.

One other thing to keep in mind - OSM-Carto uses polygon fill patterns a 
lot for differentiating different types of polygons.  While it is in 
principle possible to show fill patterns in continuous zooming in an 
ergonomic fashion i have so far never seen maps in the wild doing that.  
This would be something to consider if you want to create a style 
similar in the richness of landcover rendering to OSM-Carto.

-- 
Christoph Hormann
http://www.imagico.de/



More information about the dev mailing list