书签 分享 收藏 举报 版权申诉 / 51
上传文档赚钱

类型地理处理框架课件.ppt

  • 上传人(卖家):晟晟文业
  • 文档编号:5028157
  • 上传时间:2023-02-03
  • 格式:PPT
  • 页数:51
  • 大小:363KB
  • 【下载声明】
    1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
    2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
    3. 本页资料《地理处理框架课件.ppt》由用户(晟晟文业)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
    4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
    5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
    配套讲稿:

    如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。

    特殊限制:

    部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。

    关 键  词:
    地理 处理 框架 课件
    资源描述:

    1、兰小机简历l主要经历主要经历 1988年年7月月毕业于南方冶金学院工程测量专业,获毕业于南方冶金学院工程测量专业,获学士学位学士学位,并留,并留校任教校任教 1994年年6月月毕业于武汉测绘科技大学工程测量专业,获毕业于武汉测绘科技大学工程测量专业,获硕士学位硕士学位,回校任教回校任教 2005年年6月月毕业于南京师范大学毕业于南京师范大学地图学与地理信息系统地图学与地理信息系统专业,获专业,获理理学博士学位学博士学位,回校任教,回校任教l主要研究方向主要研究方向 GIS应用开发应用开发 分布式并行计算环境下空间数据的存储管理分布式并行计算环境下空间数据的存储管理 空间数据库理论与空间数据库理

    2、论与GMLGIS GML空间数据挖掘空间数据挖掘 空间数据集成与共享空间数据集成与共享科研项目国家自然科学基金项目-面向GML的时空关联规则及序列模式挖掘研究(编号:40971234),35万元,主持国家自然科学基金项目-本原GML空间数据库理论及GMLGIS与传统GIS集成研究(编号:40761017),16万元,主持国家自然科学基金项目-GML空间数据存储索引机制研究(编号:40401045),26万元,排名第二地理信息科学江苏省重点实验室开发基金项目-面向对象的GML空间数据库及其应用研究(编号:JK20050302),5万元主持江西省教育厅科技项目GML空间数据库理论及GMLGIS研究

    3、,1万元,主持萍乡市基础地理信息系统研究与开发,22万元,主持城市公众地理信息服务系统研究与开发,10万元,主持Chap.8 地理处理框架 v本章内容:1.地理处理框架概述2.通过Python使用地理处理工具3.通过ArcObjects使用地理处理工具8.1 地理处理框架概述v地理处理(Geoprocessing)提供一组丰富的工具和机制来实现GIS工作流的自动化操作,这些工具和机制能够使用模型、脚本、高级开发语言将一系列的工具按照一定操作顺序结合在一起,完成更复杂的GIS工作流。v地理处理框架是指ArcGIS用于建立自动化处理流程的应用环境和开发框架,其主要内容包括:地理处理工具、模型构造器

    4、(Model Builder)、脚本、ArcObjects中的地理处理。地理处理工具v地理处理工具用于执行地理数据处理的最基本的功能单元,例如提取和叠加数据、更改地图投影、向表中添加列、计算属性值、最优路径等。工具都储存在工具箱中,ArcGIS 提供了数百种工具,并将它们进行了分类并放到了十余个工具箱中,这些工具功能丰富、涉及领域广泛。v可以通过多种方式使用地理处理工具:工具对话框、Python窗口、模型构造器、脚本、ArcObjects开发。vArcGIS引入了后台地理处理(Background Geoprocessing)的概念,允许Geoprocessing工具、ArcGIS操作同时运行

    5、(使用多核CPU)。即工具在后台运行时,您仍可以继续使用ArcMap(或其他应用程序,例如ArcGlobe),文档底部将出现一个进度条显示当前所执行工具的名称,工具执行完毕后,系统托盘中将显示一个弹出通知。模型构造器(Model Builder)v模型构造器(Model Builder)是ArcGIS中地理数据处理框架的一部分。通过模型构造器可将地理处理语言中的各个要素(工具)按顺序连接在一起构建可视化的地理处理模型,实现更复杂的地理处理功能。Model Builder为设计和实现地理处理模型(包括工具、脚本和数据)提供了一个图形化的建模框架。v将创建的地理处理模型共享为工具,可扩展ArcGI

    6、S功能。脚本v在地理处理框架中,还可使用脚本语言来创建新的实用软件。脚本语言(例如Python和Perl)用于将多个应用程序组合到一起。v和模型一样,可将脚本程序引入至自定义工具箱中,成为工具箱中一个工具;与模型构造器相比,脚本可以设计较复杂的程序处理逻辑和较高级的数据结构,且脚本可在ArcGIS外部执行。ArcObjects中的地理处理vArcGIS提供了地理处理工具(Geoprocessing Tools)。在ArcObjects中,每个工具都有一个对应的类。在GIS应用开发中,可以直接使用这些地理处理工具。8.2 通过Python使用地理处理工具vPython 是一种通用的开源编程语言,

    7、在ArcGIS地理处理中用作脚本语言。v使用 Python 中的 ArcPy 站点包可访问地理处理功能。通过ArcPy可访问地理处理工具和其他函数、类和模块,使用它们可快速轻松地创建简单或复杂GIS工作流。8.2.1 Python窗口vArcGIS 10.0 通过Python窗口提供了一种新的嵌入式 Python 体验。在Python 窗口中,可以交互式地输入并执行地理处理工具和 Python 函数;Python 命令可以是单行代码,也可以是带逻辑的复杂块。vPython 窗口的提示符为三个大于号(),可以直接从第一行输入并执行简单的 Python 语法。v可输入并执行包含多个地理处理工具的多

    8、行命令。输入多个命令时,输入第一行命令后,要想接着输入代码行而不执行代码块,请在第一行命令输入完成后按住 CTRL 键并按 ENTER;光标即会移动到 Python 窗口的二级提示符()处,此时便可输入其他代码行。按此种方式输入完所有命令后,按两次 ENTER 便可执行整个代码块。v如图所示的示例中,逻辑 for 语句要求至少再输入一行代码才能完成整个代码。v需要注意的是:上例中的“print count”代码一定要缩进(按“空格”键缩进)。v目录路径的使用编程语言(如Python)将反斜线()用作转义字符。例如,n 表示换行符,t 表示制表符。指定路径时,可使用正斜线(/)代替反斜线,或使用

    9、两条反斜线(),也可通过在包含反斜线的字符串前放置字母 r(以便正确解释)来使用字符串文本。正确使用如下:import arcpy arcpy.GetCount_management(c:/temp/streams.shp)arcpy.GetCount_management(c:tempstreams.shp)arcpy.GetCount_management(rc:tempstreams.shp)在 Python窗口中设置环境v每个工具都有一组参数,其中一些参数在所有工具中通用,如容差或输出位置。这些参数可从地理处理环境中获得默认值。v在ArcPy中,地理处理环境被组织为 ArcPy包中en

    10、v类下的属性,如overwriteOutput、workspace、configKeyword、XYResolution、XYTolerance等属性。如以下设置workspace属性:arcpy.env.workspace=rE:usaStatesHighwayCity.gdbv由于地理处理环境对工具操作和输出有着很大的影响,因此需要保证能够追踪环境设置并在必要时将其重置为默认状态。ArcPy中的ResetEnvironments函数可用于恢复默认环境值。在Python窗口中输入如下:arcpy.ResetEnvironments()vArcPy中的ListEnvironments函数可用于

    11、创建所有地理处理环境的列表。该列表可用于访问并输出所有环境及其当前值。在Python窗口中执行工具v在Python窗口中访问地理处理工具和geoprocessor方法之前,先要导入ArcPy 站点包(import arcpy)。导入ArcPy之后,无论何时在提示符后输入arcpy.,都会出现一个下拉列表,其中包含全部地理处理工具、geoprocessor方法以及其他的脚本功能。随着字符的不断输入,此下拉列表会不断地进行过滤,以便仅匹配出最符合输入字符的工具或方法。例如,如果在 Python 窗口中输入 arcpy.Bu,则在下拉列表中会只包含以那些字符开头的工具或方法。当输入左半圆括号“(”时

    12、,会在帮助和语法窗口中显示 Buffer_analysis工具的帮助。默认情况下,会将第一个参数高亮显示,如下图所示。v工具的参数中,有些是必需的,有些是可选的。可选参数会放在大括号 中;而必需参数则没有大括号。可选参数位于必需参数之后。如果不为可选参数输入值,则会为其计算并应用默认值。v工具可能会有多个可选参数。有时,只需关注工具的某些可选参数并对其进行设置。跳过或略过可选参数的方式有三种:将可选参数设置为一组空双引号()。将可选参数设置为双引号中的#号(#)。明确指定要使用的参数名称及其值。v工具参数可接受单个值或多个值。当可接受多个值时,参数值可指定为一个 Python 列表。如删除字段

    13、工具可接受多个要删除的字段:arcpy.DeleteField_management(c:/base/rivers.shp,Type,Turbidity,Depth)v某些工具(例如 Union_analysis 和 Intersect_analysis 叠加工具)具有像表一样的参数;即它们有多行,并且每一行都有多个值。就 Union_analysis 而言,输入要素参数支持使用坐标精度等级,等级作为可选值指定给每个输入要素类,其中1为最高等级。这种类型的参数可以使用“值表”表示。arcpy.env.workspace=D:/St_Johns/data.mdb/neighborhoods in

    14、putList=east,1,west,1,south,1,north,2 arcpy.Union_analysis(inputList,D:/St_Johns/data.mdb/land_use)使用 Python 窗口创建工作流v通过ArcPy站点包,Python窗口支持执行数百种地理处理工具。在Python窗口中,可以执行单个工具,也可以按特定顺序依次执行多个工具。Python 窗口还允许访问支持更复杂Python工作流的许多函数和类。v支持Python工作流的函数,例如创建某些数据类型的列表、检索某一数据集的属性、在将表添加至地理数据库前验证表名称或执行其他许多有用的脚本函数。v以下代

    15、码是根据要素类和字段名创建字段值的唯一列表:featureclass=rE:usaStatesHighwayCity.gdbUSAStatesstatesfield=STATE_NAMEvalueList=rows=arcpy.SearchCursor(featureclass)for row in rows:valueList.append(row.getValue(field)uniqueSet=set(valueList)uniqueList=list(uniqueSet)uniqueList.sort()del rowsdel rowprint uniqueListset 是一个无序不

    16、重复是一个无序不重复元素集合,元素集合,List为列表;为列表;集合没有排序功能,列集合没有排序功能,列表可以排序。表可以排序。v函数定义v函数是用于执行特定任务的小代码块,可用在更细化的工作流中。创建函数后,即可反复使用该函数,省去了重复编写相同任务的麻烦。def listFieldNames(table,wildcard=None,fieldtype=None):fields=arcpy.ListFields(table,wildcard,fieldtype)nameList=for field in fields:nameList.append(field.name)return nam

    17、eListv在Python中,定义函数的方法是使用Python的def关键字后接函数名和参数列表;其中的 return 语句用于从函数中返回值fieldNames=listFieldNames(rE:usaStatesHighwayCity.gdbUSAStatesstates)8.2.2 ArcPy站点包vArcPy站点包(site-package)是ArcGIS将GIS功能传送到Python的Python库,它随ArcGIS一起自动安装。通过ArcPy可访问地理处理工具和其他函数、类和模块。v在ArcPy中,所有地理处理工具均以函数形式提供,但并非所有函数都是地理处理工具。函数是用于执行某

    18、项特定任务的程序代码块。v工具函数和非工具函数之间加以区分:工具会返回 result 对象;而函数不会。工具会生成可通过各种函数(如 GetMessages()进行访问的消息;函数不会生成消息。工具需要在产品级别及扩展模块上进行授权;不对函数进行授权。vArcPy中包含三个模块:制图模块(arcpy.mapping)、空间分析模块(arcpy.sa)、地统计分析模块(arcpy.ga)。v制图模块(arcpy.mapping)提供了与地图文档及图层文件互操作的命令。可以通过创建Python脚本来打开地图文档,加载图层,查询并选择内容,然后打印、导出或者保存修改后的地图文档。l 例如你在例如你在

    19、ArcMap中的工作流程为:中的工作流程为:1.打开位于打开位于“C:GISTownCenter_2009.mxd”的文档。的文档。2.将文本元素将文本元素“GIS Services Division 2009”换成换成“GIS Services Division 2010”。3.将更新后的地图导出为将更新后的地图导出为PDF。l 你可以写如下脚本来实现:你可以写如下脚本来实现:mxd=arcpy.mapping.MapDocument(rC:GISTownCenter_2009.mxd)for textElement in arcpy.mapping.ListElements(mxd,Tex

    20、t):if textElement.text=GIS Services Division 2009:textElement.text=GIS Services Division 2010arcpy.mapping.ExportToPDF(mxd,rC:GISTownCenterUpdate_2010.pdf)del mxd8.2.3 使用Python脚本执行地理处理工具v在Python窗口中,可以交互式输入、执行代码,并能立即运行结果。但也可使用PythonWin 之类的集成开发环境(IDE)创建Python文件(带有.py 扩展名的文件,称为脚本)。脚本只是文本文件,任何文本编辑器(如记事本

    21、)都可用于编写脚本。但是,使用 IDE(如 PythonWin)有很多优点。vPythonWin也有一个交互式窗口,可用于执行单行Python代码。此外,PythonWin包含许多特征,可帮助您输入、编辑、检查语法以及调试Python代码。v说明:读者可以从网上下载PythonWin及相应版本的Python,并安装到自己的机器上。v以下是实现要素裁剪的Python代码:import arcpy import os arcpy.env.workspace=rE:usaUSAStates.gdbUSAStatesclipFeatures=rE:usaUSAStates.gdbUSAStatesCl

    22、ipPolygonoutWorkspace=rE:usaOutput.gdbclusterTolerance=0.01 try:fcs=arcpy.ListFeatureClasses()for fc in fcs:featureClassName=arcpy.ValidateTableName(fc,outWorkspace)outFeatureClass=os.path.join(outWorkspace,featureClassName)if fc os.path.basename(clipFeatures):arcpy.Clip_analysis(fc,clipFeatures,out

    23、FeatureClass,clusterTolerance)except:arcpy.AddMessage(arcpy.GetMessages(2)print arcpy.GetMessages(2)可以保存可以保存为为一个脚本一个脚本文件,可以在任意的文件,可以在任意的Python集成编辑环境集成编辑环境中编辑、调试中编辑、调试。8.3 通过ArcObjects使用地理处理工具8.3.1 ArcObjects中地理处理概述vArcGIS提供的数百个地理处理工具组织在18个工具箱中;在ArcObjects中,每个工具箱对应于一个类库,具体包括:ESRI.ArcGIS.AnalysisTools

    24、、ESRI.ArcGIS.Analyst3DTools、ESRI.ArcGIS.CartographyTools、ESRI.ArcGIS.ConversionTools、ESRI.ArcGIS.CoverageTools、ESRI.ArcGIS.DataInteroperabilityTools、ESRI.ArcGIS.DataManagementTools、ESRI.ArcGIS.EditingTools、ESRI.ArcGIS.GeocodingTools、ESRI.ArcGIS.GeostatisticalAnalystTools、ESRI.ArcGIS.LinearReferencin

    25、gTools、ESRI.ArcGIS.MultidimensionTools、ESRI.ArcGIS.NetworkAnalystTools、ESRI.ArcGIS.ParcelFabricTools、ESRI.ArcGIS.SampleTools、ESRI.ArcGIS.SchematicsTools、ESRI.ArcGIS.ServerTools、ESRI.ArcGIS.SpatialAnalystTools、ESRI.ArcGIS.SpatialStatisticsTools、ESRI.ArcGIS.TrackingAnalystTools。v通过引用以上程序集,可以在自己的开发过程中使

    26、用其中的地理处理工具,完成自己所需要的GIS功能。vArcObjects中的Geoprocessing库实现了地理处理框架,以及一些基础的地理处理工具。在Geoprocessing库中,最重要的接口是GeoProcessor的 IGeoProcessor2,当使用地理处理工具的时候需要引用该接口。其他常用接口还有:IGeoProcessorResult2:用于访问结果对象;IGPUtilities3:用于简化工作流的粗粒度的ArcObjects组件;IGpEnumList:IGeoProcessor2 中的一些方法返回的IGpEnumList;IGPServer2:用于地理处理服务;IGpVa

    27、lueTableObject:值表对象;IGPToolCommandHelper:从命令按钮执行一个工具;IDataElement:访问数据集的属性;IGPFieldMapping、IGPFieldMap用于字段映射。通过实现IGPFunction2和IGPFunctionFactory接口,可以创建自定义的地理处理工具。v另外,ArcObjects中的Geoprocessor中也提供了Geoprocessor类,使用该类的对象也可执行地理处理工具。8.3.1 执行地理处理工具v在.NET中,要执行一个地理处理工具,需要用到地理处理器的Excute方法,因此必须首先创建一个地理处理器,以下是创

    28、建地理处理器的两种方法:使用IGeoProcessor2接口使用Geoprocessor类使用IGeoProcessor2接口vESRI.ArcGIS.Geoprocessing程序集中的GeoProcessor类实现了IGeoProcessor2接口,使用该接口中的Execute方法可以执行地理处理工具。vIGeoProcessor2.Execute方法的语法如下:public IGeoProcessorResult Execute(string Name,IVariantArray ipValues,ITrackCancel pTrackCancel);v以下代码实现了调用创建缓冲区的地理

    29、处理工具:using ESRI.ArcGIS.esriSystem;using ESRI.ArcGIS.Geoprocessing;private static void RunBuffer()IGeoProcessor2 gp=new GeoProcessorClass();IVariantArray parameters=new VarArrayClass();parameters.Add(D:St_Johnsdata.mdbroads);parameters.Add(D:St_Johnsdata.mdbroads_Buffer);parameters.Add(1000 Meters);g

    30、p.Execute(Buffer_analysis,parameters,null);v以下代码是调用自定义工具箱中的工具:public void SampleCalculateBestPathTool()IGeoProcessor2 gp=new GeoProcessorClass();gp.AddToolbox(C:SanDiegoBestPath.tbx);IVariantArray parameters=new VarArrayClass();parameters.Add(C:SanDiegosource.shp);parameters.Add(C:SanDiegodestinatio

    31、n.shp);parameters.Add(C:SanDiegobestpath.shp);gp.Execute(CalculateBestPath,parameters,null);使用Geoprocessor类v使用ESRI.ArcGIS.Geoprocessor程序集中的Geoprocessor类的Execute方法可以执行地理处理工具。v注意:GeoProcessor与Geoprocessor中的字母“p”大小写区别,它们是两个不同的类。GeoProcessor通过IGeoProcessor2接口执行工具及有关环境的设置等;Geoprocessor直接通过对象的属性、方法执行工具及有关

    32、环境的设置等。vGeoprocessor有两个重载的Execute方法:Execute(String,IVariantArray,ITrackCancel)Execute(IGPProcess,ITrackCancel)v以下代码调用擦除叠置工具:using ESRI.ArcGIS.Geoprocessor;using ESRI.ArcGIS.AnalysisTools;public void ExecutingEarse()Geoprocessor GP=new Geoprocessor();Erase eraseTool=new Erase(C:DataInput.shp,C:DataEr

    33、ase.shp,C:DataOutput.shp);/或使用以下代码初始化工具:/Erase eraseTool=new Erase();/eraseTool.in_features=C:DataInput.shp;/eraseTool.erase_features=C:DataErase.shp;eraseTool.out_featureEclass=C:Dataoutput.shp;GP.Excute(eraseTool,null);v以下代码调用Geoprocessor的Execute(String,IVariantArray,ITrackCancel)执行地理处理工具:private

    34、IGeoProcessorResult IntersectOverlay(Geoprocessor gp)IGpValueTableObject vtobject=new GpValueTableObjectClass();vtobject.SetColumns(1);object row=null;row=GetFeatureLayer(strInputLayer);vtobject.AddRow(ref row);row=GetFeatureLayer(strOverLayer);vtobject.AddRow(ref row);IVariantArray pVarArray=new Va

    35、rArrayClass();pVarArray.Add(vtobject);pVarArray.Add(outputFullPath);pVarArray.Add(strJoinAttributeType);pVarArray.Add(tolerance);pVarArray.Add(strOutputFeatureType);/Execute the Intersect tool.IGeoProcessorResult results=gp.Execute(intersect_analysis,pVarArray,null)as IGeoProcessorResult;return resu

    36、lts;v写在Geoprocessor.Execute方法后的代码必须在地理处理工具执行完才会运行,如果地理处理工具需要很长的执行时间,应用程序便会停在这个阶段。这个问题在ArcGIS 10中得到了很好的解决,因为在ArcGIS 10中通过使用Geoprocessor.ExecuteAsync方法可以让地理处理工具在后台执行,这就意味着在执行地理处理工具的同时,你的应用程序还可以运行其他操作,如浏览和查询数据等。v可以按以下方式实现工具的异步执行:ESRI.ArcGIS.Geoprocessor.Geoprocessor gp=new ESRI.ArcGIS.Geoprocessor.Geop

    37、rocessor();gp.OverwriteOutput=true;/注册一个ToolExecuted事件,用以在工具执行完成后获取Geoprocessor对象 gp.ToolExecuted+=new EventHandler(gpToolExecuted);IGeoProcessorResult2 gpResult=gp.ExecuteAsync(CopyFeatures,parameters)as IGeoProcessorResult2;vExecute方法将工具提交到进程的地理处理队列中,如果某个工具的输入参数不存在,那么它便不会加入到队列中。工具的执行顺序是按照其提交到队列中的顺

    38、序来的。vGeoprocessor定义了以下事件用以检测工具的执行状态:MessagesCreated事件:创建消息完后触发。ProgressChanged事件:在工具执行时发生,具体需根据工具的种类和处理的数据量来定。ToolboxChanged事件:工具箱变化后触发。ToolExecuted事件:在工具执行完成后立即发生。ToolExecuting事件:在工具即将执行前发生。vIGeoProcessor2也提供了异步执行方法ExecuteASync.8.3.3 使用地理处理消息(Geoprocessing messages)v地理处理工具执行期间,有关消息会传给geoprocessor;这

    39、些消息包括工具开始运行的信息、使用的参数值、工具运行的最终状态消息等。工具运行的最终状态消息由severity(严重性)属性标示,该属性的值为0、1、2分别表示一般性的提示(informative)消息、警告(warning)消息和错误(error)消息。vGeoprocessor类中与消息有关的属性有:MaxSeverity、MessageCount;与消息有关方法有:AddError、AddMessage、AddWarning、AddReturnMessage、ClearMessages、GetMessage、GetMessages、GetSeverity、GetReturnCode.Ge

    40、oProcessor的IGeoProcessor2中也有相同的属性、方法。v以下代码获取某个地理处理工具执行传给Geoprocessor的错误消息:public void ExamplePrintGPErrorMessages(Geoprocessor gp)object sev=2;string messages=gp.GetMessages(ref sev);System.Console.WriteLine(messages);v使用GetMessage方法可以获取单个的消息,该方法有一个参数Index,geoprocessor消息列表或数组中的某个消息。MessageCount属性为ge

    41、oprocessor消息数组中的消息数目。v以下输出Union 工具执行传给geoprocessor的所有消息:public void ExamplePrintAllGPMessages(Geoprocessor gp,Union uniontool)gp.Execute(uniontool,null);if(gp.MessageCount 0)for(int Count=0;Count 0)for(int Count=0;Count=pResult.MessageCount-1;Count+)Console.WriteLine(pResult.GetMessage(Count);8.3.4

    42、使用地理处理结果对象vIGeoProcessor2接口中的Execute和ExecuteAsync方法都返回IGeoProcessorResult 对象,该对象可用于获取工具执行后的结果信息。IGeoProcessor2接口中有方法用于获取工具执行的消息,使用IGeoProcessorResult除了可以获取消息外,还可以获得其他的有用信息,如工具的输入、输出以及作业执行的状态。vIGeoProcessorResult中常用的方法、属性如下:1.GetMessage:返回某个(index)消息。2.GetMessages:返回所有的消息。3.MaxSeverity:返回消息的最大的severi

    43、ty值(可能取值有0、1或2)。4.MessageCount:返回消息的数目。5.GetInput:返回某个(index)输入(input)。6.InputCount:返回输入(inputs)的数目。7.GetOutput:返回某个(index)输出(为 IGPValue类型):8.OutputCount:返回输出的数目。9.ResultID:获得job ID。10.ReturnValue:获得geoprocessor 的返回值。11.Status:获得job的状态。12.Cancel:取消 job。vIGeoProcessorResult2增加了以下属性:1.IsAsync:返回进程是否异步

    44、执行。2.IsCanceled:Cancel方法是否调用。3.Process:设置geoprocessor 进程的值。获取工具执行的结果信息v以下代码获取工具执行的状态和消息,提取要素结果(要素集):public void SampleGeneratingGeoprocessingResults()Geoprocessor GP=new Geoprocessor();GP.AddToolbox(“http:/flame7/arcgis/services;GP/Bestpathtoolbox”);IVariantArray parameters=new VarArrayClass();param

    45、eters.Add(source);parameters.Add(“destination”);IGeoProcessorResult2 result=(IGeoProcessorResult2)GP.Execute(CalculateBestPath,parameters,null);/Check the job status.while(result.Status!=esriJobStatus.esriJobSucceeded)Console.WriteLine(result.Status.ToString();System.Threading.Thread.Sleep(100);/If

    46、the job succeeded,retrieve the feature result.if(result.Status=esriJobStatus.esriJobSucceeded)IGPValue outVal=result.GetOutput(0);parameters.RemoveAll();parameters.Add(outVal);parameters.Add(C:DataGPTest.gdbbestpath);GP.Execute(CopyFeatures,parameters,null);/Print the resulting messages.for(int Coun

    47、t=0;Count=result.MessageCount-1;Count+)Console.WriteLine(result.GetMessage(Count);工具的返回值(ReturnValue)v当地理处理工具执行时,会产生处理结果,可以使用IGeoProcessorResult2返回工具的输出值(ReturnValue,为object类型)。典型情况下,ReturnValue对象是工具产生的输出数据集的路径,但也可以是其他值类型,如数字或布尔类型。如果工具的输出是一个多值参数,那么这个返回值是一个字符串,这个字符串由用分号隔开的多个字符串组成。public void SampleGe

    48、oprocessingReturnValue_1(Geoprocessor GP,IGPProcess bufferTool)/Example 1:Return path to output data:/The return value is an object of type string that is the path to the output.IGeoProcessorResult2 pResult=(IGeoProcessorResult2)GP.Execute(bufferTool,null);object returnval=pResult.ReturnValue;if(returnval)is string)/Add your code here.

    展开阅读全文
    提示  163文库所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
    关于本文
    本文标题:地理处理框架课件.ppt
    链接地址:https://www.163wenku.com/p-5028157.html

    Copyright@ 2017-2037 Www.163WenKu.Com  网站版权所有  |  资源地图   
    IPC备案号:蜀ICP备2021032737号  | 川公网安备 51099002000191号


    侵权投诉QQ:3464097650  资料上传QQ:3464097650
       


    【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。

    163文库