arcobject java_ArcObject SDK for Java调用自定义toolbox工具

本文介绍了如何在Java环境中利用ArcObject SDK进行二次开发,详细阐述了创建Esri模板工程、初始化许可以及调用自定义Toolbox工具的过程。代码示例展示了如何执行自定义模型工具,从tif文件生成json文件,并强调了在引用自定义toolbox时需要注意的工具名称和参数顺序。
摘要由CSDN通过智能技术生成

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 的步骤,见下图:

6a9a8b55555a0a79643254f68a2ffbd8.png

4fcfa2aed89b496f0e281a43d16b76d5.png

67cdf063362e85eb28cb0789b7433159.png

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

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

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

3、上代码

public voidproduceFormattedJSONFileFromTiff() {

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 = newVarArray();//输入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(newFile(resultJsonPath)));

StringBuffer sb= newStringBuffer();

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 工具的参数顺序

原文:https://www.cnblogs.com/gregcn/p/8868497.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值