[OSM-dev] Scale of downloaded images seems to vary.

Tom Hughes tom at compton.nu
Thu Jan 11 10:47:15 UTC 2018


On 11/01/18 10:38, Bjoern Hassler wrote:

> (1) DPI on exported images
> 
>     Actually isn't the real problem here just needing to know what DPI
>     is being being assumed by mapnik when rendering?
>     IIRC it's 96dpi?
> 
> 
> As you say (and also in the link Yves posted) it's about 90.7dpi, 
> standard pixel size of 0.28 millimeters as defined by the OGC (Open 
> Geospatial Consortium) SLD (Styled Layer Descriptor). However, the 
> images downloaded are claiming 72dpi. I need to check whether they don't 
> have  dpi metadata (and therefore my OS assumes 72) or whether they are 
> tagged incorrectly.
> 
> Either way, that sounds like a discrepancy though, right?

If you're fetching PNG then does PNG even have a way of specifying the 
DPI in the format?

Frankly it's not something I'm going to lose much sleep over and may 
well not be anything we have any control over.

> (2) "project the bounding box from EPSG:4326 lat/lon to spherical 
> mercator which gives us coordinates on a projected sheet measuring 
> roughly 40075016m on each edge (2 x PI x assumed earth radius)."
> 
> That's very helpful. What is the function (of latitude) that maps the 
> sheet to the smaller scale map? I'd assumed cos(lat), but it seems to be 
> more complicated. I can dig around, but if you happen to know it, then  
> don't need to dig around. The code has this:
> 
>     scale = float(form.getvalue("scale"))
>     width = int(bbox.width() / scale / 0.00028)
>     height = int(bbox.height() / scale / 0.00028)
> 
> where I assume form.getvalue fetches the "mapnik_" form. So, 
> equivalently, it would be about the variation of the bbox.width() with 
> lat, in the  spherical mercator projection. Any thoughts on this?

I don't think there is one simple function. We (or rather mapnik) just 
uses the proj4 library like everybody else that does this stuff. You can 
see the precise configuration we feed it a few lines above that in the 
source.

It then does a load of funky maths that I'm not even going to try to 
understand.

> (3) Filing a bug: Clearly there's nothing wrong with the rendering (bar 
> issue 1 above?). However, one might say that the 'scale' label on the 
> box is misleading to a casual user, as users would assume geographical 
> scale, rather than mapnik_scale. Would it be helpful to users to have a 
> few words underneath to the scale box, saying "Note that this is not 
> geographical scale." and link to page that explained how to convert?

I'm not really sure what you mean by geographical scale?

Like any other projected map the value we show is the amount by which 
the projected sheet is scaled. Basically you unwrap the globe (or part 
of the globe that you are dealing with) and do the necessary funky 
stretching to make it a flat sheet than you scale that sheet by the 
specified amount. That is how every printed map you see works.

Because this is a digital version there is then a second step of how 
many pixels you use for each physical unit.

Tom

-- 
Tom Hughes (tom at compton.nu)
http://compton.nu/



More information about the dev mailing list