Web Service API to Server
I think this is definetly one of the cool ways to interact with ArcGIS Server. It also has the speed advantage of not being a DCOM call for each setting of a property. Here is some of the doc I wrote way back when on web services for the Server.
On to the Talk…
Based upon the WSDL and uses simple value types (familiar to ArcGIS Developers).
There is a service to tell you the services available called the services catalog web serivce. Http://servername/arcgisinstance/services?wsdl
getServiceDescription tells you the services and it’s capabilities.
use it to generate maps as well as information to be overlaid on the map, identify and query features which are returned as geodatbase record sets. Can easily changed to an ADO.NET recordset
You can ask for tiling from a tiled map cache service – then tiles can also be fetched by http get.
There is a slide with some of the most important methods you can query and now a demonstration. Shows getting the wsdl location from ArcCatalog and then look at the result in IE. Nice integration with VS2005. Add a Web Reference which contains the service url with ?wsdl on the end. Then you create all teh native c# objects – no COM proxies – no reference to the ESRI assemblies. Showing a simple call and response and now adding a map image to the form. Cool demo showing some of the range of stuff you can do with just the web services. Zooming, panning, and using bookmarks…
Cached map services:
Get info on the tiling scheme and you can get the virtual directory to allow you to start writing GET requests and bypass the server. You can use a Info object to know how the tiles are positions and set up.
Relationship to ArcObjects
There is a ArcObject (AO) which represents each of these WebService – so the AO object model diagram helps you understand how the web services interact. I know that the way you call them though is not exactly the same so be careful with how far you rely on the AO doc to understand what to do with the WSDL generated classes.
GLOBE Services – delivers data to 3D map and globe but I don’t think you can use it outside of a ArcGIS application
Geoprocessing Service – lots – o – methods so you can use this outside of an ArcGIS (AO) application. There is a synchornus and async modes of execution. Sync is only for small results since it locks the SOC until the job is done. Ansync is probably more useful for people since it will also allow you to draw results on a map. Time for another demo and I can’t wait to see this one!!
Clip data that is on the server and send it back to the client. It needs an mxd with a toolbox which creates a MapService and a GeoprocessingService. You can get a list of tools and what the tool needs to run and some help about it.
!!Looks like a dev pattern is to ask the server for a default value to build the value object for you and then populate it with the values you want.
How is the spatial geometry stored in that result set?? I am betting it is from the geodb schema XSD. That demo was awesome – did I mention there were no interops involved in this at all!!!
GEODATA services and replication – allows for access to a geodb over the web – can be used for synchronizing databases – has methods for browsing datasets, exporting datasets to xml, creating check-out, 1 and 2 way replicas, exporting and importing replicas… Rock! When it exports data you can pick the different formats to deliver the data.
Time for another demo. You can use data from SDE directly or based upon a map document (mxd).
You know this adds even more thoughts about Dave B’s thoughts on code generation. You could actually dynamically build an application using this service since you could ask the for the geodb schema. How boss would that be – Use an application to generate a simple application customized to a particular web service.hmmmmmmm
GEOCODE Service – 9.2 has high performance locators and it can be used in conjunction with an NETWORK ANALYSIS Service. You can associate these with a map.
I am starting to burn out on sitting in sessions – I may have to go talk to people at islands or something. DONE