Elevation Server Object Extension

A few years ago we published a sample Geoprocessing Service to create elevation profile charts on the server and send back a URL to the chart image. This sample service has been very popular and some of the core components have been implemented in various production environments. Some common requests have been to expand this functionality to return the elevation values so additional work could be done on the client applications, and the ability to easily use this functionality against users own elevation data sources.

In response to these many requests, we’ve just shared an updated version of this functionality as a 10.0 REST Server Object Extension (here) on the ArcObjects Resource Center Gallery. The REST SOE is implemented in .NET and Java and includes samples for the various Web APIs and ArcGIS Explorer 1500. In addition to the creation of profile charts on the server via the GetElevationProfile operator (now updated to better handle bathymetry), the Elevations SOE also exposes three new operators: GetElevationAtLonLat, GetElevations and GetElevaitonData. These new operators return elevation values to the client applications.

The Elevations SOE is simple to deploy and can be easily attached to any Map Service that contains a single band raster elevation layer by enabling the ‘Get Elevations’ capability when creating the Map Service. The functionality can be inspected via the ‘Supported Extensions’ entry at the bottom of the Services Directory page of the Map Service. Accessing the Elevations SOE functionality is done via these newly exposed REST URLs, and it will be up to each developer to properly call and make use of the results. The provided samples (available here) make use of a public instance of the Elevations SOE. This instance of the Elevations SOE is attached to a Map Service that includes a sample global elevation dataset that combines three data sources: SRTM, GTOPO30 and GEBCO bathymetry.

Caveat: The Elevations SOE is just a sample implementation, and should NOT be used in production environments and/or mission critical situations. This sample implementation doesn’t attempt to handle every possible scenario and there are still many times when this functionality needs to be customized and deployed in production environments by our professional services team.

3/20/2013 – 10.1 Update!
An updated 10.1 version of the Elevations SOE can now be found in this ArcGIS.com group. It is important to review the associated readme for details on breaking changes. ArcGIS.com users can request to become members of this group and share their apps and services based on the Elevations SOE.

14 Comments

jjuellsays:

Hi John,

Very nice. As you say, “there are still many times when this functionality needs to be customized”. Can you please provide the .Net source code for this SOE? It will be a good example on how to create a SOE with a REST endpoint. Thank you.

If you download the application that is referenced by the link (here) in the second paragraph above, place the download in the root of a web server directory, the applcation works out of the box. I don’t see where ESRI is hosting it live anywhere.

Hi John,
Since we have already tested Elevations SOE in our AGS 10.0 environment without any problem, we’d like to do the same on version 10.1. Is it possible to provide AGS 10.1 installation files or source code?
Thank you very much,
Marijan

Could you help me? I’m trying to install this extension in our corporate environment. In flex viewer everything seems fine, the chart appears but no graph is drawed. If I browse the service in the ArcGIS Services directory and click GetElevations I get a number of values so it seems to work. If I click on GetElevationAtLonLat then I get the following error message: “Object reference not set to an instance of an object.”, but I use “Hungarian_1972_Egyseges_Orszagos_Vetuleti” as a coordinate system (WKID=23700) not WGS84.

I observed something. When I enter values using GetElevationAtLonLat function I have to use comma as decimal separator but in the result I get, the decimal separator is a period. JSON also uses comma to separate variables. I think this what messes things up. I think the solution is to somehow change the decimal separator. Any ideas? The regional settings on the server are set to English/United States.

I have published SRTM 90 m data in arcgis with an instance of ElevationSOE on it. when i am passing GetElevationData operation parameteres, error is coming — The data necessary to complete this operation is not yet available[Exception from HRESULT:Ox800000A]. what i am missing. GetElevationAtLatLon and other operations are resulting result except GetElevationData. Pls let me Know. Thanks with Regards