Great news! Except... now we have to find the services so we can use them in clients. The web services mantra is "publish, find, bind". "Publish" is going great guns, "bind" is working well with good servers and clients, but "find"... now that is another story.
The OGC has a specification for a "Catalogue Services for the Web" (CSW), which is supposed to fill in the "find" part, but:
- It is 180 pages long;
- You also need a "profile" for services, another 40 pages; and,
- The profile catalogues information at a "service" level, rather than at a "layer" level.
For example, if you want a quick raw listing of spatial web services, try this link:
Instant gratification, and you did not have to read a single page of the CSW standard!
With a little Perl, some PostgreSQL and PostGIS you can turn the results of the above into a neat layer-by-layer database and allow people to query it with a very simple URL-based API:
This kind of simple catalogue access became a clear necessity while we were building uDig -- there were no CSW servers available with a population of publicly available services, and in any event the CSW profiles did not allow us to search for information by layer, the fundamental unit of interactive mapping.
By using this simple API and properly populated catalogue, we turned uDig into a client that implemented all the elements of the publish-find-bind paradigm, and exposed them with a drag-and-drop user interface. A user types a keyword into the uDig search panel, selects a result from the return list, and drags it into the map panel, where it automatically loads.
So where does this leave the OGC catalogue effort? Still waiting for clients. There are server implementions from the vendors who sponsored the profile effort, but the client implementations are the usual web-based show'n'tell clients, not clients cleanly integrated into actual GIS software. All web services standardization efforts have a chicken-and-egg quality to them, as the network effects of the standard do not become apparent until a critical mass of deployed clients can hit a critical mass of populated servers. Both halves of the equation are required: useful clients, and useful servers.