[GIS] geoserver support to proxy other tiling services

geoserver

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.

enter image description here

It reads data from:

  • WMS sources (1.0.0–1.3.0)
  • TMS/WMTS sources Mapserver and Mapnik configurations
  • any TileCache, Google Maps or Bing compatible source

It can also

  • cache data on filesystem, as MBTiles or inside CouchDB
  • reproject WMS sources to other SRS
  • store identical images just once (e.g. ocean tiles)
  • embed watermark in tiles
  • merge multiple sources
  • limit sources to polygon areas

MapProxy is also a full compliant WMS server and supports any WMS client (desktop and web). It supports WMS responses from cached data:

  • merges tiles and scales or reprojects images
  • accelerates existing WMS 10 to 100 times

and cascaded WMS services:

  • multi-threaded requests
  • merges multiple sources
  • adds transparency to opaque layers
  • reprojects on-the-fly

It also supports combinations of cached and cascaded layers:

  • respond to GetLegendGraphic requests
  • cascade GetFeatureInfo requests with optional XSL transformations
  • limit sources to polygon areas
  • convert WMS versions and image formats
  • support for non-image raster data like DEMs

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.