ArcObject SDK for Java调用自定义toolbox工具

Posted gregcn

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ArcObject SDK for Java调用自定义toolbox工具相关的知识,希望对你有一定的参考价值。

DATE:2018-4-17

开发环境:

MyEclipse 2014, JDK 1.8 32位(64位环境无法运行arcobject程序,只限工程引用的jdk)、ArcGIS 10.5

ArcGIS 软件安装完成后,还要安装 ArcObject SDK for Java,安装之后,才能进行 AO 的二次开发

 

开发步骤:

1、新建 esri templates 示例工程

新建esri templates工程目的是为了省去对 arcgis 许可初始化和加载 arcobjects.jar 的步骤,见下图:

技术分享图片

技术分享图片

技术分享图片

选择上图中的ArcObject Samples,在弹出的对话框中选择geoprocessing示例,随便新建一个工程即可;

2、修改生成代码中 initializeArcGISLicenses 初始化许可函数体(此步骤要注意

由于每个人机器上的安装的ArcGIS 版本不同,获取的许可也不相同,所以要初始化正确的许可

3、上代码

public void produceFormattedJSONFileFromTiff() {
        LocalDateTime start = LocalDateTime.now();
        
        String projectRoot = new File("").getAbsolutePath();
        
        try {
            // Add the BestPath toolbox.
            gp.addToolbox(projectRoot + "/resource/customertoolbox/ZCustomer.tbx");
            // Generate the array of parameters.
            VarArray parameters = new VarArray();
            //输入tif路径
            parameters.add(projectRoot + "/resource/data/rain_2016.flt");
            //重采样分类列表
            parameters.add("0 0.013435 1;"
                    + "0.013435 0.037422 2;0.037422 0.080247 3;"
                    + "0.080247 0.156709 4;0.156709 0.293223 5;"
                    + "0.293223 0.536956 6;0.536956 0.972118 7;"
                    + "0.972118 1.749056 8;1.749056 3.136204 9;"
                    + "3.136204 5.612822 10");
            //输出json路径
            parameters.add(projectRoot + "/resource/result/rain_2016.json");
            // Execute the model tool by name.
            IGeoProcessorResult result = gp.execute("ProduceJsonFromFltWithNoProject", parameters, null);
            while (result.getStatus() == esriJobStatus.esriJobSucceeded){
                
                System.out.println(result.getOutputCount());
                
                String resultJsonPath = (String) result.getReturnValue();
                System.out.println(resultJsonPath);
                
                //读取json文件
                BufferedReader reader = new BufferedReader(new FileReader(new File(resultJsonPath)));
                StringBuffer sb = new StringBuffer();
                String line = reader.readLine();
                while(line != null) {
                    sb.append(line);
                    line = reader.readLine();
                }
                
                JSONObject jsonObject = JSONObject.parseObject(sb.toString());
                
                System.out.println(result.getMessageCount());
                break;
            }
            
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        
        LocalDateTime end = LocalDateTime.now();
        Duration duration = Duration.between(start, end);
        
        System.out.println("自定义gp运行耗时:" + duration.toMillis() + "毫秒");
        
    }

 

 尾注

 上文截取的代码片段中的 ZCustomer.tbx 是我在 ArcMap 的模型编辑器中生成的,各位亲在引用上文代码时,一定要注意改成自己的toolbox,并为自己的toolbox输入正确的参数。

 

注意

在调用自定义 toolbox 时,一定注意 2 点: 一是toolbox 工具的名称;二是 toolbox 工具的参数顺序

 

以上是关于ArcObject SDK for Java调用自定义toolbox工具的主要内容,如果未能解决你的问题,请参考以下文章

java后台调用自定义arctoolbox(开发的程序放到tomcat容器运行)

使用 AWS SDK for Java 调用 AWS Lambda 函数时如何检索 context.done() 消息?

ArcObject类库的AO参考类库

live domains sdk version 2.0 for java 更新

live domains sdk version 2.0 for java 更新

live domains sdk version 2.0 for java 更新