MapProxy
Some map services are unreliable because they are unreachable, sometimes for days. I can address this problem using MapProxy though.
There is a cache engine built into GeoServer, I write about it here: GeoWebCache, I have tried to make it work but keep coming back to MapProxy because it's easier to set up.
Local usage notes
I'm using MapProxy in Docker. I started to install mapproxy directly on the host then realized yet again I'd be making a bunch of changes to the host just for this one app.
My github repository is https://github.com/wildsong/docker-mapproxy. The project contains more detailed notes.
Storage
I tried CouchDB as the data store for a few months until one day it stopped working. I switched back to files. MapProxy supports other back ends but it's hard to beat files for simplicity.
Compose
I started off using Docker Compose to start both MapProxy and CouchDB and to link the containers together. Putting it behind an ArcGIS Enterprise portal requires that it respond on port 443, so at work I do that with a reverse proxy. At home I run it without a proxy, just using it for testing.
Oregon Explorer service glitch
I figured out trial and error that two of the OE services won't deliver usable data on WMS, only on WMTS. Something to be aware of! I will probably drop them a line some day and ask why it's broken.
Wish list
How much of this can I do with Geoserver right now today?
API
Keep config in SQLite instead of flat files?
Read only
- usage stats
- storage usage
- cache status
- seed status
- backend info
- start / stop / restart a service
- add a service
- delete a service
Admin
- clear cache
- start stop seeding
- get | set thumbnail
- get | set description
Multiple services
I want to be able to group services, for example, a service called "or-ex"
Oregon Explorer OSIP2018 NAIP2016 etc
and one called "dogami"
DOGAMI hillshade BE hillshade
so that I can group things in maps. I think the layout is supposed to be like this:
config/ mapproxy.yaml -- default example not used in this case globals.yaml -- included from each file in services services/ or-ex.yaml -- creates the service http://hostname/or-ex dogami.yaml -- creates the service http://hostname/dogami