欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > DOC文档下载
     

    2923.利用bufferanalysis矢量算法直接实现空间实体目标分析 【实现代码+毕业论文】 .doc

    • 资源ID:7037220       资源大小:556.26KB        全文页数:28页
    • 资源格式: DOC        下载积分:10金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要10金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    2923.利用bufferanalysis矢量算法直接实现空间实体目标分析 【实现代码+毕业论文】 .doc

    目录摘要第一章 绪论11.1 缓冲区问题的提出及意义11.2 缓冲区分析实现的常用算法31.3论文的主要内容4第二章 建立空间对象缓冲区方法52.1空间对象的数据表示52.2建立空间对象缓冲区的原理7第三章 空间对象缓冲区生成算法的实现103.1基于矢量的空间对象缓冲区生成算法原理103.2基于栅格的空间对象缓冲区生成算法17第四章 基于矢量和栅格的缓冲区算法比较21结论23参考文献24致谢25摘要 本文对空间对象的缓冲区分析算法作了说明,讨论了分别利用图形学方法和图像处理的形态学方法建立地理信息系统中空间对象的缓冲区算法,并且就两种算法的异同做出了分析。 在矢量算法中,各类地理要素根据其空间形态特征分为点、线、面三类,分别以计算机屏幕数据的点、线、面图形对象表示,进行缓冲区分析。在栅格算法中,地理空间被划分为规则的小单元(像元),空间位置由像元的行、列号表示。以膨胀法原理为基础,进行缓冲区分析。关键字:地理信息系统,缓冲区分析,矢量法,栅格法,膨胀法 ABSTRACT This paper illuminates the arithmetic of buffer analysis to spacial object. In this paper two arithmetic are discussed, one is based on the computer graphic technology , the other is based on Mathematical Morphology. Then, the similarities and differences of such two arithmetic are discussed too. In the vector arithmetic, spacial objects are divided into threekinds, point、line、polygon, which are expressed by the graphic object on the computer screen. Buffer analysis is based on such kind of data. In the grid arithmetic, spacial objects are divided into grids.The spacial position is marked by the row and arrange of grids.This arithmetic is based on the expand method of Mathematical Morphology. Keywords: Geographical information system(GIS),buffer analysis, vector method, grid method ,expand method.第一章 绪论1.1 缓冲区问题的提出及意义1.1.1缓冲区分析问题的提出地理信息系统(Geographic Information System简称GIS)是一项以计算机为基础的新兴技术,围绕着这项技术的研究、开发和应用形成了一门交叉性、边缘性的学科。从20世纪60年代出现至今,只有短短40多年的时间,但是他的发展非常迅速,已经成为多学科集成并应用于多领域的基础平台,成为地学空间信息处理的重要手段和工具。地理信息系统具有空间数据的输入、存储、管理、分析和输出等功能,地理信息系统的主要目的是为了分析空间数据,以提供空间决策支持信息,因此,空间分析是地理信息系统的主要功能,是核心,是灵魂。空间分析就是利用计算机对数字地图进行分析,从而获取和传输空间信息。由于空间分析对空间信息(特别是隐含信息)所具有的提取和传输功能,它已经成为地理信息系统区别于一般信息系统的功能特征,也成为评价一个地理信息系统功能的主要指标之一。缓冲区分析是地理信息系统最重要和最基本的空间操作功能之一。缓冲区分析是根据点、线、面实体基础,自动建立其周围一定宽度范围内的缓冲区多边形实体,从而实现空间数据在其领域得以扩展的信息分析方法。例如,公共设施(商场、邮局、银行、医院等)的服务半径,大型水库建设引起的搬迁,都是一个邻近度的问题。城市的噪音污染源所影响的一定空间范围、交通线两侧所划定的绿化带,既可分别描述为点的缓冲区与线的缓冲区带。缓冲区分析的基本思想是给定一个空间物体(的集合),确定它(们)的某邻域,邻域的大小由邻域半径R决定。因此物体Oi的缓冲区的定义如下:即对象Oi的半径为R的缓冲区是全部距Oi的距离d小于等于R的点的集合,d一般是指最小欧氏距离。 对于多个对象的集合: 其半径为R的缓冲区是单个对象的缓冲区的并,即:1.1.2 缓冲区分析问题的意义缓冲区信息处理在现实生活中有广泛的应用,可以从以下几个方面看:(1) 缓冲区分析在生态环境影响评价中的应用在特定的时空环境里,生态环境问题的产生是由于自然、人为条件下各生态因子综合作用的结果,这些生态因子在不同程度上都具有某种地理含义。地理信息系统是对具有地理含义的因子进行统计、查询、分析的有力工具。因此,利用地理信息系统的相关技术来分析、评价生态环境问题的影响就显得理所当然。目前,在整个环境领域,地理信息系统的应用得到了蓬勃的发展,空间数据的建立、属性数据的逐步完善、空间数据与属性数据的链接等为环境的评价、管理与规划提供了一个简单、便捷、明晰的运作平台.随着生态环境问题的出现以及科技的进步和人们生态环保意识的提高,越来越多的人投向生态环境的建设与整治中或尽量减少对自然生态环境的干扰.但人类对生态环境的主观改造以及人类必须进行生产活动的效果与影响总是具有隐蔽性和动态性的特点,其影响范围常常表现为一个趋势面.如何有效、直观地确定趋势面亦即影响范围的大小是生态环境影响评价面对的主要问题,地理信息系统的空间分析功能之一的缓冲区分析正是对这一趋势面加以分析的有力工具。例如,在环境治理时,常在污染的河流周围划出一定宽度的范围表示受到污染的区域;又如在飞机场,常根据健康需要在周围划出一定范围的区域作为非居住区等。(2)缓冲区分析在城市规划中的应用城市作为人口集中、规模庞大、结构复杂、不断发展的动态系统,它的发展变化不仅表现在人口的增加、经济的发展和功能的变化上,而且也表现在城市空间结构的变化上。城市空间结构的基本要素是核心、交通网络、节点以及不同土地利用模式形成的面状区域。核心的作用无庸置疑,多数城市的生长都是由核心开始的。交通网络则是城市生长的骨架,这里的交通网络不仅包含城市内部的主干街道,而且包括城市对外交通干线,它往往形成城市的发展轴。节点可以是交通网络中重要的交叉点,也可以是重要的郊区小城镇或卫星城镇,它们是城市中人流物流能量流和信息流集聚和扩散的源地。正是这些基本要素决定了整个城市的扩展。缓冲区分析又可以称为空间影响分析,是地理信息系统中定量研究距离因素影响的重要工具。因而进行基于重点区域和交通线的缓冲区分析,可以定量地描述城市用地扩展过程以及空间分布。例如:在土地评测中,要根据离开交通线或繁华区的远近,进行地价估算;特定场所的选址如大型超市、公园、疗养院要依靠诸如“靠近交通线”、“沿河流或濒临湖泊”、“包含林块和绿地”等有关缓冲区操作。(3)在地理数据结构化自动处理中的应用地理信息处理的实质是综合分析与评测,借此赋以地理实体相应重要性,为管理与规划决策提供依据和为它们的多比例显示奠定基础。然后,地图的地理信息的综合评价必须在信息结构化的基础上进行,对于简单的数字化面条数据是难以进行有效的分析和处理的。例如,河网树结构,地形线(山脊线与谷地线)的结构化(树结构的自动建立)都在递归地执行缓冲区操作。边防城镇、沿海港口和地形等信息有其独特的不言而喻的重要性,这些都是借助缓冲区操作而实现的。综上所述,缓冲区分析在现实生活中有如此广泛的应用,所以,对缓冲区算法的研究非常的有必要。1.2 缓冲区分析实现的常用算法缓冲区生成矢量算法,特别是线缓冲区的生成算法,常见的有凸角圆弧法和角平分线法。凸角圆弧法是逐个求得每个线段单独的缓冲区,然后用多边形叠质算法依次合并。算法所生成的缓冲区边界,轴线转角尖锐的转折点的平行线交点随缓冲距的增大将会迅速远离轴线,这就会出现尖角和凹陷的失真现象。角平分线法由画逐个线段的简单平行线,尖角平滑矫正和自相交处理三步构成。角平分线的缺点是难以最大限度的保证平行曲线的等宽性。1.2.1凸角圆弧法原理 在轴线首末点处,作轴线的垂线并按双线或缓冲区半宽E截出左右边线的起迄点;在轴线的其它各个转折点上,首先判断该点的凸凹特性,在凸侧用圆弧弥合,而在凹侧用与该点所关联的前后两邻边距轴线的偏移量为E的两平行线的交点来生成对应顶点(如下图)。由于在凸侧用圆弧弥合,使凸侧平行边线与轴线等宽。而在凹侧,平行边线相交在角分线上。图1.1 凸角圆弧法1.2.2角分线法原理 在轴线首末点处,作轴线的垂线并按双线或缓冲区半宽E截出左右边线的起迄点;在轴线的其它各个转折点上,用与该点所关联的前后两邻边距轴线的偏移量为E的两平行线的交点来生成两平行边线的对应顶点。如图1.2图1.2 角平分线法1.2.3栅格法原理栅格方法又叫点阵法,它将点、线、面矢量数据转化为栅格数据,进行像元加粗,然后作边缘提取;在原理上比较简单,容易实现,但受精度的限制;并且内存开销大,所能处理的数据量受到机器硬件的限制。1.3论文的主要内容本论文对建立空间对象的缓冲区的矢量算法和栅格算法进行分析,探讨了这两种建立空间对象缓冲区算法的异同和应用范围。论文结构如下:(1)空间对象缓冲区的实现(2)建立点、线、面空间对象缓冲区的矢量方法(3)建立点、线、面空间对象缓冲区的栅格方法(4)建立点、线、面空间对象缓冲区矢量、栅格方法的比较分析第二章 建立空间对象缓冲区方法2.1空间对象的数据表示2.1.1空间数据的栅格模型和矢量模型在栅格模型中,地理空间被划分为规则的小单元(像元),空间位置由像元的行、列号表示。例如:一条道路由其值为道路编码值的一系列相联的像元表示,要从数据库中删除这条道路,则必须将所有有关像元的值变成该道路领域的背景值。栅格数据模型的设计思想是将地理空间看成一个连续的整体,在这个空间中处处有定义。在本毕业设计中栅格法缓冲区分析针对的是二值化后的影像数据。其格式为*.bmp。矢量模型将地理空间看成是一个空间区域,地理要素存在其间。在矢量模型中,各类地理要素根据其空间形态特征分为点、线、面三类。点状要素用坐标点对表示其位置;线状要素用其中心轴线上的抽样点坐标串表示其位置和形状;面状要素用范围轮廓线上的抽样点坐标串表示其位置和范围。在本毕业设计中矢量法缓冲区分析对象是利用计算机屏幕数据的点、线、面图形对象。2.1.2 栅格数据BMP格式文件说明一个BMP文件大体上分成如下4个部分:BITMAPFILEHEADER(位图文件头)、BITMAPINFOHEADER(位图信息头)、Palette(调色版)、DIB Pixels(DIB图像数据)。1) 位图文件头BITMAPFILEHEADER它的结构如下: typedef struct tagBITMAPFILEHEADER WORD bfType; DWORD bfSize; WORD bfReserved1; WORD bfReserved2; DWORD bfOffBits; BITMAPFILEHEADER, FAR *LPBITMAPFILEHEADER;该结构的长度是固定的,为14个字节,各参数说明如下: ² bfType:指定文件类型,必须是0x424D,即字符串“BM”。也就是说所有的“.bmp”文件的头两个字节都是“BM”² bfSize:指定文件大小;² bfReserved1、bfReserved2:为保留字,不用考虑; ² bfOffBits:为文件头到实际的位图数据的偏移字节数,也就是前三部分长度之和。2)位图信息头BITMAPINFOHEADER其结构如下: typedef struct tagBITMAPINFOHEADER DWORD bfSize; LONG biWidth; LONG biHeight; WORD biPlanes; WORD biBitCount; DWORD biCompression; DWORD biSizeImage; LONG biXPelsPerMeter; LONG biYPersPerMeter; DWORD biClrUsed; DWORD biClrImportant; BITMAPINFOHEADER, FAR *LPBITMAPINFOHEADER;该结构的长度为40个节,各参数的意义说明如下:² biSize:指定这个结构的大小,为40个字节;² biWidth:指定图像的宽度,单位是像素;² biHeight:指定图像的高度,单位是像素;² biPlanes:必须是1;² biBitCount:指定表示颜色要用到的位数,常用的值1(黑白)8(256色)、24(真彩色);² biCompression:指定位图是否压缩,有效值为BI_RGB、BI_RLE4、BI_RLE8。其中BI_RGB为不压缩的情况。² biSizeImage;指定实际的位图数据占用的字节数。可以用下面的公式计算:需要注意的是:上述公式中的 不一定总等于biWidth,必须是4的整数倍,表示大于或等于biWidth的离4最近的整倍数。² biXPelsPerMeter:指定目标设备的水平分辨率,单位是每米的像素个数;² biYPelsPerMeter;指定目标设备的垂直分辨率,单位是每米的像素个数;² biClrUsed:指定本图像实际用到的颜色数,如果该值为0则用到的颜色数为2的biBitCount次幂;² biClrImportant:指定本图像中重要的颜色数,如果该值为零,则认为所用的颜色都是重要的。3) alette(调色板)调色板实际上是一个数组,共有biClrUsed个元素(如果该值为0,则为2的biBitCount次幂)。数组中每个元素的类型为一个RGBQUAD结构,占4个字节。结构定义如下: typedef struct tagRGBQUAD BYTE rgbBlue; BYTE rgbGreen; BYTE rgbRed; BYTE rgbReserved; RGBQUAD;注意:有些位图,比如真彩色图,没有调色板。他们的位图信息头BITMAPINFOHEADER后直接是DIB数据。4) DIB图像数据它分两种情况:对于用到调色板的位图,图像数据就是该像素颜色在调色板中的索引值;对于真彩色图,图像数据就是实际的R、G、B值。² 对于2色位图,用1位就可以表示该像素的颜色,因此一个字节可以表示8个像素;² 对于16色位图,用4位可以表示一个像素的颜色,所以1个字节可以表示2个像素;² 对于256色位图,一个字节刚好表示一个像素;² 对于真彩色图,3个字节才能表示1个像素注意:1. 每一行的字节数必须是4的整倍数,如果不是,则需要补齐; 2. 图像数据是按照从上到下、从左到右的顺序存储;我们最先读到的是图像最下面一行的左边第一个像素,然后是左边第二个像素接下来是倒数第二行左边第一个像素,左第二个像素依此类推,最后得到的是最上面一行的最后一个像素。在dibapi.h和dibapi.cpp中有处理*.bmp格式文件的常用的函数如:HDIB ReadDIBFile(CFile& file)函数的参数Cfile &file为文件名;该函数的返回值是文件中的图像数据的句柄。函数原型BOOL WINAPI SaveDIB(HDIB hDib, CFile& file)的第一个参数hDIB表示保存图像数据的内存区域的句柄,第二个参数CFile& file为保存图像的文件名。另外,还有查找位图像素的函数LPSTR WINAPI FindDIBBits(LPSTR lpbi),用于计算DIB位图图像数据的地址,返回一个指向位图图像数据起始位置的指针。2.2建立空间对象缓冲区的原理2.2.1空间对象缓冲区实现的矢量法原理(1)点目标P的缓冲区:以P为圆心,以缓冲距E为半径作圆。 RP 图2.1 点目标的矢量法缓冲区分析(2)线目标L的缓冲区:以L为轴线,以缓冲距E为平移量向两侧作平行曲(折)线。在轴线两端构造两个半圆弧,最后形成圆头(蚕形)缓冲区。 E L 图2.2 线目标的矢量法缓冲区分析(3)面目标A的缓冲区:以A的边界线LA为轴线,以缓冲距E为平移量向边界线的外侧作平行曲(折)线。ELA图2.3 面目标的矢量法缓冲区分析2.2.2空间对象缓冲区实现的栅格法原理本毕业设计是基于膨胀算法的缓冲区分析。从数学的角度看,缓冲区分析的基本思想是给定一个空间对象或集合,确定它们的领域。数学形态学是一门新兴的图像分析学科,其基本思想是:利用一个结构元素去探测一个图像,看是否能够将这个结构元素很好地填放在图像的内部,同时验证填放结构元素的方法是否有效。图学形态学中的基本运算有膨胀算法,其定义为: AB=a: (-B+a) A上式表示把结构元素B平移a后得到Ba,若Ba击中A(即Ba与A的交集不为空),记下这个a点。所有满足上述条件的a点组成的集合称做A被B膨胀的结果。图2.4中A表示的大长方形是被处理的对象,B所示的小正方形是结构元素,原点指定为B的中心。不难知道,对于任意一个在阴影部分的点a,Ba击中A,所以A被B膨胀的结果就是那个阴影部分。阴影部分包括A的所有范围,就像A膨胀了一圈似的,这就是将这种算法称为膨胀的原因。图2.4 膨胀法原理图空间对象缓冲区的膨胀生成算法原理:(1)点目标P的缓冲区:以P为点生成元,借缓冲距E规定像元加粗的结构元素,然后进行像元的膨胀。(2)线目标L的缓冲区:以L为线生成元,借缓冲距E规定像元加粗的结构元素,然后进行像元膨胀。(3)面目标A的缓冲区:以A的边界线为轴线,借助缓冲距E规定像元加粗的结构元素,并进行像膨胀。第三章 空间对象缓冲区生成算法的实现3.1基于矢量的空间对象缓冲区生成算法原理3.1.1基于矢量的空间对象缓冲区生成算法的引理和概念空间信息系统中,空间目标分为点目标、线目标、面目标,以及点、线、面目标任意组合而成的复杂目标。空间目标的缓冲区包括点目标缓冲区、线目标缓冲区、面目标缓冲区。点目标的缓冲区,是围绕该目标的半径为缓冲距的圆周所包围的区域;线目标的缓冲区,是沿线目标的两侧距离不超过缓冲距的点组成的区域;面目标的缓冲区,是沿该目标边界内侧或外侧距离不超过缓冲距的点组成的区域。为讨论方便,首先引入下面几个引理和概念:引理一 当沿着简单多边形的顶点串方向走过所有有向边时,如果多边形的顶点以逆时针方向串连起来,则我们的左侧始终在多边形的内部;反之,如果多边形的顶点以顺时针方向串连起来,则我们的右侧始终在多边形的内部。引理二 当沿着简单多边形的任一条有向边从起点走向终点时,如果我们的左侧始终在多边形的内部,则多边形的顶点以逆时针方向串连起来;反之,如果我们的右侧始终在多边形的内部,则多边形的顶点以顺时针方向串连起来。 定义一 如果多边形的顶点以逆时针方向串连起来,则称此多边形的方向为正向;如果多边形的顶点以顺时针方向串连起来,则称此多边形的方向为负向。如图3.1所示。 正多边形 负多边形图3.1 正负多边形的定义定义二 在简单多边形任意顶点前后两个矢量形成的两个角度中,位于多边形内的角度称为该顶点的内角,位于多边形外的角度称为该顶点的外角。3.1.2线状目标缓冲区的生成方法线状目标缓冲区的生成是点、线、面三种基本空间矢量要素缓冲区生成的关键和基础。在此节介绍了本次毕业设计实现线状目标缓冲区自动生成的矢量算法。线状目标缓冲区总的生成分两个阶段,即单个线状缓冲区多边形的独立生成过程和多个线状目标缓冲区多边形间的重叠合并过程。1、独立线状目标缓冲区的自动生成 在基于矢量数据格式的地理信息系统中,任何线状目标的空间形态主要是通过“折线”的方式来表示的,因此,所谓的线状目标缓冲区的生成实际上等价于“折线”缓冲区的生成问题。通过分析折线的形态特征会发现任何形状的折线都是由折线端点、折线上的线段和线段间的拐点三个基本要素所构成。显然,要分析折线缓冲区的生成算法,必需从构成折线的三要素着眼。下面分别介绍折线端点、折线上的线段和线段间的拐点的缓冲区生成算法,然后在将它们组合在一起形成任意折线等距缓冲区的自动生成算法。(1)线段缓冲区的生成DBFCAE 任意方向线段(原线段)的缓冲区线段应与原线段构成一个矩形。图3.2中CD和EF两条线段代表元线段AB前进方向(起始点到结束点)的左右两条缓冲区线段。图3.2 线段缓冲区的生成设原线段的起始点A和结束点B的坐标分别为(Xa,Ya)和(Xb,Yb),缓冲区距离为d,则线段AB的左缓冲区线段CD的端点坐标(Xc,Yc)(Xd,Yd)和右缓冲区线段EF的端点坐标(Xe,Ye)(Xf,Yf)的计算公式应分别为: (2) 折线端点缓冲区的生成理论上讲,折线端点的缓冲区应该是一个半圆弧。其原心在折线的端点上,连接半圆弧两个端点的直径应垂直于折线的端点线段,如图3.3所示。但是由于整条折线的缓冲区应该是一个闭合多边形,所以折线端点出的缓冲区实际上只能是一个对上述半圆弧具有一定拟和精度的正n边形。图3.3 折线端点的缓冲区生成在图3.3中,设待生成缓冲区的折线端点A(Xa,Ya)其右侧缓冲区线段端点E(Xe,Ye),以A为圆心,d为半径顺时针转180o得半圆弧EC。(3)折线拐点缓冲区的生成 所谓折线上的拐点是指折线上两条相邻线段的连接处。显然,构成拐点的两条相邻线段或者在同一条直线上或者不在同一条直线上。 当两条直线在同一条直线上时,根据两条线段生成的同侧缓冲区也必然在同一条直线上(这里假设构成拐点的两条线段的缓冲区距离相等)。此时没有必要再生成拐点处的缓冲区。 当构成拐点的两条线段不再同一条直线上时,在折线的拐点处就形成两个角,其中一个角必然大于180o而另一个角则小于180o。把大于180o的角称为外角,而小于180o的角称为内角。在内角侧不必生成拐点缓冲区,与此相反,在外角侧,构成拐点的两条线段外角侧缓冲区线段不相交。而是形成一个扇形区圆弧(圆弧圆心在拐点上,圆弧半径等于缓冲区的距离)。折线的端点为构成拐点的两条线段外角侧缓冲区线段靠近拐点处的两个端点,图3.4中的D、D两点。图 3.4 折线拐点缓冲区的生成(4)任意折线等距缓冲区的自动生成算法任意不自相交折线等距缓冲区的自动生成算法 步骤1:按照折线的数字化方向,从折线的第一条线段开始,先生成折线起始端点的半圆弧缓冲区,然后再第一条线段的左侧生成该线段的缓冲区线段。设第一条线段为i线段。 步骤2:判断i+1线段相对当前i线段的走向(左拐、右拐或在当前i线段的延长线上三种情况)。如果i+1线段的走向为左拐或在当前i线段的延长线上,则在当前i线段的左侧只生成其相应的平行缓冲区线段。否则,除了要生成当前线段i的平行缓冲区线段外,还要生成拐点的弧形缓冲区折线。 步骤3:将新生成的缓冲区边界线与已经生成的缓冲区边界线进行相交计算。如果新生成的缓冲区边界线与已生成的缓冲区边界线间没有或只有一个交点,则转入步骤5;否则,说明缓冲区边界线出现了自相交现象,应该进行自相交处理,转入步骤4。 步骤4:确定新旧缓冲区边界线间的每个交点的特性。最靠近就缓冲区边界线上最后线段的交点为新旧缓冲区边界线间的正常交点,其他交点为缓冲区自相交的交点。当新旧缓冲区边界线间有两个交点时,应该设置一个标志变量用语标志新缓冲区边界线是进入已有缓冲区域的点称为“交叠开始点”,而新缓冲区边界线走出已有缓冲区域的点称为“交叠结束点”。在交叠开始点和交叠结束点之间必然存在的两条缓冲区边界线就是自相交处理中应该删掉的线。此外,应对闭合于交叠开始点的闭合缓冲区进行特殊的标记,因为此闭合缓冲区围成的区域并不是所要的缓冲区域,而恰恰是非缓冲区区域。本文将缓冲区在闭合曲线内部的缓冲区多边形称为正多边形,而缓冲区在闭合曲线外侧的缓冲区多边形被称为负多边形。 步骤5:判断当前线段是否为折线的最后一条线段。如果当前线段不是折线的最后线段,则将i加1后返回到步骤2,如果当前线段是折线的最后线段,则结束缓冲区生成计算。3.1.3工程实现步骤 本毕业设计是在Visual C+ 6.0的环境下编写的工程buffer_analysis。先用工程生成向导建立一个单文档工程。然后在本工程的基础上进行改进。步骤如下:1、自定义一个类CShape,用来保存和分析矢量数据/*/ 类 : CShape/ 属性 :CPoint* m_pPoints;所有节点坐标/int m_nCount;节点个数/BYTE m_bType;类型(点SHP_POINT,多线SHP_POLYLINE,多边形SHP_POLYGON)/ 方法 :CShpae构造函数/DrawBuffer计算并显示缓冲区/DrawShape显示图形/ 功能 : 存储简单的矢量图形,进行简单运算/*定义一个链表节点(struct Shapes),用来记录当前所有图形。2、 绘制或导入/导出图形绘制图形:通过工具栏选择绘制图形的类型(点,线或多边形),在OnLButtonDowne事件中记录鼠标位置,在OnLButtonDblClk事件中结束绘图,新建一个CShape对象,并将绘制图形类型、各个节点坐标以及节点数保存到这个对象中。将这个图形对象添加到当前所有图形的链表(struct Shapes CBuffer_analysisDoc:m_pAllShapes)中。然后用CShape: DrawShape(CDC *pDC)绘制图形。详细代码见工程中。如下为函数的说明。/*/ 函数 : DrawShape/ 参数 : CDC* pDC输出设备指针/ 功能 : 在指定设备上显示图形/*导入/导出图形:通过在工具栏选择保存视图把绘制的图形保存为*.bmp格式的图像。其中弹出对话框如下:图3.5 保存视图首先用ClassWizard创建派生自Cbitmap的新类CWzdBitmap, 用Text Editor为该类添加新函数Capture(CRect &rect),该函数以一个RECT结构作为其调用参数。该RECT结构将包含所抓取屏幕区域的屏幕坐标。抓取了视图后,用CWzdBitmap:Create DIB(int *pbmData)生成DIB对象。然后用CWzdBitmap: SaveBitmapEx( CString sFile )保存DIB对象为*.bmp位图文件。3、添加一个对话框,用来输入缓冲区选项。 对话框的属性为ID:IDD_BUFFER 如下图:图3.6 矢量法缓冲区分析选项对话框4、使用获得的缓冲区选项生成和绘制缓冲区。由CShape类的DrawBuffer函数实现。/*/ 函数 : DrawBuffer/ 参数 :int buf_type生成缓冲区的类型(012分别对应-圆形矩形三角形(点);左侧右侧双侧(线);内侧外侧双侧(多边形)/int l_radius半径(点),左半径(线),内半径(多边形)/int r_radius右半径(线),外半径(多边形)/CDC* pDC输出设备指针/ 功能 : 计算并显示缓冲区/* 点:圆形缓冲区:以当前点为圆形,缓冲区半径为半径的圆。正方形缓冲区:以当前点为中心,分别在xy方向上加减缓冲区半径得到的矩形。三角形缓冲区:以当前点为中心,在90,210,330度方向上加缓冲区半径得到的三角形。 多线: 根据缓冲区选项,分别对线的左右两侧按不同半径进行计算。以左侧为例:对于多线的每一个端点Ai,计算其与其后一个端点Ai+1组成线段左侧距离为缓冲区半径平行线段Li(平行线段端点为Si,Ei,最后一个端点除外)。计算Li与端点前一直线平行线段Li1的交点Pi,判断该点处为内角或外角。如果是内角,就直接连接,即绘制端点为Si-1Pi-1AiAi-1的多边形,同时令Ei =Pi。如果是外角,就使用圆弧连接,即绘制端点为Si-1Ei-1AiAi-1的多边形和以Ai为圆心,为半径,起点Ei-1,终点Si的圆弧。对于起点和最后一个端点,分别绘制线左侧的1/4圆弧。 多边形:根据缓冲区选项,分别对多边形的内外两侧按不同半径进行计算。将多边形看作是首尾相连的多线,即将终点作为起点的前一点,缓冲区生成方法与多线缓冲区的生成方法相同。详细代码见工程中程序运行后结果如下图图3.7 矢量法缓冲区生成结果3.2基于栅格的空间对象缓冲区生成算法本毕业设计是基于膨胀算法的缓冲区分析。从数学的角度看,缓冲区分析的基本思想是给定一个空间对象或集合,确定它们的领域。例如,要分析因道路拓宽而需要拆除的建筑物和需要搬迁的居民,则需进行缓冲区分析。3.2.1数学形态学的膨胀算法概述数学形态学是一门新兴的图像分析学科,其基本思想是:利用一个结构元素去探测一个图像,看是否能够将这个结构元素很好地填放在图像的内部,同时验证填放结构元素的方法是否有效。图学形态学中的基本运算有膨胀算法,其定义为: AB=a: (-B+a) A上式表示把结构元素B平移a后得到Ba,若Ba击中A(即Ba与A的交集不为空),记下这个a点。所有满足上述条件的a点组成的集合称做A被B膨胀的结果。图3.8中A表示的大长方形是被处理的对象,B所示的小正方形是结构元素,原点指定为B的中心。不难知道,对于任意一个在阴影部分的点a,Ba击中A,所以A被B膨胀的结果就是那个阴影部分。阴影部分包括A的所有范围,就像A膨胀了一圈似的,这就是将这种算法称为膨胀的原因。 图3.8 膨胀法原理3.2.2 基于膨胀算法的缓冲区分析的设计与实现本毕业设计的工程中,实现了二值图像的膨胀算法。可以直接对二值图像进行读取,并且实现膨胀。同时,在矢量算法实现后,可以保存为test.bmp格式。该位图为24位的位图,即颜色分为R,G,B三基色,然后我们在photoshop中对保存后的图像进行灰度化,去除颜色信息,另存为testgray.bmp。然后在二值化工程运行后进行二值化,另存为testerzhihua.bmp(图3.9)。最后在buffer_analysis工程运行后打

    注意事项

    本文(2923.利用bufferanalysis矢量算法直接实现空间实体目标分析 【实现代码+毕业论文】 .doc)为本站会员(李司机)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开