毕业论文-缓冲区分析与应用.doc_第1页
毕业论文-缓冲区分析与应用.doc_第2页
毕业论文-缓冲区分析与应用.doc_第3页
毕业论文-缓冲区分析与应用.doc_第4页
毕业论文-缓冲区分析与应用.doc_第5页
已阅读5页,还剩42页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

毕毕 业业 设设 计计 论论 文文 题 目 缓冲区分析与应用 学 院 测绘工学院 专 业 地理信息系统 姓 名 辛帅涛 学 号 062409133 指导老师 张卫国 完成时间 2013 年 5 月 25 日 目目 录录 摘摘 要要 1 1 第一章第一章 绪绪 论论 3 3 1 1 缓冲区问题的提出及意义 3 1 1 1 缓冲区分析问题的提出 3 1 1 2 缓冲区分析问题的意义 4 1 2 缓冲区分析实现的常用算法 5 1 2 1 凸角圆弧法原理 5 1 2 2 角分线法原理 6 1 2 3 栅格法原理 7 1 3 论文的主要内容 7 第二章第二章 建立空间对象缓冲区方法建立空间对象缓冲区方法 8 8 2 1 空间对象的数据表示 8 2 1 1 空间数据的栅格模型和矢量模型 8 2 1 2 栅格数据 BMP 格式文件说明 8 2 2 建立空间对象缓冲区的原理 12 2 2 1 空间对象缓冲区实现的矢量法原理 12 2 2 2 空间对象缓冲区实现的栅格法原理 13 2 3 基于矢量的空间对象缓冲区生成算法的引理和概念 14 第三章第三章 研究方法和技术路线研究方法和技术路线 2020 3 1 研究方法 20 3 2 技术路线 21 第四章第四章 缓冲区分析的实现缓冲区分析的实现 2323 4 1 打开工作空间 23 4 2 自定义缓冲区 23 4 3 生成缓冲区 28 4 4 缓冲区分析 28 4 5 最终实现的功能 32 4 6 基于矢量和栅格的缓冲区算法比较 37 第五章第五章 总结总结 3939 5 1 结论 39 5 2 问题及展望 39 参考文献参考文献 3838 致谢致谢 4141 河南城建学院毕业设计 论文 摘 要 0 摘摘 要要 本文对空间对象的缓冲区分析算法作了说明 讨论了分别利用图形学方法和图 像处理的形态学方法建立地理信息系统中空间对象的缓冲区算法 并且就两种算法 的异同做出了分析 在矢量算法中 各类地理要素根据其空间形态特征分为点 线 面三类 分别 以计算机屏幕数据的点 线 面图形对象表示 进行缓冲区分析 在栅格算法中 地理空间被划分为规则的小单元 像元 空间位置由像元的行 列 号表示 以膨胀法原理为基础 进行缓冲区分析 关键字 地理信息系统 缓冲区分析 矢量法 栅格法 膨胀法 河南城建学院毕业设计 论文 摘 要 1 ABSTRACTABSTRACT 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 three kinds 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 河南城建学院毕业设计 论文 第一章 绪 论 2 第一章第一章 绪绪 论论 1 1 缓冲区问题的提出及意义缓冲区问题的提出及意义 1 1 1 缓冲区分析问题的提出缓冲区分析问题的提出 地理信息系统 Geographic Information System 简称 GIS 是一项以计算机为基 础的新兴技术 围绕着这项技术的研究 开发和应用形成了一门交叉性 边缘性的 学科 从 20 世纪 60 年代出现至今 只有短短 40 多年的时间 但是他的发展非常迅 速 已经成为多学科集成并应用于多领域的基础平台 成为地学空间信息处理的重 要手段和工具 地理信息系统具有空间数据的输入 存储 管理 分析和输出等功能 地理信 息系统的主要目的是为了分析空间数据 以提供空间决策支持信息 因此 空间分 析是地理信息系统的主要功能 是核心 是灵魂 空间分析就是利用计算机对数字地图进行分析 从而获取和传输空间信息 由 于空间分析对空间信息 特别是隐含信息 所具有的提取和传输功能 它已经成为地 理信息系统区别于一般信息系统的功能特征 也成为评价一个地理信息系统功能的 主要指标之一 缓冲区分析是地理信息系统最重要和最基本的空间操作功能之一 缓冲区分析 是根据点 线 面实体基础 自动建立其周围一定宽度范围内的缓冲区多边形实体 从而实现空间数据在其领域得以扩展的信息分析方法 例如 公共设施 商场 邮 局 银行 医院等 的服务半径 大型水库建设引起的搬迁 都是一个邻近度的问 题 城市的噪音污染源所影响的一定空间范围 交通线两侧所划定的绿化带 既可 分别描述为点的缓冲区与线的缓冲区带 缓冲区分析的基本思想是给定一个空间物体 的集合 确定它 们 的某邻域 邻域的大小由邻域半径 R 决定 因此物体 Oi 的缓冲区的定义如下 Bi x d x Oi R 即对象 Oi 的半径为 R 的缓冲区是全部距 Oi 的距离 d 小于等于 R 的点的集合 d 一般 是指最小欧氏距离 对于多个对象的集合 河南城建学院毕业设计 论文 第一章 绪 论 3 O Oi i 1 2 3 n 其半径为 R 的缓冲区是单个对象的缓冲区的并 即 n B B 1 1 2 缓冲区分析问题的意义缓冲区分析问题的意义 缓冲区信息处理在现实生活中有广泛的应用 可以从以下几个方面看 1 缓冲区分析在生态环境影响评价中的应用 在特定的时空环境里 生态环境问题的产生是由于自然 人为条件下各生态因子 综合作用的结果 这些生态因子在不同程度上都具有某种地理含义 地理信息系统是 对具有地理含义的因子进行统计 查询 分析的有力工具 因此 利用地理信息系统 的相关技术来分析 评价生态环境问题的影响就显得理所当然 目前 在整个环境领 域 地理信息系统的应用得到了蓬勃的发展 空间数据的建立 属性数据的逐步完善 空间数据与属性数据的链接等为环境的评价 管理与规划提供了一个简单 便捷 明晰的运作平台 随着生态环境问题的出现以及科技的进步和人们生态环保意识的提 高 越来越多的人投向生态环境的建设与整治中或尽量减少对自然生态环境的干扰 但人类对生态环境的主观改造以及人类必须进行生产活动的效果与影响总是具有隐 蔽性和动态性的特点 其影响范围常常表现为一个趋势面 如何有效 直观地确定趋 势面亦即影响范围的大小是生态环境影响评价面对的主要问题 地理信息系统的空间 分析功能之一的缓冲区分析正是对这一趋势面加以分析的有力工具 例如 在环境治 理时 常在污染的河流周围划出一定宽度的范围表示受到污染的区域 又如在飞机场 常根据健康需要在周围划出一定范围的区域作为非居住区等 2 缓冲区分析在城市规划中的应用 城市作为人口集中 规模庞大 结构复杂 不断发展的动态系统 它的发展变 化不仅表现在人口的增加 经济的发展和功能的变化上 而且也表现在城市空间结 构的变化上 城市空间结构的基本要素是核心 交通网络 节点以及不同土地利用 模式形成的面状区域 核心的作用无庸置疑 多数城市的生长都是由核心开始的 交通网络则是城市生长的骨架 这里的交通网络不仅包含城市内部的主干街道 而 且包括城市对外交通干线 它往往形成城市的发展轴 节点可以是交通网络中重要 的交叉点 也可以是重要的郊区小城镇或卫星城镇 它们是城市中人流物流能量流 和信息流集聚和扩散的源地 正是这些基本要素决定了整个城市的扩展 缓冲区分 析又可以称为空间影响分析 是地理信息系统中定量研究距离因素影响的重要工具 河南城建学院毕业设计 论文 第一章 绪 论 4 因而进行基于重点区域和交通线的缓冲区分析 可以定量地描述城市用地扩展过程 以及空间分布 例如 在土地评测中 要根据离开交通线或繁华区的远近 进行地价估算 特 定场所的选址如大型超市 公园 疗养院要依靠诸如 靠近交通线 沿河流或濒 临湖泊 包含林块和绿地 等有关缓冲区操作 3 在地理数据结构化自动处理中的应用 地理信息处理的实质是综合分析与评测 借此赋以地理实体相应重要性 为管 理与规划决策提供依据和为它们的多比例显示奠定基础 然后 地图的地理信息的 综合评价必须在信息结构化的基础上进行 对于简单的数字化面条数据是难以进行 有效的分析和处理的 例如 河网树结构 地形线 山脊线与谷地线 的结构化 树结构的自动建立 都在递归地执行缓冲区操作 边防城镇 沿海港口和地形等 信息有其独特的不言而喻的重要性 这些都是借助缓冲区操作而实现的 综上所述 缓冲区分析在现实生活中有如此广泛的应用 所以 对缓冲区算法 的研究非常的有必要 1 2 缓冲区分析实现的常用算法缓冲区分析实现的常用算法 缓冲区生成矢量算法 特别是线缓冲区的生成算法 常见的有凸角圆弧法和角 平分线法 凸角圆弧法是逐个求得每个线段单独的缓冲区 然后用多边形叠质算法 依次合并 算法所生成的缓冲区边界 轴线转角尖锐的转折点的平行线交点随缓冲 距的增大将会迅速远离轴线 这就会出现尖角和凹陷的失真现象 角平分线法由画 逐个线段的简单平行线 尖角平滑矫正和自相交处理三步构成 角平分线的缺点是 难以最大限度的保证平行曲线的等宽性 1 2 1 凸角圆弧法原理凸角圆弧法原理 在轴线首末点处 作轴线的垂线并按双线或缓冲区半宽 E 截出左右边线的起迄点 在 轴线的其它各个转折点上 首先判断该点的凸凹特性 在凸侧用圆弧弥合 而在凹侧用 与该点所关联的前后两邻边距轴线的偏移量为 E 的两平行线的交点来生成对应顶点 如下图 由于在凸侧用圆弧弥合 使凸侧平行边线与轴线等宽 而在凹侧 平行边 线相交在角分线上 河南城建学院毕业设计 论文 第一章 绪 论 5 图 1 1 凸角圆弧法 1 2 2 角分线法原理角分线法原理 在轴线首末点处 作轴线的垂线并按双线或缓冲区半宽 E 截出左右边线的起迄点 在轴线的其它各个转折点上 用与该点所关联的前后两邻边距轴线的偏移量为 E 的两 平行线的交点来生成两平行边线的对应顶点 如图 1 2 图 1 2 角平分线法 河南城建学院毕业设计 论文 第一章 绪 论 6 1 2 3 栅格法原理栅格法原理 栅格方法又叫点阵法 它将点 线 面矢量数据转化为栅格数据 进行像元加 粗 然后作边缘提取 在原理上比较简单 容易实现 但受精度的限制 并且内存 开销大 所能处理的数据量受到机器硬件的限制 1 3 论文的主要内容论文的主要内容 本论文对建立空间对象的缓冲区的矢量算法和栅格算法进行分析 探讨了这两 种建立空间对象缓冲区算法的异同和应用范围 论文结构如下 1 空间对象缓冲区的实现 2 建立点 线 面空间对象缓冲区的矢量方法 3 建立点 线 面空间对象缓冲区的栅格方法 4 建立点 线 面空间对象缓冲区矢量 栅格方法的比较分析 河南城建学院毕业设计 论文 第二章建立空间对象缓冲区方 法 7 第二章第二章 建立空间对象缓冲区方法建立空间对象缓冲区方法 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 河南城建学院毕业设计 论文 第二章建立空间对象缓冲区方 法 8 WORD bfReserved1 WORD bfReserved2 DWORD bfOffBits BITMAPFILEHEADER FAR LPBITMAPFILEHEADER 该结构的长度是固定的 为 14 个字节 各参数说明如下 bfType 指定文件类型 必须是 0 x424D 即字符串 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 河南城建学院毕业设计 论文 第二章建立空间对象缓冲区方 法 9 BITMAPINFOHEADER FAR LPBITMAPINFOHEADER 该结构的长度为 40 个节 各参数的意义说明如下 biSize 指定这个结构的大小 为 40 个字节 biWidth 指定图像的宽度 单位是像素 biHeight 指定图像的高度 单位是像素 biPlanes 必须是 1 biBitCount 指定表示颜色要用到的位数 常用的值 1 黑白 8 256 色 24 真彩色 biCompression 指定位图是否压缩 有效值为 BI RGB BI RLE4 BI RLE8 其中 BI RGB 为不压缩的情况 biSize Im age biWidth biHeight biSizeImage 指定实际的位图数据占用的字节数 可以用下面的公式计算 需要注意的是 上述公式中的 biWidth 不一定总等于 biWidth biWidth 必 须是 4 的整数倍 表示大于或等于 biWidth 的离 4 最近的整倍数 biXPelsPerMeter 指定目标设备的水平分辨率 单位是每米的像素个数 biYPelsPerMeter 指定目标设备的垂直分辨率 单位是每米的像素个数 biClrUsed 指定本图像实际用到的颜色数 如果该值为 0 则用到的颜色数 为 2 的 biBitCount 次幂 biClrImportant 指定本图像中重要的颜色数 如果该值为零 则认为所 用的颜色都是重要的 3 alette 调色板 调色板实际上是一个数组 共有 biClrUsed 个元素 如果该值为 0 则为 2 的 biBitCount 次幂 数组中每个元素的类型为一个 RGBQUAD 结构 占 4 个字节 河南城建学院毕业设计 论文 第二章建立空间对象缓冲区方 法 10 结构定义如下 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 为文件名 该函 河南城建学院毕业设计 论文 第二章建立空间对象缓冲区方 法 11 数的返回值是文件中的图像数据的句柄 函数原型 BOOL WINAPI SaveDIB HDIB hDib CFile file 的第一个参数 hDIB 表示保存图像数据的内存区域的句柄 第二 个参数 CFile file 为保存图像的文件名 另外 还有查找位图像素的函数 LPSTR WINAPI FindDIBBits LPSTR lpbi 用于计算 DIB 位图图像数据的地址 返回一个 指向位图图像数据起始位置的指针 2 22 2 建立空间对象缓冲区的原理建立空间对象缓冲区的原理 2 2 12 2 1 空间对象缓冲区实现的矢量法原理空间对象缓冲区实现的矢量法原理 1 点目标 P 的缓冲区 以 P 为圆心 以缓冲距 E 为半径作圆 图 2 1 点目标的矢量法缓冲区分析 2 线目标 L 的缓冲区 以 L 为轴线 以缓冲距 E 为平移量向两侧作平行 曲 折 线 在轴线两端构造两个半圆弧 最后形成圆头 蚕形 缓冲区 河南城建学院毕业设计 论文 第二章建立空间对象缓冲区方 法 12 图 2 2 线目标的矢量法缓冲区分析 3 面目标 A 的缓冲区 以 A 的边界线 LA 为轴线 以缓冲距 E 为平移量向边界 线的外侧作平行曲 折 线 图 2 3 面目标的矢量法缓冲区分析 2 2 2 空间对象缓冲区实现的栅格法原理空间对象缓冲区实现的栅格法原理 本毕业设计是基于膨胀算法的缓冲区分析 从数学的角度看 缓冲区分析 的基本思想是给定一个空间对象或集合 确定它们的领域 数学形态学是一门新兴的图像分析学科 其基本思想是 利用一个结构元 素去探测一个图像 看是否能够将这个结构元素很好地填放在图像的内部 同 时验证填放结构元素的方法是否有效 图学形态学中的基本运算有膨胀算法 其定义为 A B a B a A 上式表示把结构元素 B 平移 a 后得到 Ba 若 Ba 击中 A 即 Ba 与 A 的交集不为 河南城建学院毕业设计 论文 第二章建立空间对象缓冲区方 法 13 空 记下这个 a 点 所有满足上述条件的 a 点组成的集合称做 A 被 B 膨胀的结果 图 2 4 中 A 表示的大长方形是被处理的对象 B 所示的小正方形是结构元素 原点指定为 B 的中心 不难知道 对于任意一个在阴影部分的点 a Ba 击中 A 所以 A 被 B 膨胀的结果就是那个阴影部分 阴影部分包括 A 的所有范围 就像 A 膨胀了一圈似的 这就是将这种算法称为膨胀的原因 图 2 4 膨胀法原理图 空间对象缓冲区的膨胀生成算法原理 河南城建学院毕业设计 论文 第二章建立空间对象缓冲区方 法 14 1 点目标 P 的缓冲区 以 P 为点生成元 借缓冲距 E 规定像元加粗的结构元 素 然后进行像元的膨胀 2 线目标 L 的缓冲区 以 L 为线生成元 借缓冲距 E 规定像元加粗的结构元 素 然后进行像元膨胀 3 面目标 A 的缓冲区 以 A 的边界线 LA 为轴线 借助缓冲距 E 规定像元加粗 的结构元素 并进行像元膨胀 2 32 3 基于矢量的空间对象缓冲区生成算法的引理和概念基于矢量的空间对象缓冲区生成算法的引理和概念 空间信息系统中 空间目标分为点目标 线目标 面目标 以及点 线 面目 标任意组合而成的复杂目标 空间目标的缓冲区包括点目标缓冲区 线目标缓冲区 面目标缓冲区 点目标的缓冲区 是围绕该目标的半径为缓冲距的圆周所包围的区 域 线目标的缓冲区 是沿线目标的两侧距离不超过缓冲距的点组成的区域 面目 标的缓冲区 是沿该目标边界内侧或外侧距离不超过缓冲距的点组成的区域 为讨论方便 首先引入下面几个引理和概念 引理一 当沿着简单多边形的顶点串方向走过所有有向边时 如果多边形的顶点 以逆时针方向串连起来 则我们的左侧始终在多边形的内部 反之 如果多边形的 顶点以顺时针方向串连起来 则我们的右侧始终在多边形的内部 引理二 当沿着简单多边形的任一条有向边从起点走向终点时 如果我们的左侧 始终在多边形的内部 则多边形的顶点以逆时针方向串连起来 反之 如果我们的 右侧始终在多边形的内部 则多边形的顶点以顺时针方向串连起来 定义一 如果多边形的顶点以逆时针方向串连起来 则称此多边形的方向为正向 如果多边形的顶点以顺时针方向串连起来 则称此多边形的方向为负向 正多边形 负多边 形 河南城建学院毕业设计 论文 第二章建立空间对象缓冲区方 法 15 图图 2 52 5 正负多边形的定义 定义二 在简单多边形任意顶点前后两个矢量形成的两个角度中 位于多边 形内的角度称为该顶点的内角 位于多边形外的角度称为该顶点的外角 2 42 4 线状目标缓冲区的生成方法线状目标缓冲区的生成方法 线状目标缓冲区的生成是点 线 面三种基本空间矢量要素缓冲区生成的关键 和基础 在此节介绍了本次毕业设计实现线状目标缓冲区自动生成的矢量算法 线状目标缓冲区总的生成分两个阶段 即单个线状缓冲区多边形的独立生成过 程和多个线状目标缓冲区多边形间的重叠合并过程 1 独立线状目标缓冲区的自动生成 在基于矢量数据格式的地理信息系统中 任何线状目标的空间形态主要是通过 折线 的方式来表示的 因此 所谓的线状目标缓冲区的生成实际上等价于 折 线 缓冲区的生成问题 通过分析折线的形态特征会发现任何形状的折线都是由折 线端点 折线上的线段和线段间的拐点三个基本要素所构成 显然 要分析折线缓 冲区的生成算法 必需从构成折线的三要素着眼 下面分别介绍折线端点 折线上 的线段和线段间的拐点的缓冲区生成算法 然后在将它们组合在一起形成任意折线 等距缓冲区的自动生成算法 1 线段缓冲区的生成 任意方向线段 原线段 的缓冲区线段应与原线段构成一个矩形 图 3 2 中 CD 和 EF 两条线段代表元线段 AB 前进方向 起始点到结束点 的左右两条缓缓冲区 线段 F F C C A A E E 图 2 6 线段缓冲区的生成 河南城建学院毕业设计 论文 第二章建立空间对象缓冲区方 法 16 设原线段的起始点 A 和结束点 B 的坐标分别为 Xa Ya 和 Xb Yb 缓冲区距离为 d 则线段 AB 的左缓冲区线段 CD 的端点坐标 Xc Yc Xd Yd 和右缓冲区线段 EF 的端点坐标 Xe Ye Xf Yf 的计算公式应分别为 1 当 Ya Yb 0 时 Xc Xa d k 1 k Xd 2 Xa Xc Yc Xd d 1 k Yd 2 Ya Yc Xe Xb d k 1 k Xf 2 Xb Xc Ye Xb d 1 k Yf 2 Yb Yc 2 当 Ya Yb 0 时 Xc Xa d k 1 k Xd 2 Xa Xc Ye Xd d 1 k Yd 2 Ya Yc Xe Xb d k 1 k Xf 2 Xb Xe Ye Xb d k 1 k Yf 2 Yb Ye 其中 k 为线段 AB 直线的斜率 k Yb Ya Xb Xa 2 折线端点缓冲区的生成 理论上讲 折线端点的缓冲区应该是一个半圆弧 其原心在折线的端点上 连 接半圆弧两个端点的直径应垂直于折线的端点线段 如图 3 3 所示 但是由于整条 折线的缓冲区应该是一个闭合多边形 所以折线端点出的缓冲区实际上只能是一个 对上述半圆弧具有一定拟和精度的正 n 边形 河南城建学院毕业设计 论文 第二章建立空间对象缓冲区方 法 17 图 2 7 折线端点的缓冲区生成 在图 2 7 中 设待生成缓冲区的折线端点 A Xa Ya 其右侧缓冲区线段端点 E Xe Ye 以 A 为圆心 d 为半径顺时针转 180 得半圆弧 EC 3 折线拐点缓冲区的生成 所谓折线上的拐点是指折线上两条相邻线段的连接处 显然 构成拐点的两条 相邻线段或者在同一条直线上或者不在同一条直线上 当两条直线在同一条直线上时 根据两条线段生成的同侧缓冲区也必然在同一条 直线上 这里假设构成拐点的两条线段的缓冲区距离相等 此时没有必要再生成拐 点处的缓冲区 当构成拐点的两条线段不再同一条直线上时 在折线的拐点处就形成两个角 其中一个角必然大于 180 而另一个角则小于 180 把大于 180 的角称为外角 而 小于 180 的角称为内角 在内角侧不必生成拐点缓冲区 与此相反 在 外角侧 构成拐点的两条线段外角侧缓冲区线段不相交 而是形成一个扇形区圆弧 圆弧圆心在拐点上 圆弧半径等于缓冲区的距离 折线的端点为构成拐点的两条 线段外角侧缓冲区线段靠近拐点处的两个端点 图 2 8 中的 D D 两点 图 2 8 折线拐点缓冲区的生成 河南城建学院毕业设计 论文 第二章建立空间对象缓冲区方 法 18 4 任意折线等距缓冲区的自动生成算法 任意不自相交折线等距缓冲区的自动生成算法 步骤 1 按照折线的数字化方向 从折线的第一条线段开始 先生成折线起始 端点的半圆弧缓冲区 然后再第一条线段的左侧生成该线段的缓冲区线段 设第一 条线段为 i 线段 步骤 2 判断 i 1 线段相对当前 i 线段的走向 左拐 右拐或在当前 i 线段 的延长线上三种情况 如果 i 1 线段的走向为左拐或在当前 i 线段的延长线上 则在当前 i 线段的左侧只生成其相应的平行缓冲区线段 否则 除了要生成 当前 线段 i 的平行缓冲区线段外 还要生成拐点的弧形缓冲区折线 步骤 3 将新生成的缓冲区边界线与已经生成的缓冲区边界线进行相交计算 如 果新生成的缓冲区边界线与已生成的缓冲区边界线间没有或只有一个交点 则转入 步骤 5 否则 说明缓冲区边界线出现了自相交现象 应该进行自相交处理 转入 步骤 4 步骤 4 确定新旧缓冲区边界线间的每个交点的特性 最靠近就缓冲区边界线上 最后线段的交点为新旧缓冲区边界线间的正常交点 其他交点为缓冲区自相交的交 点 当新旧缓冲区边界线间有两个交点时 应该设置一个标志变量用语标志新缓冲 区边界线是进入已有缓冲区域的点称为 交叠开始点 而新缓冲区边界线走出已有 缓冲区域的点称为 交叠结束点 在交叠开始点和交叠结束点之间必然存在的两条 缓冲区边界线就是自相交处理中应该删掉的线 此外 应对闭合于交叠开始点的闭 合缓冲区进行特殊的标记 因为此闭合缓冲区围成的区域并不是所要的缓冲区域 而恰恰是非缓冲区区域 本文将缓冲区在闭合曲线内部的缓冲区多边形称为正多边 形 而缓冲区在闭合曲线外侧的缓冲区多边形被称为负多边形 步骤 5 判断当前线段是否为折线的最后一条线段 如果当前线段不是折线的最后 线段 则将 i 加 1 后返回到步骤 2 如果当前线段是折线的最后线段 则结束缓 冲区生成计算 河南城建学院毕业设计 论文 第二章建立空间对象缓冲区方 法 19 第三章第三章 研究方法和技术路线研究方法和技术路线 本章主要介绍 基于 ArcEngine 缓冲区分析用到的软件 其中 Microsoft Visual Basic 是一款使用面非常广的编程语言 比较适合编程的初学者使用 ArcEngine 是 Arcgis9 的系列产品 是基于核心组件库 ArcObject 搭建的 3 13 1 研究方法研究方法 1 文献搜集法 搜集空间分析的方案设计 需求预测等相关期刊专著以及网 河南城建学院毕业设计 论文 第三章 研究方法和技术路 线 20 络文献 对资料进行归纳 整理 分类 分析 得出相关的研究成果 为本论文的 研究奠定理论基础 2 系统分析法 在整个项目研究过程中 始终贯彻以理论知识为基础 以社 会实践为根本 进行市场调研分析 以此对本论文进行布局 设计 保证本论文体 系结构的逻辑性 科学性 可行性 3 模拟法 模型方法 模拟法是先依照原型的主要特征 创设一个相似的 模型 然后通过模型来间接研究原型的一种形容方法 根据模型和原型之间的相似 关系 模拟法可分为物理模拟和数学模拟两种 4 信息研究方法 信息研究方法是利用信息来研究系统功能的一种科学研 究方法 美国数学 通讯工程师 生理学家维纳认为 客观世界有一种普遍的联系 即信息联系 当前 正处在 信息革命 的新时代 有大量的信息资源 可以开发 利用 信息方法就是根据信息论 系统论 控制论的原理 通过对信息的收集 传 递 加工和整理获得知识 并应用于实践 以实现新的目标 信息方法是一种新的 科研方法 它以信息来研究系统功能 揭示事物的更深一层次的规律 帮助人们提 高和掌握运用规律的能力 供基本的面向对象支持 因为越来越多组建的出现 程 序员可以选用自己需要的扩展库 和有些语言不一样 VB 对大小写不敏感 但是能 自动转换关键词到标准的大小写状态 以及强制使得符号表入口的实体的变量名称 遵循书写规则 默认情况下字符串的比较是对大小写敏感的 但是可以关闭这个功 能 VB 使得大量的外界控件有了自己的生存空间 大量的第三方控件针对 VB 提供 VB 也提供了建立 使用和重用这些控件的方法 但是由于语言问题 从一个应用程 序创建另外一个并不简单 3 2 技术路线技术路线 本文的主要研究技术路线见图 提 出 课 题 研 究 现 状 理 论 基 础 研 究 分 析 方 案 设 计 总 结 绪 论 方 案 设 计 需 求 预 测 常 用 算 法 需 求 预 测 模 型 研究结论及改进方向 缓冲区研究现状 需 求 河南城建学院毕业设计 论文 第三章 研究方法和技术路 线 21 图 3 1 设计流程图 河南城建学院毕业设计 论文 第三章 研究方法和技术路 线 22 本文程序流程图 图 3 2 程序实现流程图 河南城建学院毕业设计 论文 第四章 缓冲区分析的实 现 23 第第 4 章章 缓冲区分析的实现缓冲区分析的实现 本章是文章的核心部分 将介绍利用湖北省交通路网的网络数据集 以 ArcEngine 为平台并通过 VB6 0 编写程序来实现缓冲区分析 文中将给出主要的代码 及相关说明 并在最后贴出运行效果图 4 1 打开工作空间打开工作空间 新建一个 ShapefileWorkspaceFactory 对象 不同类型的数据库使用不同的工 作空间对象 Dim pWorkspaceFactory As IWorkspaceFactory Set pWorkspaceFactory New ShapefileWorkspaceFactory Set OpenWorkspace pWorkspaceFactory OpenFromFile strGDBName 0 使用 shapefile 的空间对象连接到 shapefile 数据库 4 2 自定义缓冲区自定义缓冲区 要实现在地图面上拉框 拉多边形 拉多义线等 只需要使用 MapControl 的 Track 系列方法 TrackLine TrackPolygon 等 就很容易获得要做缓冲区运算的图 形 这点已经在空间查询部分进行了描述 本例使用了派生自 IDisplayFeedback 接 口的系列对象 即 ArcEngine 中的 FeedBack 对象 目的是让读者能够接触到更多的 ArcEngine 对象 体会 ArcEngine 开发的灵活性 在 ArcEngine 中所有的 FeedBack 对象 近 30 个 都实现了 IDisplayFeedBack 接口 在本例中要使用 NewLineFeedBack NewEnvelopeFeedBack 和 NewPolygonFeedback 三个对象来创建多 义线 矩形和任意多边形 创建用来做缓冲区的图形的过程是 用户在 MapControl 上点下鼠标 MouseDown 标志图形创建的开始 对于点 拉框和选择要素这三种 方式 当发生 MouseUp 的时候 标志动作的结束或图形创建完毕 对于多义线和多 边形则由于要放生多个 MouseDown 事件 其以 DoubleClick 标志图形的创建结束 河南城建学院毕业设计 论文 第四章 缓冲区分析的实 现 24 在 DoubleClick 事件被触发之前所发生的所有 MouseDown MouseUp MouseMove 事 件用来创建多义线或多边形的中间结点 该例子还是以实现 ICommand 和 ITool 接 口的方法来完成操作 建立的 Class Module 为 clsDrawGeometry Class Name clsDrawGeometry Implements Implements esriSystemUI ITool Implements esriSystemUI ICommand Event Public Event EndDraw ByVal EndDraw As Boolean EndDraw 事件在图形被绘制完毕时触发 其作用是留给调用的它的对象进行空间 分析 下面给出 MouseDown MouseMove MouseUp 和 DoubleClick 四个事件的所有代 码 Private Sub ITool OnMouseDown ByVal button As Long ByVal shift As Long ByVal X As Long ByVal Y As Long 根据类型来启动不同的绘制对象 Setm pPoint m pActiveView ScreenDisplay DisplayTransformation ToMapPoint X Y Select Case m DrawType 是点的时候直接获得该点 Case esriGeometryType esriGeometryPoint Set m pGeometry m pPoint RaiseEvent EndDraw True Case esriGeometryType esriGeometryEnvelope 矩形拉框 If m pNewEnvelopeFeedback Is Nothing Then 定义一个矩形 feedback 模拟拉框 Set m pNewEnvelopeFeedback New NewEnvelopeFeedback Set m pNewEnvelopeFeedback Display m pScreenDisplay m pNewEnvelopeFeedback Start m pPoint 河南城建学院毕业设计 论文 第四章 缓冲区分析的实 现 25 End If Case esriGeometryType esriGeometryPolyline 线 If m pNewLineFeedback Is Nothing Then Set m pNewLineFeedback New NewLineFeedback Set m pNewLineFeedback Display m pScreenDisplay m pNewLineFeedback Start m pPoint Else 在用户没有双击前 继续画 m pNewLineFeedback AddPoint m pPoint End If Case esriGeometryType esriGeometryPolygon If m pNewPolygonFeedback Is Nothing Then Set m pNewPolygonFeedback New NewPolygonFeedback Set m pNewPolygonFeedback Display m pScreenDisplay m pNewPolygonFeedback Start m pPoint Else 在用户没有双击前 继续画 m pNewPolygonFeedback AddPoint m pPoint End If Case 1111 要素缓冲 Dim pPt As IPoint Dim pGeo As IGeometry Dim pMapCtrl As MapControl Dim pFeatLyr As IFeatureLayer Dim pFSelection As IFeatureSelection Dim pFilter As ISpatialFilter Dim pTopo As ITopologicalOperator Dim i As Integer Count As Integer 河南城建学院毕业设计 论文 第四章 缓冲区分析的实 现 26 Set pMapCtrl m pHook hook Set pPt pMapCtrl ToMapPoint X Y Set pTopo pPt Count pMapCtrl LayerCount Set pFilter New SpatialFilter With pFilter Set Geometry pTopo Buffer 0 05 SpatialRel esriSpatialRelIntersects End With For i 0 To Count 1 Set pFSelection pMapCtrl Layer i pFSelection SelectFeatures pFilter esriSelectionResultNew False Next pMapCtrl Refresh esriViewGeoSelection End Select Exit Sub End Sub Private Sub ITool OnMouseMove ByVal button As Long ByVal shift As Long ByVal X As Long ByVal Y As Long Dim pPoint As esriGeometry IPoint Select Case m DrawType Case esriGeometryType esriGeometryEnvelope 矩形拉框 If Not m pNewEnvelopeFeedback Is Nothing Then Set pPoint m pScreenDisplay DisplayTransformation ToMapPoint X Y m pNewEnvelopeFeedback MoveTo pPoint 河南城建学院毕业设计 论文 第四章 缓冲区分析的实 现 27 End If Case esriGeometryType esriGeometryPolyline 线 If Not m pNewLineFeedback Is Nothing Then Set pPoint m pScreenDisplay DisplayTransformation ToMapPoint X Y m pNewLineFeedback MoveTo pPoint End If Case esriGeometryType esriGeometryPolygon 多边形 If Not m pNewPolygonFeedback Is Nothing Then SetpPoint m pScreenDisplay DisplayTransformation ToMapPoint X Y m pNewPolygonFeedback MoveTo pPoint End If End Select End Sub Private Sub ITool OnMouseUp ByVal button As Long ByVal shift As Long ByVal X As Long ByVal Y As Long 拉框和要素缓冲区是以 MouseUp 停止的 Select Case m DrawType Case esriGeometryType esriGeometryEnvelope 矩形拉框 If Not m pNewEnvelopeFeedback Is Nothing Then Set m pGeometry m pNewEnvelopeFeedback Stop 停止拉框 RaiseEvent EndDraw True 触发 EndDraw 事件 Set m pNewEnvelopeFeedback Nothing End If Case 1111 要素缓冲区 RaiseEvent EndDraw True 触发 EndDraw 事件 End Select End Sub 河南城建学院毕业设计 论文 第四章 缓冲区分析的实 现 28 Private Sub ITool OnDblClick 多边形和多义线是以双击来停止的 Select Case m DrawType Case esriGeometryType esriGeometryPolyline 线 双击停止 feedback Set m pGeometry m pNewLineFeedback Stop RaiseEvent EndDraw True 触发 EndDraw 事件 Set m pNewLineFeedback Nothing Case esriGeometryType esriGeometryPolygon

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论