WPS – A Web Processing Service standard
The WPS (Web Processing Service) standard has been approved by the OGC recently.
“WPS defines a standardized interface that facilitates the publishing of geospatial processes, and the discovery of and binding to those processes by clients. ―Processes‖ include any algorithm, calculation or model that operates on spatially referenced data. ―Publishing‖ means making available machine-readable binding information as well as human-readable metadata that allows service discovery and use.”
The WPS interface specifies three operations
- GetCapabilities (inherited by the OGCWebService interface)– This operation allows a client to request and receive back service metadata (or Capabilities) documents that describe the abilities of the specific server implementation. The GetCapabilities operation provides the names and general descriptions of each of the processes offered by a WPS instance. This operation also supports negotiation of the specification version being used for client-server interactions.
- DescribeProcess – This operation allows a client to request and receive back detailed information about the processes that can be run on the service instance, including the inputs required, their allowable formats, and the outputs that can be produced.
- Execute – This operation allows a client to run a specified process implemented by the WPS, using provided input parameter values and returning the outputs produced.
Even though, we are having a hard time working with ArcGIS Server’s GeoProcessing Service and haven’t heard too many good things about it, it would be nice to see ESRI the WPS standard in its GeoProcessing Service.
ESRI ADF + ExtJS
Recently our team has been looking at ExtJS javascript library to use in our GIS web applications. ExtJS is a powerful and visually stunning javascript library that will definitely turn heads. If you haven’t checked out its new features in the 2.0 version, please do so, it is definitely worth the time. After, looking at the MapFish map layout demo, we were wondering if ESRI’s ADF will play nice with ExtJS. Mike Juniper went ahead and wrote up a real quick demo application using the ESRI ADF and the ExtJS framework. Check out the demo app here. It does have certain problems, but for a first step it is not too bad.
SOEXplorer Update
I have added more features to the SOEXplorer application that I had previously blogged about. The new features make the application more handy. This application should allow you to administer your ArcGIS Server much more easily without the need for ArcCatalog. It also allows administrators to change certain properties that are not editable in ArcCatalog (for e.g. the maximum record count that will be returned by the server). The new version can be downloaded here. The 64-bit version of the application can be downloaded here.
SOEXplorer Features:
- Start, Stop, Pause Server Objects.
- Get ArcGIS Server statistics.
- Get Server and Server Object statistics.
- Add/Delete host machines.
- Add/Delete server directories.
- Edit Server Object properties (some not accessible in ArcCatalog).
- Delete Server Objects.
- Save Server Object configuration to file.
- Create Server Object configurations from previously saved files.
- Register new Server Object Extensions.
- Delete Server Object Extensions.
- Activate/Deactivate individual Server Object Extensions on Server Objects.
If you are interested in contributing to the application or just the source code, the SVN repository can be accessed here on Assembla.
SOE Xplorer – An utility for developers toiling with Server Object Extensions on ArcGIS Server
Developers working on Server Object Extensions(SOE) for ArcGIS Server lack any kind of toolset from ESRI to manage SOEs on a ArcGIS Server. Since, I am one of those developers working with the SOEs and always on the lookout for tools to make my life easier, I had created an utility that will let me manage SOEs on a ArcGIS Server. If you work with SOEs also, you might want to download the tool here. If you are interested in the source code for this tool, just send me an email or leave a comment. The following illustrations should help you get to know and use the tool pretty easily.
Setting up TileCache on IIS
This is a guide to setting up TileCache on IIS for non-Python people (like me 🙂 ). TileCache is an amazing piece of software that can cache the data from any WMS service, thereby speeding up access to the WMS service in the magnitude of 10 – 100 times or more. I am a big fan of the open source GIS tools coming out from Metacarta labs like FeatureServer and TileCache. If you haven’t checked out the other projects coming out of there, please try to make the time to check them out, it is definitely it. But the fact that they are all in Python had been a big obstacle for me (being a Microsoft guy and all) when I wanted to test them out. I finally got around to setting up TileCache on my IIS today, and if you are interested in doing the same, follow along.
- Download the windows installer for the latest version (2.5.1) of Python from here. I had Python version 2.4 installed on my machine from an ESRI software setup(Python is an optional component). So the screenshots you see might not agree with the version numbers.
- It is also a really good idea to install Win32all (Mark Hammond’s add-on for the regular Python installer (also including the Win32 API, COM support, and Pythonwin)) from here.
- Run the Python installer for windows and install Python to its default location “C:\Python25\”.
- Setup the Python install directory in the system environment ‘PATH’ variable. Right-click on ‘My Computer’ and select ‘Properties’. Click on the ‘Advanced’ tab. Click on the ‘Environment Variables’ button. In the ‘Environment Variables’ dialog, select ‘PATH’ from the ‘System Variables’ group.
- Download TileCache from here (version 2.01). Unzip its contents to ‘C:\Inetpub\wwwroot\tilecache’. This is just my location of preference, it can obviously be setup as a virtual directory at any path desired.
- Setup the unzipped ’tilecache’ directory as an application in IIS. Click ‘Start->Run’ and type in ‘inetmgr’ and click ok. This brings up the Internet Service Manager (ISM).
- Now, we need to setup IIS to run Python scripts. Find ’tilecache’ under ‘Default Web Site’ and right-click to select properties.
- In the ISM, right-click on ‘Default Web Site’ and select ‘Properties’. Under the ‘Home Directory’ tab, select the ‘Configuration’ button.
- This should bring up the ‘Application Configuration’ dialog, Click on the ‘Add’ button. This brings up the ‘Add/Edit Application Extension Mapping’ dialog. In the executable field, enter ‘C:\Pythin25\pythin.exe %s %s’. In the extension field, enter ‘.py’. Check both ‘Script engine’ and ‘Check that file exists’ options.
- This should add a new entry for ‘.py’ in the ‘Application Configuration’ dialog.
- Open up the command prompt and change directory to ‘C:\Inetpub\AdminScripts’. Execute the following
- adsutil set w3svc/AllowPathInfoForScriptMappings True
- adsutil set w3svc/1/AllowPathInfoForScriptMappings True
- Rename ‘C:\Inetpub\wwwroot\tilecache\tilecache.cgi’ to ‘C:\Inetpub\wwwroot\tilecache\tilecache.py’.
- Edit ‘C:\Inetpub\wwwroot\tilecache\tilecache.py’ and remove the first line in it that reads ‘#!/usr/bin/env python‘. Also, change the ‘Service.Load’ parameter to ‘C:\\Inetpub\\wwwroot\\tilecache\\tilecache.cfg’ like shown within quotes.
- Create a directory called ‘Cache’ under ‘C:\Inetpub\wwwroot\tilecache\’. This is where to generated cache will be outputted. Give write permissions to the ‘Internet Guest account’ to this directory since the cache generated will be written to this location. I am using these settings just for a demonstration, please do take the time to setup the security properly as per your requirements.
- Edit ‘C:\Inetpub\wwwroot\tilecache\tilecache.cfg’. Change the value for ‘base’ under the ‘[Cache]’ section to ‘C:\Inetpub\wwwroot\tilecache\Cache’, the directory where the cache will be outputted.
- Also, change the ‘url’ value under the ‘[basic]’ to the URL of the WMS service that you want cached. Here ‘[basic]’ is the name of the layer you want cached. Configure it accordingly for the WMS servoce you are using. I am leaving it at the defaults as shown below to generate a cache for the WMS service from Metacarta with the layer name ‘basic’.
- Edit ‘C:\Inetpub\wwwroot\tilecache\index.html’. Under the ‘init’ function, change the parameters for the WMS layer from ’tilecache.cgi?’ to ’tilecache.py?’.
- That is it. Congratulations! Your TileCache has been configured on IIS. Point your browser to ‘http://localhost/tilecache/index.html’ and start browsing around. You will generating the cache as you browse around.
- Now, you generating cache as you browse around the map, but you don’t want to be browsing all around the map at all scales to fully generate the cache. In order to generate the cache for the desired region automatically, a python utility script has been provided with TileCache. To run the script, open up command prompt and execute the following.
- python “C:\Inetpub\wwwroot\tilecache\tilecache_seed.py” “http://localhost/tilecache/tilecache.py?” basic 0 2
- This generates the cache for the basic layer between scales 0 and 2. Please be aware that as you start increasing the scale range (0 to 6 etc), the time required to generate the cache will exponentially increase.
- Now all that is left to do is to have OpenLayers start using your cache directly. In order to do so, edit the ‘C:\Inetpub\wwwroot\tilecache\index.html’ file again and point the WMS layer to your cache as shown below.
- Sit back, browse you super fast web application and enjoy.
Please do let me know how the guide above works out for you or if you have any suggestions or improvements.
2 comments