[MapProxy] pbf vector tiles cachen
Steven M. Ottens
steven at minst.net
Thu Jan 21 15:19:41 PST 2016
HI,
To answer my own question: yes it can! Though it is not for the faint of
heart and to do it properly requires input from the mapproxy devs. The
main problem is that MapProxy assumes it is going to work with images,
the first problem being that it will request meta-tiles and split those
into actual tiles. This is easily circumvented by adding
meta_size: [1, 1]
meta_buffer: 0
to you cache configuration.
The next hurdle is the _check_resp function in /client/wms.py, which
checks if the response from the WMSserver is an actual image, it checks
lazily whether or not the headers are of the proper type, you can
circumvent this by extending the check like this:
if not (resp.headers.get('Content-type', 'image/').startswith('image/')
or resp.headers.get('Content-type',
'application/').startswith('application/x-proto')):
The final one is that MapProxy doesn't know .pbf so it won't request a
protobuffer file from GeoServer, a dirty solution would be to add to
your sources config:
supported_formats: ['/application/x-protobuf']
(note the extra / in the beginning, for some reason MapProxy replace the
bit before the first / with image/)
This way it will request protobuffer files from GeoServer regardless of
the filetype you use in your request. This is quite a dirty hack, since
now I'm requesting .png files and I receive .pbf files. The files it
self are cached as expected and loaded from cache when available.
So yes in theory mapproxy can cache vector tiles, though it needs quite
some work to do it more elegantly.
The big question is of course if caching vector tiles should be a
feature of MapProxy at all.
Cheers,
Steven
On 1/20/2016 5:44 PM, Steven M. Ottens wrote:
> Hi all,
>
> Geoserver nowadays has a plugin [1] to render vector data as vector
> tiles in the mapbox vector tiles specification (.pbf) [2]. It supports
> WMS requests with the format=application/x-protobuf parameter. I was
> wondering how hard it would be to have mapproxy handle wms-c and tms
> requests and cache the .pbf tiles. I am aware that the more advanced
> features of mapproxy, like WMS, reprojection, metatiles will not work
> as long as mapproxy can't read protobuffer files, and even if it does
> it would be a difficult thing. But I'd like the easier bits: turn a
> TMS request into the correct WMS-request, retrieve the .pbf file,
> store it locally and serve it to the client.
>
> Any idea if this would be feasible at all, and if so how much work
> would it be to implement it?
>
> Cheers,
> Steven
>
> [1] https://github.com/stefan0722/gs-mvt
> [2] https://github.com/mapbox/vector-tile-spec
> _______________________________________________
> MapProxy mailing list
> MapProxy at lists.osgeo.org
> http://lists.osgeo.org/mailman/listinfo/mapproxy
More information about the MapProxy
mailing list