GIS算法基础重点.docx
- 文档编号:24249063
- 上传时间:2023-05-25
- 格式:DOCX
- 页数:14
- 大小:52.20KB
GIS算法基础重点.docx
《GIS算法基础重点.docx》由会员分享,可在线阅读,更多相关《GIS算法基础重点.docx(14页珍藏版)》请在冰豆网上搜索。
GIS算法基础重点
一、算法的时间复杂性T(n):
利用某算法处理一个问题规模为n的输入所需要的时间。
空间:
为了解求问题的实例而执行的计算步骤所需要额内存空间(或字)数目.不包括用来存储输入的空间。
算法空间复杂性不可能超过运行时间的复杂性。
元运算:
对于任何计算步骤.不管输入数据或执行的算法.它的代价总是以一个时间常量为上界.则称该计算步骤为元运算。
基于比较的排序问题的最优算法:
我们通常把在O(nlgn)时间内用元素比较法排序的任何算法.称为基于比较的排序问题的最优算法。
一般来说.如果可以证明任何一个求解问题A的算法必定是Ω(f(n)),那么我们把在O(f(n))时间内求解任何问题A的任何算法都称为问题A的最优算法。
算法设计原则:
正确性确定性清晰性。
算法的要素:
1.待解问题的描述2.算法设计的任务3.算法分析。
二、关系运算:
指的是用于检验两个几何对象的特定的拓扑空间关系的逻辑方法。
两步确定两条线段是否相交:
1.快速排斥实验(矩形不相交)2.跨立实验(判断线段P1P2是否和Q1Q2跨立依据是:
(P1-Q1)*(Q2-Q1)*(Q2-Q1)*(P2-Q1)>=0.)判断点是否在多边形内常用算法:
1.射线法(又叫奇偶测试法)2.转角法。
线段在多边形内的一个重要条件是线段的两个端点都在多边形内.第二个必要条件是线段和多边形的所有边都不内交。
线段在多边形内判断步骤:
1.先求出所有和线段相交的多边形的顶点2.然后按照X-Y坐标排序(X坐标小的排在前面.对于X坐标相同的点.Y坐标小的排在前面.这种排序准则也是为了保证水平和垂直情况的判断正确).这样相邻的两个点就是在线段上相邻的两交点.如果任意相邻两点的中点也在多边形内.则该线段一定在多边形内。
计算线段或直线与线段的交点:
设一条线段为L0=P1P2.另一条线段或直线为L1=Q1Q2.要计算的就是L0和L1的交点:
第一步:
首先判断L0和L1是否相交2.若L1不平行与Y轴.则交点横坐标为P1的横坐标.代入到L1的直线方程中可以计算出交点纵坐标。
第三步:
若L1平行于y轴.则第四步:
若L0平行于x轴.有2种情况.第五步:
若L1平行于x轴.则.第六步:
若L1和L0斜率均存在.则。
中心点的计算:
多边形的中心点(又叫质心或重心)可以通过将多边形分割成为三角形.求取三角形的中心点.然后将三角形的中心点加权求和取得。
三点画圆:
算法关键是求取圆心和园半径:
第一步:
求取圆心.第二步:
求取半径R.R=((xa-xp)^2+(ya-yp)^2)^1/2。
p是圆心。
四、矢量线栅格化三种方法:
八方向栅格化、全路径栅格化、恒密度栅格化。
矢量面格式向栅格面格式转换又称为多边形填充.就是在矢量表示的多边形边界内部的所有栅格点上赋以相应的多边形编码.从而形成栅格数据阵列。
方法有:
内部点扩散算法(种子.八方向扩散)、射线算法和扫描算法、边界代数算法(积分、拓扑)。
栅格数据矢量化有4个基本步骤:
1.边界提取2.边界线追踪3.拓扑关系生成4.去除多余点及曲线圆滑。
细化算法:
栅格数据需要细化.以提取其中轴线.因为:
1.中轴线是栅格数据曲线的标准化存储形式2.实现细化是将栅格曲线矢量化的前提3.在有些算法中可以提高计算精度。
细化算法可分两大类:
第一大类是基于距离变换.首先得到骨架像元.然后跟踪距离变换图中的“山脊线”.并将其作为中轴线;第二类是基于在不破坏栅格拓扑连通性的前提下.按对称的原则删除影像边缘的栅格点。
四例:
1.用距离变换法搜寻中轴线(减细)2.最大数值计算法(V值4、1)3.经典的细化算法4.边缘跟踪剥皮法.多边形栅格转矢量的双边界搜索算法:
基本思想:
通过边界提取.将左右多边形信息保存在边界点上.每条边界弧段由两个并行的边界链组成.分别记录该边界弧段的左右多边形编号。
具体步骤:
1.边界点和结点提取2.边界线搜索与左右多边形信息记录3.多余点去除。
多边形栅格转矢量的单边界搜索算法:
单边界搜索算法时通过对传统的区域跟踪算法进行改进而形成的.传统区域跟踪算法中.对区域的描述由两部分组成:
区域外轮廓和内部孔洞。
单边界搜索算法流程:
1.跟踪、搜索第一层所有的区域并记录外轮廓和内部孔洞信息2.根据跟踪到的孔洞信息找出下一层中未跟踪过的区域的外轮廓跟踪起始点(即找出一个新区域)3.跟踪找到的新区域并记录其外轮廓和内部孔洞信息4.重复23步.直到该层所有区域都已被跟踪完毕5重复2到3步.直到整幅图像内所有区域都已被跟踪完毕。
五、道格拉斯-普克法优点是具有最小的线性位移.压缩效果占优.缺点是需对整条曲线完成数字化后方能进行压缩.且计算工作量较大。
光栏法原理:
它按照预先定义的一个扇形(“喇叭口”).根据曲线上各节点是在扇形外还是在扇形内.决定节点是保留还是舍去。
其优点是光栏法不仅算法严密.能按给定阈值保留曲线特征点.并按时处理.运算量小.占用内存少。
链式编码:
多边形边界可定义为:
由某一原点开始并按某些基本方向确定的单位矢量链。
(东0东南1东北7)游程长度编码:
游程指相邻同值网格的数量.游程长度编码结构是逐行将相邻同值的网格合并.并记录合并后网格的值及合并网格的长度.其目的是压缩栅格数据量.消除数据间的冗余。
块式编码:
块式编码是将游程长度编码扩大到二维的情况.把多边形范围划分成由像元组成的正方形.然后对各个正方形进行编码。
差分映射法:
就是选择某一参照值对有关栅格的属性值进行求差运算.根据差值得到一个新的栅格数据层。
(分行选取和全区选取)拓扑关系左转算法描述如下:
1.顺序取一个结点作为起始结点.取完为止;取过该结点的方位角最小的未使用过的或仅使用一次.且使用过的方向与本次相反的弧段作为起始弧段。
2.取这条弧段的另一个结点.找这个结点关联的弧段集合中的本条弧段的下一条弧段.如果本条弧段是最后一条弧段.则取弧段集合的第一条弧段.作为下一条弧段。
3.判断是否回到起点.如果是.则形成了一个多边形.记录下它.并且根据弧段的方向.设置组成该多边形的左右多边形信息;否则转2。
4.取起始点上开始的.刚才所形成多边形的最后一条边作为新的起始弧段.转2;若这条弧段已经使用过两次.即形成了两个多边形.转1。
岛的判断问题算法如下:
1.计算所有多边形的面积2.分别对面积为正的多边形和面积为负的多边形排序.分别形成正多边形和负多边形集合。
3.如果负多边形集合的个数为1.结束程序;否则.从面积为正的多边形集合中.顺序取出一个多边形.如果正多边形已经都被访问过.则程序结束。
4.依次从负多边形集合中取出负多边形.判断当前取出的正多边形是否包含该多边形.如果包含.就将该负多边形加入当前取出的正多边形中.形成复杂多边形.设置负多边形的组成弧段的拓扑信息.并从负多边形集合中删除该负多边形。
当所有负多边形都被访问一遍后转3.六、直线方程的所有形式:
P(t)=P0+tVl=P0+t(P1-P0)=(1-t)P0+tP1。
(y0-y1)x+(x1-x0)y+(x0y1-x1y0)=0。
P(t)=(x0+tcosΘ,y0+tsinΘ)点到直线距离计算公式:
d(P,L)=((y0-y1)x+(x1-x0)y+(x0y1-x1y0))/((x1-x0)^2+(y1-y0)^2)^1/2.三角形面积计算公式:
A=1/2*bh,A=1/2*absinΘ.A=(s(s-a)(s-b)(s-c))1/2,s=1/2*(a+b+c),A=1/4*(4a2b2-(a2+b2-c2)2)1/2.A=b2/2(cotΘ+cotβ)。
A=1/2|v*w|=1/2|(v1-v0)(v2-v0)|,2A=(x1-x0)(y2-y0)-(x2-x0)(y1-y0)。
四边形面积计算公式:
A=((s-a)(s-b)(s-c)(s-d))1/2.A(v0v1v2v3)=|(v1-v0)*(v3-v0)|.A=(x1-x0)(y3-y0)-(x3-x0)(y1-y0).A=1/2|(v2-v0)*(v3-v1)|.2A=(x2-x0)(y3-y1)-(x3-x1)(y2-y0)。
任意二维平面多边形面积计算方法与公式:
A多边形=ΣA(Δi),Δi=ΔPViVi+1.注意:
对于一个逆时针多边形.当点P在边ViVi+1的左边.则Δi的面积是正的;相反.当点P在边ViVi+1的右边.并且位于多边形外部.则Δi的面积是负的。
如果是一个顺时针多边形.则符号相反.并且内部的三角形面积为负的。
七、空间索引:
就是指依据空间对象的位置和形状或空间对象之间的某种空间关系.按一定的顺序排列的一种数据结构.其中包括空间对象的概要信息。
B树的定义:
一个m阶的B树.或为空树.或是为满足下列特征的m叉树。
(1)树中每个结点至多有m棵子树;
(2)若根结点不是叶子结点.则至少有两颗子树;(3)除根之外的所有非终端结点至少有[m/2]棵子树;(4)所有的非叶结点中包含下列信息数据:
(A0, (5)所有的叶子结点都出现在同一层次上.并且不带信息(可以看作是外部结点查询失败的结点.实际上这些结点不存在.指向这些结点的指针为空)。 插入算法: 设将元素 (1)首先在树中查找K.若查找到.算法结束(假定B树中不容许有相同的关键字存在)。 若没有查到.设最后查到的结点为N。 将关键字K插入结点N中.若结点N的元素的个数小于等于m-1.将A指向叶结点.插入结束.若结点N的元素关键字的个数为m.则需分裂结点N。 (2)设插入关键字K后的结点情况如下: (A0, 再将元素 N的父结点还可能需要分裂.最坏的情况是分裂一直延续到根结点.最后产生新的根结点.树高增加1。 当插入操作引起了s个结点的分裂时.磁盘访问的次数为h(读取搜索路径上的结点)+2s(回写两个分裂出的新结点)+1(回写新的根结点或插入后没有导致分裂的结点)。 因此.所需要的磁盘访问次数是h+2s+1.最多可达3h+1。 R树的定义: 设M为结点中单元的最大数目.m(1<=m<=M/2)为非根结点中单元个数的下限。 (1)每个叶子结点包含的单元个数介于m与M之间.除非它同时是根结点。 (2)每个叶子结点中的单元(I,SpatialObjectID)中.I是包含该n维空间对象的MBR.SpatialObjectID是该空间对象的ID。 (3)每个非叶子结点的子结点树介于m到M之间.除非它同时是跟结点。 (4)每个非叶子的结点的单元(I.PointerToChild)中.I是包含子结点的MBR.PointerToChild是指向子结点的指针。 通过该指针能访问到子结点。 (5)根结点最少有两个字结点.除非它同时是叶子的结点。 (6)所有的叶子结点都处于树的同一层上。 插入算法: 新空间对象的插入操作: (1)为新的空间对象.寻找一个合适的叶子结点 (2)将新的空间对象记录到叶子的结点中.(3)调整树的结构(4)生成新的根结点。 选择合适的叶子结点: (1)初始化 (2)判断是否为叶子结点(3)选择合适的子树。 调整树的结构: (1)初始化 (2)判断是否是根结点(3)调整父结点相应单元的I(4)根据需要进一步分裂父结点。 常规四叉树缺点: 所占的内外存空间比较大.原因在于它不仅要记录每个结点值.还需记录结点的一个前趋结点及四个后继结点.以反映结点之间的联系。 对栅格数据进行运算时.还要作遍历树结点的运算。 这样就增加了操作的复杂性。 线性四叉树的基本思想和优缺点: 线性四叉树不像常规四叉树那样存储树中各个结点及其相互间关系.而是通过编码四叉树的叶结点来表示数据块的层次和空间关系。 叶结点都具有一个反映位置的关键字.亦称位置码.表示它所处位置。 实质是把原来大小相等的栅格集合转变成大小不等的正方形集合.并对不同尺寸和位置的正方形集合赋予一个位置码。 缺点: 位置码的位数决定分割的层数.图形越复杂.分割的层数越多.相应的位置码得位数亦越多.这种自上而下的分割方法需要大量重复运算.效率比较低。 线性四又树的编码方法: 基于深度和层次码的线性四叉树编码;基于四进制的线性四叉树编码;四叉树的十进制编码。 的概念: 指的是完成一个任务所需要的具体步骤和方法。 常用的算法有穷举搜索法.递归法.回溯法.贪心法.分治法。 算法设计的原则: 正确性.确定性.清晰性。 时间复杂性: 去除了表示算法运行时间的函数中的低阶项和首项系数.就称度量算法的渐进运行时间。 空间复杂性: 为了求解问题实例而执行的计算步骤所需要的内存空间数目.它不包括分配用来存储输入的空间.元运算: 对于任何计算步骤.他的代价是以一个时间常量为上界.而不管输入数据或执行的算法.这个计算步骤叫做元运算。 (算术.比较.逻辑.赋值)最优算法: 如果可以证明任何一个求解的问题A的算法必定是Ω(f(n)).那么我们把在o(f(n))时间内求解问题A的任何算法都称为问题A的最优算法。 关系运算是指用于检验两个几何对象的特定的拓扑空间关系的逻辑方法。 判断两直线相交: 1)快速排斥实验.设以线段p1p2.Q1Q2为对角线的矩形不想交.则两线段不相交。 2)跨立实验如果两个线段相交.则一定跨立对方运用矢量乘法乘积小于零则位于两边。 判断点是不是在多边形内1)射线法.一条射线从点P开始.穿过多边形的边界的次数成为交点数目.当交点数目为偶数时.点在多边形外部.不然在内部。 2)转角发.多边形环绕点P的次数成为环绕数.环绕数为零.在多边形外部.不然在内部。 判断线段是不是在多边形内: 线段在多边形内的必要条件是两个端点都在多边形内.线段和多边形的所有边都不内交。 如果多边形的一个顶点和线段相交.还必须判断两个相邻交点之间的线段是不是包含与多边形内部。 计算线段或直线与线段的交点: 第一步判断两条线是不是相交.如果不像交.没有交点。 第二到第五步分别判断平行与X,Y轴的情况。 第六步两条线斜率都存在并且不为零。 中心点的计算: 重心(分割三角形.加权求的.权重为三角形面积站的多边形面积比例)三点画圆: 求圆心P.求取圆的半径。 栅格数据向矢量格式的转换步骤: 1)边界提取.采用高通滤波将栅格图像二值化或者以特殊值标识边界点。 2)边界线追踪.对每个边界弧段由一个结点向另一个结点搜索.通常对每个已知边界点需沿除了进入方向的其他七个方向搜索下一个边界.直到连成边界弧段。 3)拓扑关系生成.对于矢量表示得边界弧段数据.判断其与原图上各多边形的空间关系.以形成完整的拓扑结构并建立与属性数据的联系。 4)去除多余点及曲线圆滑.由于搜索是逐个栅格进行的.必须去除由此造成的多余点记录.以减少数据繁杂.搜索结果.曲线由于栅格精度的限制可能不够圆滑.需要采用一定的插补算法进行光滑处理.常用的算法有线性迭代法.分段三次多项式插值法.正轴抛物线平均加权法。 斜轴抛物线平均加权法.样条函数插值法。 多边形栅格转矢量的双边界搜索算法: 思想是通过边界提取.将左右多边形信息保存在边界点上.每条边界弧段甴两个并行的边界链组成.分别记录该边界弧段的左右多边形编号。 边界线搜索采用2*2的栅格窗口.在每个窗口内4个栅格数据的模式.可以唯一地确定下一个窗口的搜索方向和该弧段的拓扑关系.极大的加快了搜索速度.拓扑关系也很容易建立.步骤 (1)边界点和结点提取2)边界线搜索与左右多边形信息记录3)多余点去除。 单边界搜索算法: 对区域的描述由两部分组成.区域外轮廓和内部孔洞.确定外轮廓跟踪起始点.对区域的外轮廓进行跟踪和记录.对区域内部的所有孔洞进行扫描跟踪和记录。 将图像中的所有区域按包含关系分为若干层.每一层至少包含一个区域对象.流程: 1搜索跟踪第一层所有的区域并记录外轮廓和内部孔洞信息;2根据跟踪到的空孔洞信息找出下一层中未跟踪过的区域的外轮廓跟踪起始点;3跟踪找到的新区域并记录其外轮廓和内部孔洞信息4重复2.3步直到该层所有区域都已被跟踪完毕5重复2-4步知道整幅图像内所有区域都已被跟踪完毕。 拓扑关系生成过程: 1弧段处理.使整幅图形中的所有弧段.除在端点处相交外没有其他交点.即没有相交或自相交的弧段2结点匹配.建立结点弧段关系3建立多边形.以左转算法或右转算法跟踪.生成多边形.建立多边形和弧段的拓扑关系4建立多边形与多边形的拓扑关系.调整弧段的左右多边形标号.多边形内部标识号的自动生成。 空间索引: 是指依据空间对象的位置和形状或空间对象之间的目中空间关系.按一定的顺序排列的一种数据结构.其中包括空间对象的概要信息。 B树定义: 一个M阶的B树1)树中每个结点至多有M棵子树2)若根结点不是叶子节点。 至少有两棵子树3)除根之外的所有非终端节点至少有M/2(取整)棵子树4)所有的非叶结点中包含(A0. R树定义: 1)每个叶子节点包含的单元个数介于m和M之间.除非它同时是根节点。 2)每个叶子结点中的单元中.I是包含该n维空间对象的MBR,ID。 3)每个叶子节点的子节点数介于m和M之间.除非它是根节点。 4)每个非叶子节点的单元中.I是包含子节点的MBR.POINTER是指向子节点的指针.通过该指针能访问到子结点5)根节点最少有两个子结点.除非它同时是叶子结点6)所有的叶子节点都处于树的同一层上。 算法的设计原则是正确性、确定性、清晰性。 算法的复杂度包括算法的时间复杂度、算法的空间复杂度。 Egenhofer(1993)构造出一个由边界、内部、外部的点集组成的9—交空间关系模型(9IM)。 折线段的拐向判断方法可以直接由矢量叉积的性质推出。 对于有公共端点的线段P0P1和P1P2.通过计算(P2-P0)×(P1-P0)的符号便可以确定折线段的拐向: 若(P2-P0)×(P1-P0)>0,则P0P1在P1点拐向右侧后得到P1P2;若(P2-P0)×(P1-P0)<0,则P0P1在P1点拐向左侧后得到P1P2;若(P2-P0)×(P1-P0)=0,则P0、P1、P2三点共线。 在空间查询中.最常用的两种查询是按属性信息的要求来查询定位空间位置 和根据对象的空间位置查询有关的属性信息.。 实现一种地图投影点的坐标变换为另一种地图投影点的坐标.就是要 找出关系式.其方法有解析变换法、数值解析 变换法和数值变化法。 设面状物体的轮廓边界由一个点的序列P1(x1,y1),P2(x2,y2),…. Pn(xn,yn)表示.其面积为。 轴线或边界上的相邻三点Pi-1、Pi、Pi+1.用右手螺旋法则判断轴线(边界)转折点的凸凹性.若拇指向下.则Pi点左侧为凸.右侧为凹。 在下面选项中.不属于数据挖掘步骤的是(B)。 A数据变换B数据分类C数据清理D知识表示 有六种多项式时间算法最为常见.其关系为(D)。 AO (1) BO (1) CO (1) DO (1) 我国现在采用的1980国家大地坐标系应用的是哪种地球椭球体参数(B)。 A克拉索夫斯基椭球B1975国际椭球 CWGS-84系椭球D1980国际椭球 磁盘访问次数是影响空间索引性能的关键指标.下面哪种空间索引方法是比较优秀的空间索引方法。 (A) ACELL树BR树CB+树DR+树 (A)反映城市的带状延伸程度.带状延伸越明显则延伸率越大.反映城市的离散程度越大。 A伸延率B紧凑度C紧凑度指数D放射状指数 在矢量缓冲区的实现算法中对于双线问题最简单的方法是(C)。 A凸角圆弧法B叠置算法C角平分线法D圆弧拟合法 下图按照前序遍历的方法写出结果。 (A) Aa+b*c-d-e/f B-+a*b-cd/ef Cabcd-*+ef/- D没有正确答案 在下面选项中.不属于数据挖掘算法的是(B)。 A聚类分析B叠置分析C主成分分析D层次分析法 下面关于点缓冲区边界生成算法的叙述哪一条正确? (A) A等分的圆心角越小.步长越小.误差越小; B等分的圆心角越大.步长越小.误差越小; C等分的圆心角越大.步长越小.误差越大; D等分的圆心角越小.步长越大.误差越小。 在下面选项中.不属于B-树的性质的是(D)。 A多叉树B查找树C平衡树D二叉树 无向图的邻接矩阵是不对称的。 (×) 在多边形的方向判断中.多边形边界顺时针方向称为负方向。 (×) 同样的一个算法可以用几种不同的形式来描述.也可能存在几种解决相同问题的算法。 () 判断圆在矩形中的充要条件是: 圆心在矩形中且圆的半径小于等于圆心到矩四边的距离的最小值。 () 网络数据结构的基本组成部分和属性是链和结点。 () 所有元素存放在一片连续的存贮单元中.逻辑上相邻的元素存放到计算机内存仍然相邻这种存储方式是链接存储方式。 (×) 紧凑度是反映城市的紧凑程度.其中圆形区域被认为最紧凑.紧凑度为1。 其它形状的区域.其离散程度越小则紧凑度越低。 (×) 缓冲区实现算法有矢量方法和栅格方法两种。 () 对于块式编码来说.图斑越碎.压缩比越高。 (×) 矢量数据的压缩往往是不可逆的.数据压缩后数据量变小了.但数据的精度不变。 (×) 维述扩展的9交集模型关系非常复杂,通过对大量的空间关系进行归纳和分类,得出5种基本的空间关系.这5种关系定义为空间关系的最小集,他们具有哪些特征? (1)相互之间不能进行转化; (2)能覆盖所有的空间关系模式;(3)能应用于同维与不同维的几何目标;(4)每一种关系对应于唯一的DE-9IM矩阵; (5)任何其它的DE-9IM关系可以通过用这5种基本关系进行表达。 简述Dijkstra算法的步骤。 (1)引进一个辅助向量D.它的每个分量D[i]表示当前所找到的从起点vm到每个终点vi的最短路径的长度。 假设用带权的邻接矩阵arcs来表示带权有向图.arcs[i][j]表示弧 若 那么D[i]的初值为: D[i]=arcs[m][i]vi∈V 此外.将已找到的从vm出发的最短路径的终点的集合记为S.它的初始状态为空集。 (2)选择vj使得D[j]=Min{D[i]|vi∈V-S} Vj就是当前求得的一条从vm出发的最短路径的终点。 其中j为这条最短路径的终点.将其加入到终点集合S.令S=S∪{j} (3)修改辅助向量D.即修改从vm出发到集合V-S上任一顶点vk可达的最短路径长度。 显然.若D[j]+arcs[j][k] 因此.如果D[j]+arcs[j][k] D[k]=D[j]+arcs[j][k] (4)重复操作第二步、第三步共n-1次。 由此求得从v到图上其余各顶点的最短路径是依路径长度递增的序列。 在动态缓冲区生成算法中主要
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- GIS 算法 基础 重点
![提示](https://static.bdocx.com/images/bang_tan.gif)