I'd like to use a central server to provide a common location for all of our mapping / imagery resources. Our data is primarily in the form of geotiffs with a variety of base layers from various sources on the web.
Geoserver, given a set of geotiffs, does a nice job of serving up tiles (via WMTS or TMS). However, I don't know of a way to easily proxy other external sources of data like the sample base layers from http://services.arcgisonline.com/ArcGIS/rest/services. Unfortunately, it doesn't seem like many services implement a WMS layer (or don't make it public). Currently we have logic in our application to special case various web services but it is a bit of hack. Ideally I'd like to present a common web services interface to all our tiling providers. This would enable WMS clients like world wind applications to "just work".
My only thought right now is to build a small python web service that would expose a list of capabilities via WMS and then add this service into geoserver as a cascading WMS store. This seems like a lot of work to simply serve up map tile URLs.
I am curious if this this problem has been solved before or if there is an easier solution.
Thanks!
Best Answer
You might want to check out MapProxy. It is an open source proxy for geospatial data. It caches, accelerates and transforms data from existing map services and serves any desktop or web GIS client.
It reads data from:
It can also
MapProxy is also a full compliant WMS server and supports any WMS client (desktop and web). It supports WMS responses from cached data:
and cascaded WMS services:
It also supports combinations of cached and cascaded layers:
You can also pre-generate the tile cache for better performance.
It also comes with a flexible authorization API that allows you to add fine-grained control over services and layers.