ArcGIS Server中Geoprocessing的使用
转自:http://hi.baidu.com/lushaofeng21/blog/item/bb964eee70a134232cf534ef.html
推荐在ArcGIS Server中使用Geoprocessing有两种方式,一种是调用Geoprocessing服务,另外一种是直接调用后台的Geoprocessing的工具。这两种方式都可以使得ArcGIS Server编程变的简单,可以节省开发人员的很多开发工作量。
1 ArcGIS Server中直接调用Geoprocessing中的工具
ArcToolbox中的工具基本上都可以在Server中调用,这种调用方式和调用其它的ao组件没有什么大的区别,因为工具就在服务器上,运行也在服务器上,这些arctoolbox中的dll库位于类似的安装目录下,C:\Program Files\ArcGIS\DotNet\Toolboxes,这些工具的说明可以见ArcGIS Server 的.Net开发帮助,也可以桌面产品的帮助系统,包括里面的参数说明。附件中是.Net开发帮助中的所有的工具说明所在的位置。
下面是一个在ArcGIS Server中调用后台的Geoprocessing中的工具,调用的是DataManagermentTools-〉Features-〉Copy的工具。
protected void Button1_Click(object sender, EventArgs e)
{
IServerContext serverContext = null;
try
{
ESRI.ArcGIS.esriSystem.IVariantArray varray = null;
GISServerConnection serverConnection;
serverConnection = new GISServerConnection();
serverConnection.Connect("servername");
IServerObjectManager serverManager = serverConnection.ServerObjectManager;
serverContext = serverManager.CreateServerContext("", "");
//直接调用服务器上的Geoprocessing工具的GP的创建方式:
ESRI.ArcGIS.Geoprocessor.Geoprocessor gp = new ESRI.ArcGIS.Geoprocessor.Geoprocessor(serverContext);
ESRI.ArcGIS.DataManagementTools.CopyFeatures copyfeatures = new ESRI.ArcGIS.DataManagementTools.CopyFeatures();
varray = (IVariantArray)serverContext.CreateObject("esriSystem.VarArray");
//设置参数
string inputfile = @"D:\arcgis\ArcTutor\Tracking_Analyst\Simple";
string inputfeatureclass = "2000_hrcn.shp";
string outputfile = @"D:\arcgis\ArcTutor\Tracking_Analyst\Simple";
string outputfeatureclass = "output.shp";
copyfeatures.in_features = @inputfile + "\\" + inputfeatureclass;
copyfeatures.out_feature_class = @outputfile + "\\" + outputfeatureclass;
varray.Add(copyfeatures.in_features);
varray.Add(copyfeatures.out_feature_class);
//执行工具
gp.Execute(copyfeatures.ToolName + "_" + copyfeatures.Alias, varray, null);
}
catch (Exception ex)
{
System.Diagnostics.Debug.WriteLine(ex.Message);
System.Diagnostics.Debug.WriteLine(ex.StackTrace);
}
finally
{
serverContext.ReleaseContext();
}
}