Web Geo-Processing, Pull Style

The growing consensus is that map image and feature services can be (and should be) done RESTfully. Is there any aspect of web GIS that cannot? Geo-processing, perhaps?

Last week I started to roughly sketch out how one might RESTify an OGC Web Processing Service (WPS). Post data to a process resource, get back a 202 ("Accepted") response with a "job" URL to be checked for status ... more or less what Richardson and Ruby propose in Chapter 8 of "RESTful Web Services". Then I remembered that there is a different approach, at least for data that is already on The Web: pull your data through a processing resource with HTTP GET. Like Yahoo Pipes.

I've got a feed at http://pleiades.stoa.org/places/settlement/classical.atom. It contains the locations of human settlements in ancient Lycia and Pisidia attested to be occupied during the Classical period, and I want to find the intersections of their spheres of influence. For that matter, I'd like anyone to be able to find those intersections, using whatever radius they wish. Furthermore, I'd like to let people process practically any GeoRSS feed in this way.

To this end, I've made a process resource at http://sgillies.net/mush/self-intersection. You pull another feed through it via a URL like:

http://sgillies.net/mush/self-intersection/
?url=http%3A%2F%2Fpleiades.stoa.org%2Fplaces%2Fsettlement%2Fclassical.atom&d=10.0

The source data's URL is provided as the url parameter, and a radius of 10.0 kilometers is specified using the d (distance) parameter. Go ahead and get the result feed and display it using Google Maps.

http://sgillies.net/images/overlaps.png

Here are a couple more examples:

OpenContext projects feed, 200 km intersections

Geo-Annotated Reuters News feed, 100 km intersections

Interested? Feel free to try the user interface to the services at http://sgillies.net/mush.html.

Keep in mind that this service is just an educational toy. There's little support for asynchronous processing, and attempts to pull big feeds will certainly time out. Feeds with less than 50 or so intersections will be fairly responsive. YMMV. I'll try to keep it running as much as I can.

Intersection of 2 different feeds is obviously the next step.

Comments

By ref + by value

Author: Keyur

Sean, Taking url as input works great for someone who has the web infrastructure (a public web server among other things) at their disposal - I call this the "parameter by reference" approach... But for casual users without this infrastructure, it'd be handy to also allow the value directly in the parameter - "parameter by value". Of course, parameter by value does not work for large datasets - you have to do parameter by ref for such cases or do a POST... But for users who are trying to do simple things (ex. buffer a single point) it works very well. Cheers.

Re: Web Geo-Processing, Pull Style

Author: Sean

You can say "parameter by reference"; I'll say "pull".

Re: Web Geo-Processing, Pull Style

Author: Kyle

Wow... a very cool gp tool you have here. This gets me so excited for what's to come on this new frontier!