4· ·
Computer Era No. 2 2008
一种基于 ArcGIS Engine 的线状图幅接边方法
刘庆元, 周 容
(中南大学信息物理工程学院, 湖南 长沙 410083)
摘 要: 针对现有线状图幅接边工具的一些缺陷, 提出了一种兼顾几何关系和属性特征的线状 图 幅 接 边 算 法, 并 利 用
ArcGIS Engine 提供的功能, 以 Microsoft Visual C++ 6.0 为开发环境实现了这一算法。实验证明, 这种方 法 对 一 般 的 线
状图幅接边是有效的。
关键词: 线状; 图幅接边; 属性特征; ArcGIS Engine
0 引言
图 幅 接 边 是 GIS 地 图 数 据 处 理 过 程 中 经 常 会 遇 到 的 一 项
工作。为了便于测绘和管理较大 区域的地图数据, 通 常 将 地 图
按照一定的规则进行分幅处理。使用地图数据时, 如 果 研 究 区
域 分 布 在 两 个 或 多 个 图 幅 之 中 , 就 必 须 进 行 图 幅 接 边 , 将 相 邻
图 幅 中 对 应 的 地 理 要 素 合 并 在 一 起 。 但 是 由 于 数 据 的 精 度 问
题, 相 邻 图 幅 上 的 地 理 要 素 常 常 不 能 够 很 好 地 吻 合 , 这 给 接 边
工作带来了不便。
一 些 GIS 软 件 中 带 有 图 幅 接 边 的 模 块 , 如 ArcGIS 中 的
EdgeMatch。但是, 在现实的数据处理过程中, 这些模块的 功 能
还不能满足要求。首先, 使用这些接边模块时仍然 需 要 较 多 的
人工干预, 比较繁琐; 其次, 大多数的接边模块进行接边 处 理 时
仅仅考虑相邻图幅上地理要素的几何关系, 而没有充 分 利 用 属
性信息, 这在某些情况下, 如进行等高线的接边时, 容 易 造 成 逻
辑错误。
线状图幅的接边是图幅接边工作的重要组成 部 分, 常 用 的
数字线划图( DLG) 图幅接边即属 此类, 上文所提到的等高 线 图
幅接边, 更是一个典型的例子。
当前, 国内已有一些人提出了图幅接边问题 的 解 决 方 案 。
如邓小军等详细分析了等高 线的图幅接边问题, 对各 种 相 邻 图
幅等高线接边误差的形式做了分类[1], 具有一定的代表性。
本 文 提 出 了 一 种 兼 顾 几 何 关 系 和 属 性 特 征 的 线 状 图 幅 自
动 接 边 算 法 ; 利 用 ArcGIS Engine 组 件 所 提 供 的 空 间 操 作 功
能 , 在 Microsoft Visual C++ 6.0 环 境 下 , 实 现 了 这 一 算 法 ; 并
在一个实例的基础上, 讨论了这种方法的有效性。
1 线状图幅接边问题的提出
如图 1 所示, 研究区域跨越 A、B 两相邻图幅。A、B 中各有
一线状地理要素, 它们是同一地物的不同组成部分, 具有相同的属
性特征。在数据精确的情况下, 这两个线状要素应该能够吻合,
但是由于数据的误差, 常常做不到这一点。这时, 就需要采取一些
方法来将两个线状要素接合起来, 形成一个完整的地理要素。
图 1 数据误差造成的接边问题
2 线状图幅自动接边算法
2.1 接边前的数据准备
为 了 算 法 的 有 效 执 行 , 在 进 行 接 边 之 前 , 必 须 对 参 与 接 边
的 图 幅 进 行 处 理 , 以 达 到 两 个 要 求 : 参 与 接 边 的 图 幅 应 该 具 有
相 同 的 地 图 数 学 基 础 , 包 括 相 同 的 比 例 尺 , 相 同 的 投 影 坐 标 系
及高程基准; 参与接边的图幅属性数据必须准确。 如 果 数 据 不
能满足这两个要求, 接边算法是无法顺利进行的。
2.2 线状图幅自动接边算法的流程
⑴ 搜索参与接边的对象
让相邻图幅上所有的地理要素参与接边是不必要的, 这将
严重增加算法的复杂度。为提高效率, 算法首先搜索相邻图幅上
参与接边的地理要素。搜索的方法如下: 给定一个阈值 d1, 以这
个阈值为大小, 求取图幅接边线的双侧缓冲区; 凡是与这个缓冲
区相交的线状要素, 分别记录在两个集合里( 两个图幅各一个) ,
参与下一步的接边; 未与这个缓冲区相交的线状要素, 排除在集
合之外, 不参与下一步的接边。图 2 中左起第 1、4 根线状要素被
排除, 第 2、3 根线记入搜索结果集合中。选择一个图幅( 通常为
左图幅或上图幅) 作为主图幅, 其中的地理要素称为主要 素; 另
一个图幅作为副图幅, 其中的地理要素称为副要素。
图 2 搜索与半径为 2d1 的接边线双侧缓冲区相交的要素
⑵ 属性匹配
对⑴中得到的两个结果集进行遍历, 查询每 个 线 状 要 素 的
属性。若在两个集合中找到 一对属性匹配的要素, 转 入⑶进 行
接 边 处 理 , 直 到 两 个 集 合 遍 历 完 毕 , 所 有 的 属 性 匹 配 的 要 素 拼
接完成, 整个接边工作也就完成了。
⑶ 接边处理
对⑵中找到的每一对属性匹配的地理要素, 接 边 处 理 的 过
程如图 3 所示。利用本算法接边时, 必须以主要素 的 末 结 点 与
副要素的首结点相连接, 所 以当出现距离最近的结点 为 非 末 首
结点时, 必须调整结点的顺序。如图 4 所示, 如果主要素与副要
计算机时代 2008 年 第 2 期
5· ·
素距离最近点为首末结点, 必须同时倒转主副要素 的 点 序, 使
距离最近的点对变为末 首结点, 再进行拼接。其余三 种 情 况 作
ipFtClas s ->Search(ipQueryFilter,VARIANT_TRUE,&ipFtCurs or);
// 以游标方式返回查询结果
类似的处理。
⑵ 接边对象匹配
使用 IFeaturePtr 的接 口 的 get_Fields 方 法 得 到 属 性 字 段 接
口 IFieldsPtr, 通 过 它 可 以 得 到 需 要 查 询 的 属 性 , 对⑴中 得 到 的
要素集合一一进行匹配。
⑶ 接边处理
如果两线状要素属性特征相同, 判断主、副图幅属性匹配的
地图元素首末点之间( 共有四种组合) 最小距离是否在接边阈值
内。首先得到到两 Feature 的点集接口 IPointCollectionPtr:
ipFeature->get_Shape(&ipGeometry);
IPointCollectionPtr ipPoints ;
ipPoints =ipGeometry;
接着得到其首末点:
IPointPtr StartPt,EndPt;
ipPoints ->get_PointCount(&Num); // 得到要素的点个数
ipPoints ->get_Point(0,&StartPt); // 取首点
ipPoints ->get_Point((Num-1),&EndPt); //取末点
如首末点之间( 四种组合之一) 的最小距离小于 接 边 阈 值,
图 3 接边算法的流程
则进行拼接:
点序调整完毕后, 即可进行拼接。将副要素 的 首 结 点 与 主
要素的尾结点连结起来, 并将 副要素所有的结点依次 加 入 到 主
要素中, 更新主要素, 最后删除副要素。至此, 一对属性 匹 配 的
线状要素就拼接完成了。
图 4 调整主副要素的点序
3 用 ArcGIS Engine 实现线状图幅拼接算法
ArcGIS Engine 是 ESRI 公 司 推 出 的 一 个 用 于 定 制 应 用 的
完整的嵌入式 GIS 组件库。利用 ArcGIS Engine, 开发者能够将
ArcGIS 的功能集成到独立的应用程序中, 从而避免考虑底层的
空间算法, 降低开发难度, 提高开发效率。ArcGIS Engine 支持
多 种 主 流 开 发 语 言 , 如 Visual Basic, Visual C++, Java 等 , 为 开
发者提供了便利[2]。
本 文 依 据 前 文 所 述 的 算 法 给 出 了 接 边 程 序 所 需 要 的 主 要
接口或部分代码, 开发平台为 Microsoft Visual C++ 6.0[2- 5]。
⑴ 搜索参与接边的对象
首先通过 IMapPtr 接口的 get_Envelope 方法求出两图幅的
图幅范围 IEnvelopePtr, 按指定的阈 值 求 出 搜 索 的 范 围( 即 接 边
线的缓冲区) 。
搜索范围确定后, 搜索过程使用 ISpatialFilterPtr 接口。
ISpatialFilterPtr ipFilter(CLSID_SpatialFilter);
ipFilter->put_SpatialRel(es riSpatialRelCros s es );
// 设置搜索方式为相交
IQueryFilterPtr ipQueryFilter=ipFilter; // 查询过滤器接口
IFeatureClas s Ptr ipFtClas s ;
ipFtLayer->get_FeatureClas s (&ipFtClas s );
IPolylinePtr tmpPolyline;
tmpPolyline=ipLGeometry;
tmpPolyline->Revers eOrientation(); // 此处以倒转主要素( 左侧) 为例
ipLPtCollection->AddPointCollection(ipRPtCollection);
// 将副图幅中的线的点加入到主图幅
ipLFeature->putref_Shape(ipLGeometry); // 更新左边图形
ipLFeature->Store(); // 保存接边后的图形
ipRFeature->Delete(); // 删除右边图幅的接边图形
4 应用实例
为检验上述方法的有效性, 利用两幅相邻的 1: 50000DLG
数据, 提取其中的道路图层, 进行接边测试。匹配属性为道路名
字段。图 5 为图幅接边处理的程序界面。
图 5 程序界面
测试结果如图 6 所示。对左右两图幅中道路线状要素所存
在的断点, 程序可以比较有效地检测到并接合。
6· ·
Computer Era No. 2 2008
像素级融合并行算法的模型研究
胡 冰 1, 刘衡竹 2, 王攀峰 2, 周海芳 2
(1. 军事经济学院采办系, 湖北 武汉 430035; 2. 国防科技大学计算机学院)
摘 要: 通过对多种遥感图像像素级融合算法的深入研究, 实现了三种具有代表性的像素级融合并 行 算 法, 在 分 析 了 这
些并行算法的数据划分方式、负载平衡及算法设计流程的基础上, 总结性地提出了一种通用的像素级融合并行算法模型。
该模型对遥感图像融合的并行算法研究提供了有益的指导和借鉴。
关键词: 像素级融合; 并行算法; 模型; 遥感图像
0 引言
目 前 , 遥 感 图 像 融 合 算 法 的 研 究 日 新 月 异 , 已 有 多 种 遥 感
图像融合算法出现。根据遥感图像所含信息的抽象程度以及融
合应用层次的不同, 遥感图像融合可划分为像素级( Pixel- Level
Fusion) 、特 征 级(Feature- Level Fusion)、决 策 级(Decision- Level
Fusion)三个层次[1]。像素级融合的优点是保留了尽可能多的原
始 信 息 , 提 供 其 他 融 合 层 次 所 不 能 提 供 的 细 微 信 息 , 具 有 最 高
精 度, 这 一 点 对 于 提 高 分 辨 率 非 常 重 要 ; 但 由 于 处 理 的 信 息 量
大, 实时性差, 所需的代价较高。
随 着 传 感 器 、遥 感 平 台 等 相 关 技 术 的 发 展 , 通 过 遥 感 手 段
获得的数据量也随之急剧增长。传统的像素级融合方法面临急
剧膨胀的海量数据, 运算规模迅速扩大到数千亿乃 至 数 万 亿 次
浮点运算; 另外, 许多遥 感应用领域对实时性的要求日益 迫 切 。
显然, 传统的单处理器串行像素级融合算法已 经无法 满 足 这 样
的运算需求。然而随着并行化技术的发展, 采用并 行 处 理 技 术
是 加 快 遥 感 图 像 处 理 的 一 个 重 要 手 段 , 因 此 , 研 究 高 效 实 用 的
像素级融合并行算法具有较高的理论与实用价值。
目前, 针对一些特定的像素级融合并行算法已经有了一些研
究成果[2,3]。本文基于这些研 究成果, 对 像 素 级 融 合 算 法 中 具 有
代 表 性的三种算法———IHS、PCA( 主成分分析) 、DWT( 离散小 波
变 换) 的 并 行 算 法 进 行 分 析 , 在 此 基 础 上 归 纳 总 结 出 像 素 级 融
合并行算法的一些共性特征, 提出了一个通用的像素级融合并行
算法模型, 为此类算法的并行算法研究提供了一条解决途径。
1 串行像素级融合算法
近 20 年来, 对于遥感图像融合的串行算法, 特 别 是 针 对 像
素级融合方法的研究已经取得 了一些重要的研究成 果, 形 成 了
一些成熟的融合方法[4], 如: 基于彩色变换的方法( IHS, YIQ等) ,
基 于 统 计 的 融 合 方 法( PCA, PCS 等) , 基 于 多 分 辨 率 分 析 的 方
法( 金 字 塔 分 解 法 , HPF, 小 波 融 合 法) 和 基 于 数 字 加 权 的 方 法
( SVR, 加权平均法) 等。其 中 最 为 典 型 的 几 种 算 法 的 基 本 原 理
为: IHS 融 合 是 基 于 图 像 处 理 技 术 中 常 见 的 两 种 颜 色 表 示 模 型
( RGB 和 IHS) 之 间 的 相 互 转 换 [4]; PCA 融 合 是 采 用 数 学 上 称 为
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
本文提出的算法还存在着如下缺陷:
⑴ 对复杂线状要素缺乏判断的能力。如 接 边 要 素 中 存 在
环( 即主要素和副要素构成环) , 则算法中主要素的 末 结 点 和 副
要素首结点的拼接在某 些情况下会对接边造成干扰, 引 起 一 些
错误, 而这种情况在等高线接边的工作中并不罕见。
⑵ 暂时只有两相邻图幅的接边能力, 多图幅 的 接 边, 需 要
逐一地进行。对于多图幅接边的问题, 可参见文献[6]。
另 外 , 面 状 要 素 或 混 合 要 素 的 接 边 方 法 , 也 是 需 要 做 进 一
步的探讨的。
参考文献:
[1] 邓小军,郑小梅.基于 AO 的分幅等高线智能化接边处理方法的研究
[J].四川测绘,2004.27(2):77~81
[2] 刘仁义,刘南.ArcGIS 开发宝典[M].科学出版社,2006.
[3] 蒋波涛.ArcObjects 开发基础与技巧[M].武汉大学出版社,2006.
[4] MSDN Library Visual Studio 6.0[CP/ DK].Microsoft Corp,1998.
[5] Exploring Arcobjcts[CP/ DK].ESRI Corp,2002.
[6] 赵江洪.地理信息系统中多图幅接边的设计与实现[J].测绘科学,
2004.29(1):44~46
▲C E
图 6 接边前后的局部变化
5 结束语
实验证明, 本文所提出的方法对于一般的线 状 要 素 接 边 工
作是有效的。它克服了一些接边程序中仅仅考虑几何特征而没
有 充 分 利 用 属 性 信 息 的 缺 陷 , 提 高 了 接 边 的 精 确 度 ; 利 用
ArcGIS Engine 提供的空间分析功能, 降低了程序开发的难度。
本方法是切实可行的。