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() 消息?
live domains sdk version 2.0 for java 更新