[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