java geoprocessor_Arcgis镶嵌数据集java代码操作

镶嵌数据集结合了之前arcgis管理影像的栅格目录和栅格数据集,为解决海量影像管理提供了很好的方案!

为什么要使用镶嵌数据集?

可伸缩性海量影像管理

重叠影像管理

管理离散数据集大量的空值区域

多种传感器数据支持

流畅的影像更新

所有比例尺下无缝显示

保留有价值的元数据信息

动态处理减少处理时间

减少冗余存储

减少重采样,提升影像质量

开发代码使用java调用ArcEngine环境。

首先初始化AE运行环境

/**

* 初始化ArcgisEngine

*/

public static void initializeAE() {

EngineInitializer.initializeVisualBeans();

EngineInitializer.initializeEngine();

try {

com.esri.arcgis.system.AoInitialize ao = new com.esri.arcgis.system.AoInitialize();

ao.initialize(com.esri.arcgis.system.esriLicenseProductCode.esriLicenseProductCodeArcInfo);

if (ao.isProductCodeAvailable(com.esri.arcgis.system.esriLicenseProductCode.esriLicenseProductCodeArcInfo) == com.esri.arcgis.system.esriLicenseStatus.esriLicenseAvailable)

ao.initialize(com.esri.arcgis.system.esriLicenseProductCode.esriLicenseProductCodeArcInfo);

else

System.out.println("license failed");

ao.checkOutExtension(com.esri.arcgis.system.esriLicenseExtensionCode.esriLicenseExtensionCode3DAnalyst);

ao.checkOutExtension(com.esri.arcgis.system.esriLicenseExtensionCode.esriLicenseExtensionCodeSpatialAnalyst);

ao.checkOutExtension(com.esri.arcgis.system.esriLicenseExtensionCode.esriLicenseExtensionCodeSpatialAnalyst);

ao.initialize(esriLicenseProductCode.esriLicenseProductCodeEngine);

ao.initialize(esriLicenseProductCode.esriLicenseProductCodeEngineGeoDB);

ao.initialize(esriLicenseProductCode.esriLicenseProductCodeArcEditor);

ao.checkOutExtension(esriLicenseExtensionCode.esriLicenseExtensionCodeSpatialAnalyst);

System.out.println("arcgis初始化成功>>>...");

} catch (Exception e) {

e.printStackTrace();

}

}

添加栅格影像到镶嵌数据集,本次测试的整个文件目录,存入镶嵌数据集

/**

* 添加镶嵌数据集栅格数据

* @param mosaicDataset 镶嵌数据集

* @param path 文件存储路径

*/

public void addMosaicDataSet(String mosaicDataset, String path){

GeoProcessor geoprocessor;

try {

geoprocessor = new GeoProcessor();

geoprocessor.setOverwriteOutput(true);

AddRastersToMosaicDataset addMosaicDataSet = new AddRastersToMosaicDataset();

addMosaicDataSet.setInMosaicDataset(mosaicDataset);//1

addMosaicDataSet.setRasterType("Raster Dataset");//2

addMosaicDataSet.setInputPath(path);//待入库的文件目录

addMosaicDataSet.setFilter("*.tif");//匹配入镶嵌数据集中的文件类型

addMosaicDataSet.setUpdateOverviews("true");

/** ALLOW_DUPLICATES 全部添加

* EXCLUDE_DUPLICATES 只添加更新的

* OVERWRITE_DUPLICATES 重写以前添加的

* */

addMosaicDataSet.setDuplicateItemsAction("EXCLUDE_DUPLICATES");

GPTool pGPProcess = addMosaicDataSet;

geoprocessor.setOverwriteOutput(true);

//执行

geoprocessor.execute(pGPProcess, null);

} catch (UnknownHostException e) {

// TODO Auto-generated catch block

e.printStackTrace();

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

移除镶嵌数据中个别数据

/**

* 移除镶嵌数据集中的数据

* @param mosaicDataset 镶嵌数据集

* @param sql 删除命令 例如:name='004'

*

*/

public void remoMosaicDataSet (String mosaicDataset, String sql) {

GeoProcessor geoprocessor = null;

try {

geoprocessor = new GeoProcessor();

geoprocessor.setOverwriteOutput(true);

RemoveRastersFromMosaicDataset deleteFeatures = new RemoveRastersFromMosaicDataset();

deleteFeatures.setInMosaicDataset(mosaicDataset);

deleteFeatures.setWhereClause(sql);

GPTool pGPProcess = deleteFeatures;

geoprocessor.setOverwriteOutput(true);

//执行

geoprocessor.execute(pGPProcess, null);

} catch (AutomationException e) {

// TODO Auto-generated catch block

e.printStackTrace();

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

构建金字塔

/**

* 创建金字塔

* @param mosaicDataset 镶嵌数据集路径

* @param whereSql 查询条件,wheresql可以为空

*/

public void buildOverviewsMosaicDataSet (String mosaicDataset, String whereSql) {

GeoProcessor geoprocessor = null;

try {

geoprocessor = new GeoProcessor();//初始化gp工具

geoprocessor.setOverwriteOutput(true);

BuildOverviews buildPryramids = new BuildOverviews();

buildPryramids.setInMosaicDataset(mosaicDataset);

if (whereSql != null && whereSql.equals("") == false) {

buildPryramids.setWhereClause(whereSql);

}

GPTool pGPProcess = buildPryramids;

geoprocessor.setOverwriteOutput(true);

//执行

geoprocessor.execute(pGPProcess, null);

Constant.printLnData("切割金字塔成功 :"+pGPProcess.getParameterValues()[0]);

} catch (AutomationException e) {

// TODO Auto-generated catch block

e.printStackTrace();

Constant.printLnData("切割金字塔失败 " + e.getMessage());

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

Constant.printLnData("切割金字塔失败 "+ e.getMessage());

}

}

创建轮廓

/**

* 创建轮廓

* @param mosaicDataset 镶嵌数据集

*/

public void buildFootprints (String mosaicDataset) {

GeoProcessor geoprocessor = null;

try {

geoprocessor = new GeoProcessor();

geoprocessor.setOverwriteOutput(true);

BuildFootprints buildPryramids = new BuildFootprints();

buildPryramids.setInMosaicDataset(mosaicDataset);

GPTool pGPProcess = buildPryramids;

geoprocessor.setOverwriteOutput(true);

//执行

geoprocessor.execute(pGPProcess, null);

Constant.printLnData("构建轮廓成功 :"+pGPProcess.getParameterValues()[0]);

} catch (AutomationException e) {

// TODO Auto-generated catch block

e.printStackTrace();

Constant.printLnData("构建轮廓失败" + e.getMessage());

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

Constant.printLnData("构建轮廓失败"+ e.getMessage());

}

} 上述就是基本操作代码。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值