多边形叠置分析算法研究

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
!"
・ 学术探讨 ・
!!!!" !"
!!!!"
摘 要 关键词
多边形叠置分析算法研究
薛 胜 潘 懋 王 勇 ( 北京大学地球与空间科学学院, 北京 %""?@%)
;AB9<C: DE=FGH=5IJG<59$47B
在二维 &’( 系统中经常需要对图层中的多边形进行叠置分析,为了有效地分析不同系统提供的多边形图层数
的多边形拓扑关系自动生成算法 , 由于该算法现在已经研究 得很成熟, 故论文只做简单介绍。各种这类算法的优化特点各 有不同, 但核心的步骤都是如下几步: ( 弧段结点匹配, 消除 N) 同一结点由于被多次采样而对应不同的坐标值的问题。( 同 !) 一结点上弧 O弧相邻关系的建立,一般都是根据方位角排序各 个相邻弧段 %P’。 ( 根据前两个步骤产生的信息搜索各个简单多 #) 边形。( 进行多边形包含关系判断, 从而产生复杂多边形 %Q’。 &) 当以上多边形拓扑关系自动生成算法被用于叠置分析时, 只需将参与叠置分析的两个图层中的弧段链表取出来, 分别设 为 JN 和 J! 。 用弧段链表 JN 中每一条弧段与弧段链表 J! 中的 每一条弧段做相交判断, 如果相交, 则将相交弧段在交点处断 开( 优化的相交算法将在下面描述) 。 经过上述弧段相交处理后可以直接运用多边形拓扑生成 算法, 只是参与多边形叠置分析的两个图层都是经过弧段结点 匹配的, 所以可以跳过步骤 N , 直接进行第 ! 、 #、 & 步。对于新生 成的每个多边形, 将组成它的所有弧段的指向多边形内部一侧 的属性值叠加即可得到该多边形的属性值。 下面重点介绍简单数据结构下的多边形叠置分析算法。
—简单数据结构和拓扑数据结构, 以及分别适用于这 据, 论文研究了地理信息系统中表示多边形图层的两种数据结构—— 两种情况的多边形叠置算法。拓扑数据结构下的算法现在已经很成熟, 论文重点介绍简单数据结构情况下的算法。
&’(
多边形
叠置分析
线段相交 文献标识码 2 中图分类号 +!"?
文章编号 %""!A?##%A( !""# ) "!A""K@A"L
) ; ))-2((32,40 5 <.03-.=)-2((32,40 ( ; ; 得到当前处 理 结 点 的 前 一个结点 ) ; ))-2((32,40 5 <.0>.?0)-2((32,40 ( ; ; 得到当前处理结点的后 一个结点
&
简单数据结构下的多边形叠置分析算法
由于在简单数据结构里各个多边形独立存储, 它们之间不
共享弧段或结点, 故两个多边形图层的叠置分析可通过将第一 个图层里的每一个多边形与第二个图层里的每一个多边形做 叠置分析而完成,这时问题的关键转化为两多边形的叠置分 析。下面详细描述两多边形叠置分析的算法。
&$N
多边形 ()*++ ,2.)>H.C1 图N
,<==*> 67*=<=(+; ; ; 构成该多边形的所有弧段 4: 的数组
……
如图 N 所示,这两条线段实际上是不需要做相交计算的。 显然两条线段相交的必要条件是左边线段 % N 的右端点的横坐 标一定要大于右边弧段左端点的横坐标, 因此在考虑线段相交 时, 只对有可能相交的线段做相交计算。故可采取如下算法: 假设两个多边形共有 & 条弧段,将这 & 条弧段的 !& 个端 想象有一条垂 点按照 ’ 坐标从小到大排序存放在一个数组里。 也即从小到大遍历 直于 ’ 轴的直线自左向右扫过所有的线段, 端点数组里的每一个端点。 用 数 组 ( ), *) 分 别 表 示 第 一 个 多 边 形 ( 和 第 二 个 多 边 形 当扫描线 * 中可能与另外一个多边形弧段相交的弧段的集合, 的左端点时 扫描到一条弧段( 不妨设为多边 形 ( 的 一 条 弧 段 ) ( 如 图 !) , 这时多边形 * 的弧段有可能和该弧段相交, 将该弧 当扫描线扫描到一条弧段的右端点时( 如 段放置到集合 ( ) 里; , 这时它只可能和保存在集合 *) 中的弧段相交, 则将该弧 图 #) 然后把它从集合 () 中 段和集合 *) 中每一条弧段做相交处理 , 删除, 因为它不可能和后继的弧段相交。
; ; 其他属性
?
整 个 图 层 主 要 维 护 结 点 表 67-./0JB+9, 弧 段 表 67<=L 多边形表 672.)>H.CJB+9。这三张表通过各种引用包含了 (JB+9, 图层中的点、 线、 多边形的各种拓扑关系。
#$#
算法描述
根据这种结构的特点, 多边形叠置分析可以借用比较成熟
%M’
%
引言
空间查询是 &’( 的最基本最常用的功能, 也是它与其它数
边形图层 )#*。 第一种是拓扑数据结构, 该结构的基本元素是“ 弧段” , 弧 段的两个端点是结点, 中间有任意多个中间节点, 而多边形则 是由一系列首尾相连的弧段组成的, 相邻的多边形共享公共弧 段, 整个系统维护一张结点表, 一张弧段表和一张多边形表。 这 是由美国图形与空 间 分 析 实 验 室 种结构又称 +,-./01 结构, 研制出来的, 主要以 234’567 为 代 表 的 一 些 &’( 产 品 采 用 了 这 种结构。 而 以 89:’567 和 ;(0’ 的 234/<=> 为 代 表 的 一 些 商 用 地 理信息系统软件则采用简单数据结构。 在这种数据结构里地理 实体都被抽象为点、 线、 面三种基本类型, 每个空间实体对象都 维护自己的所有属性,每个对象都记录了它的全部空间信息, 每个对象都是自包含的。 拓扑数据结构和简单数据结构各有优缺点。 在拓扑数据结 构中不同的多边形可以公用共同的弧段, 不同的弧段可以公用 共同的结点, 从而节省存储空间, 不过同时也增加了不同对象 之间的耦合度, 使得有时改变一个对象就不得不改变其他的对 象。而简单数据结构对象之间不共享结点和弧段数据, 从而造 成重复存储, 但增强了空间数据的可维护性。
!"#"$%&’ () *’" +,-(%.*’/# () 0(,1-(23# 45"%,$1
67" 8’"2- 0$2 9$( :$2- ;(2( (4H77C 76 ;93MH 95N (:94= (4<=54=G, +=O<5I P5<Q=3G<MR, S=<T<5I %""?@%)
+<#*%$&*: ’5 M>7 N<B=5G<75 &’( , :7CRI75 C9R=3G 93= 76M=5 5==N=N M7 U= 959CRV=N$17 EG= N<66=3=5M 673B9MG 76 :7CRI75 C9R=3 N9M9 GE::C<=N UR N<66=3=5M GRGM=BG, MH<G :9:=3 N=G43<U=G M>7 N9M9 GM3E4ME3= 3=:3=G=5M<5I :7CRI75 C9R=3G MH9M 93= EG=N <5 4E33=5M :37NE4MG 76 &=7I39:HR ’5673B9M<75 (RGM=B, 95N <M 9CG7 GMEN<=G M>7 O<5NG 76 9CI73<MHBG MH9M 93= 9::C<49W UC= <5 MH7G= G<ME9M<75G 3=G:=4M<Q=CR$X7>=Q=3, MH= 9CI73<MHB 673 M7:7C7I<49C N9M9 GM3E4ME3= H9G U==5 6ECCR N=Q=C7:=N, MH<G :9:=3 =B:H9G<V=G MH= 9CI73<MHB <5 MH= 7MH=3 G<ME9M<75$ ="1>(%?#: &’( , +7CRI75 , ,Q=3C9R , ’5M=3G=4M<75 76 G=IB=5MG
字制图软件相区别的主要特征, 而多边形叠置分析是 &’( 的一 项非常重要的空间分析功能。它是将同一地区、 同一比例尺的 两组或两组以上的多边形要素的数据文件进行叠置, 根据两组 多边形边界的交点来建立具有多重属性的多边形或进行多边 形范围内的属性特征的统计分析。其中, 前者为地图内容的合 成叠置, 后者为地图内容的统计叠置。合成叠置的目的是通过 区域多重属性的模拟, 寻找和确定同时具有几种地理属性的区 域, 或者按照确定的地理指标, 对叠置后产生的具有不同属性 级的多边形进行重新分类或分级。 合成叠置的结果形成新的多 边形。统计叠置的目的是精确地计算一种要素( 例如, 土地利 用) 在另一种要素( 例如, 行政区域) 的某个区域多边形内的分 布状况和数量特征( 包括拥有的类型数、 各类型的面积及其所 占总面积的百分比等等) ,或提取某个区域范围内某种专题内 容的数据。统计叠置的结果为统计报表或列表输出。但无论是 哪种叠置, 其核心的算法都是多边形求交算法, 而对于不同的 表达多边形图层的数据模型,该算法又有不同的实现策略, 论 文研究了在不同数据模型下的多边形叠置算法的实现。
计算机工程与应用 !""#$!
K@
所谓拓扑关系, 是指对象在被拉伸、 压缩, 而不进行扭转和 折叠的情况下, 对象间继续存在的一些属性或关系, 简言之即 空间对象间的位置关系 %&’。在这种结构中存储所有平面点的坐 标, 弧段由点组成, 相邻接的弧段共享端点; 多边形由弧段的引 用组成, 相邻多边形公用弧段数据。
也即是求两组线段交点的算法, 可用在拓扑数据结构多边 形叠置分析中求交点并在交点处断开弧段的优化算法中 %!’。
&$N$N
算法思路 这个算法是计算几何的一个基本问题, 最初有人采用最原
始的办法, 即用第一个多边形里的每一条弧段和第二个多边形 ( 其中 里的每一条弧段做相交计算, 其 时 间 复 杂 度 是 !( "#$) 。然而实 ", $ 分别是第一个多边形和第二个多边形的弧段数)
PT
求两个多边形交点的算法
!""#$! 计算机工程与应用
为了以后根据这些交点信息可以方便地搜索出这两个多 边形的交多边形、 差多边形和并多边形, 而且在搜索过程中逆 向和正向搜索频繁, 故将每个多边形上的每一个环上的所有交 点存储在一个双向循环列表里面, 定义为:
%&’(( )*+&),-%&./,(0 1 ))-2((32,40 5 6789.’: ; ; ; 指向该环上交点循环列表的某结点
#$!
基本的数据结构
结点 ()*++ ,-./01
wk.baidu.com
234-5 6789:*9* ; ,<==*> 67*=<=(+; ?
弧段 ()*++ ,<=(1
; ; 该结点的平面坐标 ; ; 公用该结点的所有弧段 4: 数组
际上在多数情况下两个多边形中相交的弧段数只占所有弧段 的一小部分, 如果每一条弧段都做相交计算必然大大增加时间 复杂度 %N’。
图!
图#
&$N$!
主要数据结构 在上述步骤中将交点信息记录下来, 交点信息可用以下结
构表示:
()*++ ,,=.++2.BC91 234-5 6789 ; ).CH 67)2=02.+N ; ; ; 交点所在的第一个多边形上的弧段的起始端点号 ).CH 67)2=02.+! ; ; ; 交点所在的第二个多边形上的弧段的起始端点号 ,,=.++2.BC9 @ 678-0R9 ; ; ; 指向下一个交点的指针 ,,=.++2.BC9 @ 6782=0S ; ; ; 指向前一个交点的指针 ? ; ; 交点坐标
@ 67DC/2.BC9 ; ,-./0@ 67A9*=92.BC9 , ; ; 该弧段的起始结点和终止结点的指针 ,2.BC9<==*> 6789<==*> ; ; ; 弧段的中间点 <99=BEF90 67)0G9<99= , 67=BHI9<99= ; ; ; 弧段的左右属性 ,2.)>H.C@ 67J0G92.)>H.C , @67KBHI92.)>.HC ; ; ; 公用该弧段的两个相邻多边形的指针 ?
!
多边形图层数据结构
在当前地理信息系统中, 主要通过两种数据模型来表示多
# 基于拓扑结构的多边形叠置分析算法 #$% 多边形层拓扑关系定义
基金项目: 国家自然科学基金项目( 批准号: ; 教育部科学技术重点项目( 批准号: L"""!"!L ) YY""# ) 作者简介: 薛胜, 硕士研究生, 主要研究方向: 三维空间信息系统。 潘懋, 教授、 博士生导师, 主要研究方向: 地理信息系统、 环境地质与灾 %Y@? 年生, 害地质。王勇, 博士, 主要研究方向: 三维空间信息系统。
相关文档
最新文档