Take the 2-minute tour ×
Geographic Information Systems Stack Exchange is a question and answer site for cartographers, geographers and GIS professionals. It's 100% free, no registration required.

I am searching for any examples of implementing a logic that Esri has built with geoprocessing services. You author a custom tool or it can be a system tool >> you publish it exposing this functionality as a web service >> you consume the web service with a client.

A classical simple example: user can click on the map to create a point > the coordinates are sent to the server > buffering operation is being executed at the back-end > the buffer zone feature (or just an image) is sent back to client and shown on the map canvas. I've been developing Esri GP services for last 3 years and it has been a nice experience specifically since version 10.1.

Are there any examples of the open source system/solution that one could use to build a similar logic?

I've googled and found sextante gis but there was nothing specific on how this works and how much of logic that is available through Esri is available. 52North also seem to be working on that, but again I am missing the clean explanation of the concept.

share|improve this question

2 Answers 2

Using Pre-existing WPS or Building Them

There is a whole description/tutorial on web processing services (WPS) found here. Most of this is going to be done using HTTP requests sent to a server like GeoServer that is hosting this process. The GeoServer link will outline the general process of hosting and calling a WPS using their software. GeoServer's WPS extension comes with JTS Topology Suite processes, which is a library of a common spatial functions such as buffering and intersection operations. Here is their example on executing a buffer operation using the JTS library.

Other Ways

There are other ways to do it though. Our web team uses queries against their PostGRE/PostGIS database to do simple analysis, but I am not familiar with that fully.

One idea I have been starting to research involves using open-source python scripts such as PySal/GDAL to do spatial analysis. You would need to use some JavaScript/AJAX (or whatever server-side language) to execute those scripts on your server and spit back out the results. It would be a complicated option, but I believe it would give you better customization options as opposed to ESRI.

I think you should be able to break down features into a GeoJSON string to pass as a parameter into the python scripts. From there, you would need to convert that result back into a GeoJSON string to pass back to the client to display. Python packages such as Shapely can interpret a GeoJSON string. Others might need some work-around written up to utilize GeoJSON, or there may be a better option I haven't thought about using.

Another option would be to use GeoTools to write up a Java web application that would do spatial analysis. This also supports GeoJSON strings and has some built in spatial analysis functions. They have some screenshots showing their various applications.

It is doable to create your own WPS or run a server-side script. It won't be as easy as ESRI makes it, but it would be free if you're using open-source.

Whatever route you decide, update it here since it is a great topic!

share|improve this answer
    
thank you very much, great answer. You named one of the alternatives I kept in mind - trigger Python .py files from JS web page storing the submitted by user data, feeding this data to the Python functions, and then getting the output results returned to the web browser. The thing here is that you would need to write most of the GP tools from scratch. GeoTools link you've shared looks interesting though. Would be really cool to see any live example of a GP operation performed at the back-end by GeoServer! –  Alex Tereshenkov Jul 3 at 13:23

The OpenGeo plugin for Qgis can use the wps services hosted on geoserver. It functions much like how arcgis uses their toolbox, it will require that the wps service is enabled and the process is available. You should also check out pyWPS

share|improve this answer
    
could you please elaborate on QGIS plugin? Will it be just a desktop client that can consume WPS services? I am interested in authoring WPS services then in a similar workflow that Esri has (or close to that with more configuration and slight programming acceptable). Perhaps you could share information on developing wps service from any desktop GIS to GeoServer or another GIS server platform? –  Alex Tereshenkov Jul 4 at 5:57

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.