WMS and URI addressability

Recently I commented that the saving grace of the the OGC's Web Map Service protocol is that one can use URL rewriting or other tricks to hide parameters like service, request, and version – junk, as in "junk DNA", to those of us who will never in practice rely on protocol version negotiation – and expose to users not a service endpoint but an infinite space of map images addressed by URLs. For example, this request:

GET /geoserver/wms?service=WMS&request=GetMap&version=1.1.1
    &format=image/png&width=800&height=600&srs=EPSG:4326
    &layers=states&styles=population&bbox=-180,0,0,90
Host: http://example.com

Can be replaced by:

GET /maps?format=image/png&width=800&height=600&srs=EPSG:4326
    &layers=states&styles=population&bbox=-180,0,0,90
Host: http://example.com

Or even, using a specialized host, by:

GET /EPSG/4326/states_population.png?bbox=-180,0,0,90&size=800,400
Host: http://maps.example.com

It is the constraint of HTTP called URI addressability that makes this possible. URI addressability means that "a URI alone is sufficient for an agent to carry out a particular type of interaction" [TAG Finding 21 March 2004]. Rewritability isn't the only nice property of resources that are addressable by URIs; it's also then possible to bookmark resources, share links to them, cache them effectively, and migrate users to new locations.

More precisely, the saving grace of WMS is that its protocol parameterization doesn't obstruct URI addressability.

Comments

Re: WMS and URI Addressability

Author: Matt Priour

This is precisely what I would favor. Build good 'geo' server technologies and then use HTTP protocols & URI handlers to provide interaction by REST & OGC Standards techniques.

One could go even further with your example and have the root URI of the resource respond with metadata and provide the required parameters for gridded (server cacheable) tiles, defaulting to standard tile size, grid bbox & resolutions.

In this way you could have any reference system, area, tile size, etc referenced using an X Y Z uri construction that is popular in the commercial web mapping apis and so easily used in OpenLayers and other mapping clients as well.

ArcGIS server is the only server that I know of that is currently implementing something like this. It would be relatively simple to implement a service wrapper for any of the other OGC compliant servers that would allow that kind of interaction.

While I like Atom RSS type interactions for feature reporting, I think URI addressing is a much better method for any dynamic, arbitrarily styled and generated image resource.