[MapProxy] Browser "Zoom" setting vs. mapproxy

Oliver Tonnhofer olt at omniscale.de
Fri Jan 27 07:45:08 PST 2017


Hi,

tiled=true enables the WMS-C mode. WMS-C only allows requests that exactly match tiles in your cache.
See: https://mapproxy.org/docs/nightly/services.html#wms-c
Everything should work as expected if you remove that parameter.

Regards,
Oliver

-- 
Oliver Tonnhofer  | Omniscale GmbH & Co KG  | https://omniscale.com
OpenStreetMap WMS and tile services         | https://maps.omniscale.com





> On 19.01.2017, at 17:51, Charles Wilson <cygwin at cwilson.fastmail.fm> wrote:
> 
> 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
> 
> 
> 
> _______________________________________________
> MapProxy mailing list
> MapProxy at lists.osgeo.org
> https://lists.osgeo.org/mailman/listinfo/mapproxy



More information about the MapProxy mailing list