Arcgis镶嵌数据集java代码操作
转自:http://www.cdtarena.com/javapx/201307/9105.html
镶嵌数据集结合了之前arcgis管理影像的栅格目录和栅格数据集,为解决海量影像管理提供了很好的方案!
为什么要使用镶嵌数据集?
•可伸缩性海量影像管理
•重叠影像管理
•管理离散数据集大量的空值区域
•多种传感器数据支持
•流畅的影像更新
•所有比例尺下无缝显示
•保留有价值的元数据信息
•动态处理减少处理时间
•减少冗余存储
•减少重采样,提升影像质量
开发代码使用java调用ArcEngine环境。
首先初始化AE运行环境
[java] view plaincopyprint?
01./**
02. * 初始化ArcgisEngine
03. */
04. public static void initializeAE() {
05. EngineInitializer.initializeVisualBeans();
06. EngineInitializer.initializeEngine();
07. try {
08. com.esri.arcgis.system.AoInitialize ao = new com.esri.arcgis.system.AoInitialize();
09. ao.initialize(com.esri.arcgis.system.esriLicenseProductCode.esriLicenseProductCodeArcInfo);
10. if (ao.isProductCodeAvailable(com.esri.arcgis.system.esriLicenseProductCode.esriLicenseProductCodeArcInfo) == com.esri.arcgis.system.esriLicenseStatus.esriLicenseAvailable)
11. ao.initialize(com.esri.arcgis.system.esriLicenseProductCode.esriLicenseProductCodeArcInfo);
12. else
13. System.out.println("license failed");
14. ao.checkOutExtension(com.esri.arcgis.system.esriLicenseExtensionCode.esriLicenseExtensionCode3DAnalyst);
15. ao.checkOutExtension(com.esri.arcgis.system.esriLicenseExtensionCode.esriLicenseExtensionCodeSpatialAnalyst);
16. ao.checkOutExtension(com.esri.arcgis.system.esriLicenseExtensionCode.esriLicenseExtensionCodeSpatialAnalyst);
17. ao.initialize(esriLicenseProductCode.esriLicenseProductCodeEngine);
18. ao.initialize(esriLicenseProductCode.esriLicenseProductCodeEngineGeoDB);
19. ao.initialize(esriLicenseProductCode.esriLicenseProductCodeArcEditor);
20. ao.checkOutExtension(esriLicenseExtensionCode.esriLicenseExtensionCodeSpatialAnalyst);
21. System.out.println("arcgis初始化成功>>>...");
22. } catch (Exception e) {
23. e.printStackTrace();
24. }
25. }
添加栅格影像到镶嵌数据集,本次测试的整个文件目录,存入镶嵌数据集
[java] view plaincopyprint?
01./**
02. * 添加镶嵌数据集栅格数据
03. * @param mosaicDataset 镶嵌数据集
04. * @param path 文件存储路径
05. */
06. public void addMosaicDataSet(String mosaicDataset, String path){
07. GeoProcessor geoprocessor;
08. try {
09. geoprocessor = new GeoProcessor();
10. geoprocessor.setOverwriteOutput(true);
11.
12. AddRastersToMosaicDataset addMosaicDataSet = new AddRastersToMosaicDataset();
13. addMosaicDataSet.setInMosaicDataset(mosaicDataset);//1
14. addMosaicDataSet.setRasterType("Raster Dataset");//2
15. addMosaicDataSet.setInputPath(path);//待入库的文件目录
16. addMosaicDataSet.setFilter("*.tif");//匹配入镶嵌数据集中的文件类型
17. addMosaicDataSet.setUpdateOverviews("true");
18.
19. /** ALLOW_DUPLICATES 全部添加
20. * EXCLUDE_DUPLICATES 只添加更新的
21. * OVERWRITE_DUPLICATES 重写以前添加的
22. * */
23. addMosaicDataSet.setDuplicateItemsAction("EXCLUDE_DUPLICATES");
24. GPTool pGPProcess = addMosaicDataSet;
25. geoprocessor.setOverwriteOutput(true);
26. //执行
27. geoprocessor.execute(pGPProcess, null);
28. } catch (UnknownHostException e) {
29. // TODO Auto-generated catch block
30. e.printStackTrace();
31. } catch (IOException e) {
32. // TODO Auto-generated catch block
33. e.printStackTrace();
34. }
35. }
移除镶嵌数据中个别数据http://www.cdtarena.com/qrs.html
[java] view plaincopyprint?
01./**
02. * 移除镶嵌数据集中的数据
03. * @param mosaicDataset 镶嵌数据集
04. * @param sql 删除命令 例如:name='004'
05. *
06. */
07.public void remoMosaicDataSet (String mosaicDataset, String sql) {
08. GeoProcessor geoprocessor = null;
09. try {
10. geoprocessor = new GeoProcessor();
11. geoprocessor.setOverwriteOutput(true);
12.
13. RemoveRastersFromMosaicDataset deleteFeatures = new RemoveRastersFromMosaicDataset();
14. deleteFeatures.setInMosaicDataset(mosaicDataset);
15. deleteFeatures.setWhereClause(sql);
16.
17. GPTool pGPProcess = deleteFeatures;
18. geoprocessor.setOverwriteOutput(true);
19. //执行
20. geoprocessor.execute(pGPProcess, null);
21. } catch (AutomationException e) {
22. // TODO Auto-generated catch block
23. e.printStackTrace();
24. } catch (IOException e) {
25. // TODO Auto-generated catch block
26. e.printStackTrace();
27. }
28.}
构建金字塔
[java] view plaincopyprint?
01./**
02. * 创建金字塔
03. * @param mosaicDataset 镶嵌数据集路径
04. * @param whereSql 查询条件,wheresql可以为空
05. */
06. public void buildOverviewsMosaicDataSet (String mosaicDataset, String whereSql) {
07. GeoProcessor geoprocessor = null;
08. try {
09. geoprocessor = new GeoProcessor();//初始化gp工具
10. geoprocessor.setOverwriteOutput(true);
11.
12. BuildOverviews buildPryramids = new BuildOverviews();
13. buildPryramids.setInMosaicDataset(mosaicDataset);
14. if (whereSql != null && whereSql.equals("") == false) {
15. buildPryramids.setWhereClause(whereSql);
16. }
17. GPTool pGPProcess = buildPryramids;
18. geoprocessor.setOverwriteOutput(true);
19. //执行
20. geoprocessor.execute(pGPProcess, null);
21. Constant.printLnData("切割金字塔成功 :"+pGPProcess.getParameterValues()[0]);
22. } catch (AutomationException e) {
23. // TODO Auto-generated catch block
24. e.printStackTrace();
25. Constant.printLnData("切割金字塔失败 " + e.getMessage());
26. } catch (IOException e) {
27. // TODO Auto-generated catch block
28. e.printStackTrace();
29. Constant.printLnData("切割金字塔失败 "+ e.getMessage());
30. }
31. }
创建轮廓
[java] view plaincopyprint?
01./**
02. * 创建轮廓
03. * @param mosaicDataset 镶嵌数据集
04. */
05. public void buildFootprints (String mosaicDataset) {
06. GeoProcessor geoprocessor = null;
07. try {
08. geoprocessor = new GeoProcessor();
09. geoprocessor.setOverwriteOutput(true);
10.
11. BuildFootprints buildPryramids = new BuildFootprints();
12. buildPryramids.setInMosaicDataset(mosaicDataset);
13.
14. GPTool pGPProcess = buildPryramids;
15. geoprocessor.setOverwriteOutput(true);
16. //执行
17. geoprocessor.execute(pGPProcess, null);
18. Constant.printLnData("构建轮廓成功 :"+pGPProcess.getParameterValues()[0]);
19. } catch (AutomationException e) {
20. // TODO Auto-generated catch block
21. e.printStackTrace();
22. Constant.printLnData("构建轮廓失败" + e.getMessage());
23. } catch (IOException e) {
24. // TODO Auto-generated catch block
25. e.printStackTrace();
26. Constant.printLnData("构建轮廓失败"+ e.getMessage());
27. }
28. }
/
上述就是基本操作代码。
Arcgis镶嵌数据集java代码操作的更多相关文章
- Java代码操作HDFS测试类
1.Java代码操作HDFS需要用到Jar包和Java类 Jar包: hadoop-common-2.6.0.jar和hadoop-hdfs-2.6.0.jar Java类: java.net.URL ...
- 使用java代码操作Redis
1导入pom.xml依赖 <dependency> <groupId>redis.clients</groupId> <artifactId>jedis ...
- java代码操作Redis
1.导入需要的pom依赖 <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEn ...
- Java代码操作zookeeper
.personSunflowerP { background: rgba(51, 153, 0, 0.66); border-bottom: 1px solid rgba(0, 102, 0, 1); ...
- 分享知识-快乐自己:java代码 操作 solr
POM 文件: <!-- solr客户端 --> <dependency> <groupId>org.apache.solr</groupId> < ...
- 大数据之路week07--day01(HDFS学习,Java代码操作HDFS,将HDFS文件内容存入到Mysql)
一.HDFS概述 数据量越来越多,在一个操作系统管辖的范围存不下了,那么就分配到更多的操作系统管理的磁盘中,但是不方便管理和维护,因此迫切需要一种系统来管理多台机器上的文件,这就是分布式文件管理系统 ...
- java:nginx(java代码操作ftp服务器)
1.检查是否安装了vsftpd [root@linux01 ~]# rpm -qa|grep vsftpd 2.安装vsftpd [root@linux01 ~]# yum -y install vs ...
- Java代码操作HDFS(在/user/root/下面創建目錄)
1.创建HDFS目录并打成jar包 package Hdfs; import java.io.IOException; import java.net.URI; import org.apache.h ...
- kerberos下JAVA代码操作hbase的方式(客户端方式,应用程序方式)
(一)如果部署JAVA 代码的主机用户获取了kerberos权限情况下 假设主机名是:client su - client 登录主机后 kinit -kt /keytab的路径/client.keyt ...
随机推荐
- javaweb学习路之三--websocket多人在线聊天
在之前的项目基础上,加入了一个聊天室的功能,为了界面好看 引入了AmazeUI和umeditor最终效果图如下: 源码在 https://github.com/Zering/MyWeb 目前练习都在这 ...
- 基于maven插件的缓存控制插件
asset-cache-control github源码及下载地址: https://github.com/StruggleBird/asset-cache-control 基于maven插件的缓存控 ...
- gets scanf以及缓冲区域的问题
1:scanf scanf会忽略开头所有的空格,并以Space Enter Tab 结束输入, 不会舍弃最后的回车符(即回车符会残存在缓冲区域中) 2:getchar getchar以Enter结束, ...
- C#调用C/C++动态库 封送结构体,结构体数组
因为实验室图像处理的算法都是在OpenCV下写的,还有就是导航的算法也是用C++写的,然后界面部分要求在C#下写,所以不管是Socket通信,还是调用OpenCV的DLL模块,都设计到了C#和C++数 ...
- MVC+ADO模式
MVC+DAO设计模式 博客分类: Java Java WEB开发 MVC+DAO设计模式 本文摘自:http://www.paper.edu.cn 基于MVC+DAO设计模式的Struts ...
- Centos6 安全防护设置指南
参考博文: Centos 6.4安全防护设置指南 4.使用chattr命令给下列文件加上不可更改的属性 有效防止非法用户进行文件的修改. [root@localhost ~]# chattr +i / ...
- hibernate Annotation 以及注解版的数据关联 4.4
目的是不写xxx.hbm.xml映射文件,使用注解 主配置文件还是要有hibernate.cfg.xml <?xml version="1.0" encoding=" ...
- cocos2d-x游戏开发系列教程-超级玛丽07-CMGameMap(六)-马里奥跳跃
当w键按下时,马里奥执行跳跃动作 执行跳跃动作也是在MarioMove函数中调用的
- Threejs 官网 - Three.js 的图形用户界面工具(GUI Tools with Three.js)
Threejs 官网 - Three.js 的图形用户界面工具(GUI Tools with Three.js) 太阳火神的漂亮人生 (http://blog.csdn.net/opengl_es) ...
- 在web page中使鼠标右击失效的几种方法
这里主要介绍两种方法,一种是使用js来处理,还有一种是在html属性中设置. 方法一:js 1: <script language="javascript"> docu ...