zoukankan      html  css  js  c++  java
  • 学习在 ArcEngine 中使用 Geoprocessing

    摘要:Geoprocessing对于ArcGIS使用者来说,是一种非常方便实用的工具,它可以利用ArcToolbox中的各种工具为我们的地理空间工作流进行框架建模,自动执行空间分析与处理。现在ArcEngine 9.2单独提供了com.esri.arcgis.geoprocessing.tools工具包,使得在二次开发中通过Geoprocessing构建应用模型,将ArcGIS众多分析工具集成到我们的应用中成为现实。看看在ArcEngine for Java环境中如何使用它。


        Geoprocessing对于ArcGIS使用者来说,是一种非常方便实用的工具,它可以利用ArcToolbox中的各种工具为我们的地理空间工作流进行框架建模,自动执行空间分析与处理。
        过去我们可以在ArcToolbox中新建Model,或是写python脚本、AML来构建新的模型,现在ArcEngine 9.2单独提供了com.esri.arcgis.geoprocessing.tools工具包,使得在二次开发中通过Geoprocessing构建应用模型,将ArcGIS众多分析工具集成到我们的应用中成为现实。
        我们就在ArcEngine 9.2 for Java环境中看看如何使用Geoprocessing。
    1. import com.esri.arcgis.geoprocessing.GeoProcessor;
    2. import com.esri.arcgis.geoprocessing.tools.analysistools.Clip;
    3. // Initialize the GeoProcessor
    4. GeoProcessor gp = new GeoProcessor();
    5. Clip clip= new Clip("c:/data/mjrroads.shp", "c:/data/coasts.shp",  "c:/output/clipOutput.shp");
    复制代码

       
        设置参数

    1. Clip clip = new Clip();
    2. clip.setInFeatures = "c:/data/mjrroads.shp";
    3. clip.setClipFeatures = "c:/data/coasts.shp";
    4. clip.setOutFeatureClass = "c:/output/clipOutput.shp";
    复制代码

       
        代码中Clip构造方法,以及clip对象参数的设置,均和ArcToolbox-->Clip工具相对应。



        Geoprocessor类用来执行Geoprocessing相关工具的操作,geoprocessor的角色是一种helper对象,它的重载方法execute用来运行之前所定义的操作集。
    1. GP.execute(clip, null);
    复制代码

        com.esri.arcgis.geoprocessing.IGeoProcessorResult接口的对象可以捕获execute执行后的结果。
    1. // Intialize the Geoprocessor
    2. GeoProcessor gp = new GeoProcessor();
    3. // 使用web service中的toolbox
    4. gp.addToolbox("http://flame7:8399/arcgis/services;GP/Bestpathtoolbox");
    5. // 导入本地的shape文件
    6. ArrayList parameters = new ArrayList;
    7. parameters.add("C:\\sandiego\\source.shp");
    8. parameters.add("C:\\sandiego\\destination.shp");
    9. // 捕获execute执行结果
    10. IGeoProcessorResult result;
    11. result = gp.execute("CalculateBestPath", parameters, null);
    复制代码


        名字冲突
        和OO语言处理名字冲突一样,当可能出现名字冲突时,可以使用全名来唯一指定所使用的工具:
        ArcToolbox-->Analysis Tools-->Extract-->Clip
        ArcToolbox-->Data Management-->Raster-->Clip

    1. com.esri.arcgis.geoprocessing.tools.analysistools.Clip
    2. com.esri.arcgis.geoprocessing.tools.datamanagementtools.Clip
    复制代码


        Geoprocessing编程的时候,还可以使用AO作为输入的工具
    1. // Initialize the Geoprocessor
    2. GPUtilities gpUtilities = new GPUtilities();
    3. IFeatureClass inputFeatureClass = gpUtilities.openFeatureClassFromString(inputData+"/canada/mjrroads.shp");
    4. IFeatureClass clipFeatureClass = gpUtilities.openFeatureClassFromString(inputData+"/canada/coasts.shp");
    5. Clip clip = new Clip(inputFeatureClass, clipFeatureClass, outputDirectory+"/clipOutput.shp");
    6. gp.execute(clip, null);
    复制代码


        关于GPUtilities和Geoprocessor区别,可以看看这两段描述以及各自的类方法:
        The GPUtilities object is mainly intended for developers building custom tools. For more information about building custom tools, refer to the technical document Building Geoprocessing Function Tools.
        A geoprocessing tool is executed by a geoprocessor. The geoprocessor is a helper object that simplifies the task of executing tools. Toolboxes define the set of tools available for the geoprocessor. Toolboxes can be added and removed from the geoprocessor.
        ArcToolbox工具都有自己的环境设置,一般情况下我们使用默认值,在AE中可以用setEnvironmentValue方法来设置环境变量的值
    1. // Get the Cell Size environment value
    2. gp.setEnvironmentValue("cellsize", Double.valueOf(10.0));
    3. String env = (String) gp.getEnvironmentValue("cellsize");

    4. // Set the output Coordinate System environment            
    5. gp.setEnvironmentValue("outputCoordinateSystem", "c:/Program Files/ArcGIS/Coordinate Systems/Projected Coordinate Systems/UTM/Nad 1983/NAD 1983 UTM Zone 21N.prj");

    6. // Reset the environment values to their defaults.
    7. gp.resetEnvironments();
    复制代码


        需要注意的是,在使用Geoprocessing建模进行各种空间操作时,我们需要相应的license授权来完成这些操作,如Spatial Join需要ArcInfo License,各种级别License描述可以参考下图:
  • 相关阅读:
    a 去虚框
    清除浮动
    【IE6】float:left margin-left翻倍【浮动块增加属性:-display:inline;】
    linux学习笔记(九):系统运行状况查看、磁盘、网络
    linux学习笔记(八):管理文件、文件搜索、文件查看、文件对比
    linux学习笔记(七):shell命令语法
    linux学习笔记(五):开机、关机、开机日志
    Windows 10 远程桌面出现身份验证错误:要求的函数不受支持(解决)
    (转) java 通过 jdbc 链接 ms sql server 中出现 "no suitable driver for ..."
    (转)ArcGIS Runtime for Android 使用异步GP服务绘制等值线
  • 原文地址:https://www.cnblogs.com/zuiyirenjian/p/1679638.html
Copyright © 2011-2022 走看看