SuperMap iObject Java 实现叠加分析

作者:姜尔


前言

 本文主要以叠加分析相交分析作为示例,提供代码及注释作为参考,并配有运行结果截图来可视化成果展示。 叠加分析功能相关详细介绍可以参考SuperMap官方在线帮助文档相关内容,如下链接:http://support.supermap.com.cn/DataWarehouse/WebDocHelp/iObjectsJava/index.htmlhttps://help.supermap.com/iDesktopX/zh/


目录

一、功能原理

二、主代码

三、完整示例代码

四、运行结果展示


一、功能原理

叠加分析类(OverlayAnalyst)。该类用于对输入的两个数据集或记录集之间进行各种叠加分析运算,如裁剪(clip)、擦除(erase)、合并(union)、相交(intersect)、同一(identity)、对称差(xOR)和更新(update)。

叠加分析是 GIS  中的一项非常重要的空间分析功能。是指在统一空间参考系统下,通过对两个数据集进行的一系列集合运算,产生新数据集的过程。叠加分析广泛应用于资源管理、城市建设评估、国土管理、农林牧业、统计等领域。因此,通过此叠加分析类可实现对空间数据的加工和分析,提取用户需要的新的空间几何信息,并且对数据的属性信息进行处理。

* 注意:

扫描二维码关注公众号,回复: 17356190 查看本文章
  1. 进行叠加分析的两个数据集中,被称作输入数据集(在 SuperMap GIS  中称作第一数据集)的那个数据集,其类型可以是点、线、面等;另一个被称作叠加数据集(在 SuperMap GIS 中称作第二数据集)的数据集,其类型一般是面类型。
  2. 应注意面数据集或记录集中本身应避免包含重叠区域,否则叠加分析结果可能出错。
  3. 叠加分析的数据必须为具有相同地理参考的数据,包括输入数据和结果数据。
  4. 在叠加分析的数据量较大的情况下,需对结果数据集创建空间索引,以提高数据的显示速度。 

二、主代码

以下主代码展示相交分析:

// 设置叠加分析参数
System.out.println("开始设置叠加分析参数");
OverlayAnalystParameter overlayAnalystParamIntersect = new
                OverlayAnalystParameter();
overlayAnalystParamIntersect.setSourceRetainedFields(new String[] {"SmID","tt","ttt"});//设置进行叠加分析的第一数据集或记录集中需要保留的字段名称集合。
overlayAnalystParamIntersect.setOperationRetainedFields(new String[] {"SmID","smarea","col","col_1"});//设置进行叠加分析的第二数据集或记录集中需要保留的字段名称集合。
overlayAnalystParamIntersect.setTolerance(0.00000001);
// 调用相交叠加分析方法实相交分析
Boolean OverlayAnalystintersect =  OverlayAnalyst.intersect(DatasetVectorIntersected, DatasetVectorIntersect,resultDatasetIntersect,overlayAnalystParamIntersect);        
System.out.println("是否执行相交成功:" + OverlayAnalystintersect);

注意,分析结果需要创建一个结果数据集进行存储,例如:

//创建一个面矢量数据集,用于存储相交分析返回的结果//文件数据源
String resultDatasetIntersectName = datasource.getDatasets().getAvailableDatasetName( "resultDatasetIntersect");
DatasetVectorInfo DatasetVectorInfoIntersect = new DatasetVectorInfo();
DatasetVectorInfoIntersect.setType(DatasetType.REGION);    DatasetVectorInfoIntersect.setName(resultDatasetIntersectName);
DatasetVectorInfoIntersect.setEncodeType(EncodeType.NONE);
DatasetVector resultDatasetIntersect = datasource.getDatasets().create(DatasetVectorInfoIntersect);   

三、完整示例代码

完整示例代码详见资源链接:

https://download.csdn.net/download/EliseJ/88576862

四、运行结果展示

猜你喜欢

转载自blog.csdn.net/EliseJ/article/details/134592613
今日推荐