[MapProxy] Browser "Zoom" setting vs. mapproxy
    Charles Wilson 
    cygwin at cwilson.fastmail.fm
       
    Thu Jan 19 08:51:22 PST 2017
    
    
  
I'm using mapproxy (+nginx) as a WMS frontend for a number of separate 
services, including an apache/mod_tile/renderd/mapnik openstreetmap tile 
server. It's working fine for the most part, but one of my users has 
noticed an issue.
If he sets the browser "zoom" level (e.g. on Firefox, clicking the menu 
icon reveals a "- 100% +" zoom control; on Chrome, clicking the menu 
icon shows a "Zoom - 100% + [_]" control). If this setting is not 100%, 
the OpenLayers request to the map server is modified, and fails.
This works (zoom at 100%):
GET 
http://server:8088/service?SERVICE=WMS&VERSION=1.1.0&REQUEST=GetMap&FORMAT=image%2Fpng&TRANSPARENT=true&LAYERS=osm&TILED=true&WIDTH=256&HEIGHT=256&SRS=EPSG%3A3857&STYLES=&BBOX=-60112525.02836773%2C20037508.342789244%2C-20037508.34278924%2C60112525.02836773 
This doesn't (zoom at 80%):
GET 
http://server:8088/service?SERVICE=WMS&VERSION=1.1.0&REQUEST=GetMap&FORMAT=image%2Fpng&TRANSPARENT=true&LAYERS=osm&TILED=true&WIDTH=205&HEIGHT=205&SRS=EPSG%3A3857&STYLES=&FORMAT_OPTIONS=dpi%3A72&BBOX=-60112525.02836773%2C20037508.342789244%2C-20037508.34278924%2C60112525.02836773 
and returns the following:
<?xml version="1.0"?>
<!DOCTYPE ServiceExceptionReport SYSTEM 
"http://schemas.opengis.net/wms/1.1.0/exception_1_1_0.dtd">
<ServiceExceptionReport version="1.1.0">
     <ServiceException>Invalid request: invalid tile size (use 
256x256)</ServiceException>
The difference between the two requests is:
works: &WIDTH=256&HEIGHT=256
doesn't: &WIDTH=205&HEIGHT=205  and &FORMAT_OPTIONS=dpi%3A72
Is there a way to configure mapproxy, in its swiss-army-knife role, to 
do this simple resizing itself (thus requesting the original 256x256 
tile from the backend tileserver, and then explicitly scaling (*not* 
reprojecting) to the requested tile size? Note that setting up an 
entirely separate cache (as several "how to create a 512x512 tiles from 
a 256x256 tileserver" tutorials recommend) is not appropriate here, 
because you have no idea what specific zoom levels the client's browser 
will use -- 80%, 90%, 56.123%, 112.65%, ... -- so that "solution" would 
end up only supporting the specific browser-zoom-levels for which 
separate explicit caches exist.
Here's my current (stripped down) mapproxy configuration:
services:
   demo:
   wms:
     md:
       title: MapProxy WMS Proxy
       abstract: Proxy for multiple backend geodata services
layers:
   - name: osm
     title: OpenStreetmap WMS
     sources: [osm_cache]
caches:
   osm_cache:
     grids: [osm_grid]
     sources: [osm_source]
     disable_storage: true
sources:
   osm_source:
     type: tile
     grid: osm_grid
     url: http://osm:80/osm_tiles/%(z)s/%(x)s/%(y)s.png
grids:
   osm_grid:
     base: GLOBAL_MERCATOR
     srs: 'EPSG:3857'
     origin: nw
Thanks,
Chuck Wilson
    
    
More information about the MapProxy
mailing list