一种GIS点缓冲区分析方法及系统与流程

文档序号:14135938阅读:1456来源:国知局
一种GIS点缓冲区分析方法及系统与流程

本发明涉及gis(geographicalinformationsystem,地理信息系统)领域,尤其涉及一种gis点缓冲区分析方法及系统。



背景技术:

目前,地理信息系统(gis)结合地理学与地图学以及遥感和计算机科学已经广泛地应用在不同的领域,是采集、存储、管理、检索、分析和描述整个或部分地球表面与空间地理分布数据空间信息系统;其中,空间分析是gis的核心和关键功能之一,空间分析是基于地理目标的位置和形态特征的空间数据分析技术,其目的是提取和发现隐含的空间信息和规律,是空间数据挖掘和知识发现的基本方法之一,空间分析主要包括空间量算、关系查询、缓冲分析、叠加分析、网络分析等内容,其中的“缓冲区分析(buffer)”是地理信息系统重要的和基本的空间操作功能之一,也是本发明所要关注的焦点;

缓冲区分析是指为了识别某地理实体或空间物体对其周围的邻近性或影响度而在其周围建立的一定宽度的带状区,其基本思想是给定一个空间实体(的集合),在其周围建立一定距离(缓冲半径或宽度)的带状区(缓冲区多边形),以确定这些物体对周围环境的影响范围或服务范围(邻近度问题);在gis中,缓冲是一种用于计算包含在一个几何图形特定距离区域内所有点的操作,其中,点缓冲区通常是以点为圆心、以一定距离为半径的圆,它在交通、林业、资源管理、城市规划、环境与生态保护等领域中有着广泛的应用,如通过在化工厂、水库周围建立缓冲区,可对缓冲区内污染信息、水利设施信息等要素进行统计,通过估算缓冲区面积,为住宅区的建筑规划及抢险救灾决策提供辅助手段;再如某地区有危险品仓库,要分析一旦仓库爆炸所涉及的范围,这些均需要进行点缓冲区分析操作;

点要素包括由单独一对x,y坐标定位的一切地理或制图实体;在矢量数据结构中,除点要素的x,y坐标外还应存储其他一些与点要素有关的数据来描述点实体的类型、制图符号和显示要求等,例如点要素的空间几何信息、属性信息、图形参数信息等,传统的点缓冲区分析基于单线程串行处理方法,只能对点要素逐一缓冲分析,而针对大量的点要素数据缓冲分析时,效率较低;

openmp为点缓冲分析创造了新的条件;openmp是由openmparchitecturereviewboard牵头提出的,并已被广泛接受,用于共享内存并行系统的多处理器程序设计的一套指导性编译处理方案(compilerdirective),openmp支持的编程语言包括c、c++和fortran。openmp提供了对并行算法的高层的抽象描述,程序员通过在源代码中加入专用的pragma来指明自己的意图,由此编译器可以自动将程序进行并行化,并在必要之处加入同步互斥以及通信,当选择忽略这些pragma,或者编译器不支持openmp时,程序又可退化为通常的程序(一般为串行),代码仍然可以正常运作,只是不能利用多线程来加速程序执行;

多线程,是指从软件或者硬件上实现多个线程并发执行的技术,具有多线程能力的计算机因有硬件支持而能够在同一时间执行多于一个线程,进而提升整体处理性能;

批量处理是指将一些之前预备好的需要多次统一运行的命令写在一起,每次只要输入一次批处理就可以达到将其包含的所有命令排头输入一遍的效果,这样就可以减少输入和输出,很大程度上节省时间,提高效率;

因此,为克服基于单线程串行处理的传统点缓冲区分析产生的效率较低的缺陷,我们可以借助上述技术实现更高效的gis点缓冲区分析方法及系统。



技术实现要素:

本发明的目的在于克服现有技术的缺点,提供一种gis点缓冲区分析方法及系统,高效稳定。

为解决以上技术问题,本发明的技术方案为:一种gis点缓冲区分析方法,其不同之处在于,所述方法包括如下步骤:

a:批量读取要进行空间缓冲分析的点图层数据,并建立相应的内存结构,其具体步骤为:

a1:对简单要素类数据外包矩形进行格网划分;

a2:批量读取格网数组中点要素的数据信息,并将当前格网范围中点要素的数据信息全部读出到系统内存以建立相应的内存结构;

b:对系统内存读取到的所有点要素进行多线程并行缓冲分析;

c:将缓冲分析后的点要素的数据信息批量读取并存入相应数据库的点简单要素类图层中,即得到缓冲分析结果。

按以上方案,所述步骤a1采用数据读取策略对简单要素类数据外包矩形进行格网划分;所述数据读取策略是将当前格网中点要素的数据内存与系统可用内存进行对比判断:设置一个系统可用内存的阈值,当数据内存小于阈值时,则不再对当前格网进行划分;反之,对当前格网继续划分,并进行内存判断,直至当前格网中点要素的数据内存小于阈值;重复此操作,直至所有格网的数据内存均小于阈值时,划分结束。

按以上方案,所述步骤a2具体包括:设置一个批量读取个数值k,一批次读出k个点要素的数据信息到系统内存;进行多批次读取,直至当前格网范围内点要素的数据信息全部读出到系统内存。

按以上方案,所述步骤b是基于单个点要素的缓冲分析从而对所有点要素进行多线程并行缓冲分析;所述单个点要素的缓冲分析过程为:设平面上单个点要素当前坐标为(x,y),关于任意指定的旋转支点(xr,yr)旋转θ角,得到新的点要素位置坐标(x',y');此时得到圆心位于旋转支点(xr,yr)、缓冲半径为r的圆关于旋转角θ的参数方程为:(x',y')用来表示缓冲区的每个顶点,其中,(xr,yr)在点要素的数据信息中获取,旋转角n为用于预计四分之一圆的扇形片段数;根据缓冲半径r解方程得到缓冲区的一个顶点(x',y'),将构成点缓冲区的各个顶点依次添加到点集合中,实现对一个点要素的缓冲分析。

按以上方案,所述步骤a1以空间四叉树的方式对所述简单要素类数据外包矩形进行格网划分。

按以上方案,所述步骤a2中的点要素的数据信息包括点要素的空间几何信息、属性信息、图形参数信息。

按以上方案,所述旋转支点(xr,yr)在点要素的空间几何信息中获取。

按以上方案,所述扇形片段数n根据用户自身需求指定,扇形片段数n取值越大,得到的计算曲线越光滑,与实际缓冲曲线越接近。

一种gis点缓冲区分析系统,其不同之处在于,其包括:

数据读取单元,用于批量读取要进行空间缓冲分析的点图层数据,并建立相应的内存结构;

数据缓冲单元,用于对系统内存读取到的所有点要素进行多线程并行缓冲分析;以及

数据存储单元,用于将缓冲分析后的点要素的数据信息批量读取并存入相应数据库的点简单要素类图层中,即得到缓冲分析结果。

按以上方案,所述数据读取单元包括内存分配单元和批量读取单元,所述内存分配单元用于对简单要素类数据外包矩形进行格网划分,所述批量读取单元用于批量读取格网数组中点要素的数据信息,并将当前格网范围中点要素的数据信息全部读出到系统内存以建立相应的内存结构。

由上述方案,本发明在点缓冲分析过程中使用了多线程并行处理方案,在计算机的内存结构空间中同时进行多线程缓冲,批量读取和批量储存也是内存结构空间中进行,提高了效率;批量读取和批量储存数据,减少了输入和输出,数据库打开关闭等操作的频率降低,在众多点要素缓冲分析方法中选取了缓冲效率较高的方法进行缓冲,使得在保证正确性的前提下,进一步极大程度地提高了缓冲效率,同时多线程技术的使用提高了本发明所述系统的处理性能,分析过程稳定。

附图说明

图1为本发明gis点缓冲区分析方法的优先实施例的工作流程图;

图2为本发明gis点缓冲区分析系统的优先实施例的结构示意图;

图3为本发明gis点缓冲区分析方法的优先实施例中在单个点数据缓冲分析时一点关于某固定支点旋转变换的示意图;

图4为本发明gis点缓冲区分析方法的优先实施例中在单个点数据缓冲分析时指定不同的扇形片段数n对应不同曲线近似程度的示意图;

具体实施方式

下面通过具体实施方式结合附图对本发明作进一步详细说明。

本发明实施例提供了一种gis点缓冲区分析方法,其特征在于,所述方法包括如下步骤:a:批量读取要进行空间缓冲分析的点图层数据,并建立相应的内存结构,其具体步骤为:a1:采用数据读取策略以空间四叉树的方式对点图层中简单要素类数据外包矩形进行格网划分;

所述外包矩形是简单要素类数据所在区域范围内点要素集合中最大xmax、ymax和最小xmin和ymin的四个点连成的矩形区域,外包矩形便于计算机进行格网划分;所述数据读取策略是将当前格网中点要素的数据内存与系统可用内存进行对比判断:设置一个系统可用内存的阈值,当数据内存小于阈值时,则不再对当前格网进行划分;反之,对当前格网继续划分,并进行内存判断,直至当前格网中点要素的数据内存小于阈值;重复此操作,直至所有格网的数据内存均小于阈值时,划分结束;

a2:批量读取格网数组中点要素的数据信息,并将当前格网范围中点要素的数据信息全部读出到系统内存以建立相应的内存结构;具体步骤为:首先设置一个批量读取个数值k,一批次读出k个点要素的数据信息到系统内存;再进行多批次读取,直至当前格网范围内点要素的数据信息全部读出到系统内存;所述点要素的数据信息包括点数据的空间几何信息、属性信息、图形参数信息;

b:对系统内存读取到的所有点要素进行多线程并行缓冲分析;此步骤是基于单个点要素的缓冲分析从而对所有点要素进行多线程并行缓冲分析;

所述单个点数据的缓冲分析原理如图3所示,具体过程为:设平面上单个点要素当前坐标为(x,y),关于任意指定的旋转支点(xr,yr)旋转θ角,得到新的点要素位置坐标(x',y');此时通过数学旋转变换得到圆心位于旋转支点(xr,yr)、缓冲半径为r的圆关于旋转角θ的参数方程为:此时如果把需要进行缓冲区分析的点目标看作是旋转支点,则就可以上述参数方程确定缓冲区的每个顶点,方程中有三个未知量:旋转支点(xr,yr)、旋转角θ、缓冲半径r,其中,(xr,yr)在读取点要素的空间几何信息中获取,旋转角式中n为用于预计四分之一圆的扇形片段数,如图4所示,片段的默认数值为8,这可以使计算曲线近似值与实际缓冲曲线的距离相差小于2%;若片段数为12,则能够将误差降低至小于1%;实际应用中,扇形片段数n由客户根据自身需求指定,扇形片段数n取值越大,得到的计算曲线越光滑,与实际缓冲曲线越接近;最后根据用户需求获取缓冲半径r可以求解该方程,通过解方程得出的每组(x',y')可以确定缓冲区的一个顶点,将构成点缓冲区的各个顶点依次添加到点集合中;据此,可以实现对一个点要素的缓冲分析;

按照此原理,采用并行技术对读取到内存中的所有点要素进行多线程缓冲分析,实现同时对大量点要素的缓冲分析;

c:将缓冲分析后的点要素的数据信息批量读取并存入相应数据库的点简单要素类图层中,即得到缓冲分析结果。

同时为实现以上发明目的,本发明还提供一种gis点缓冲区分析系统,其特征在于,其包括:

数据读取单元,用于批量读取要进行空间缓冲分析的点图层数据,并建立相应的内存结构;所述数据读取单元包括内存分配单元和批量读取单元,所述内存分配单元用于对简单要素类数据外包矩形进行格网划分,所述批量读取单元用于批量读取格网数组中点要素的数据信息,并将当前格网范围中点要素的数据信息全部读出到系统内存以建立相应的内存结构;

数据缓冲单元,用于对系统内存读取到的所有点要素采用并行技术进行多线程缓冲分析,实现同时对大量点要素的缓冲分析;以及

数据储存单元,用于将缓冲分析后的点要素的数据信息批量读取并存入相应数据库的点简单要素类图层中从而得到缓冲分析结果。

本发明现根据以下场景,结合附图进一步说明本发明一种优选实施方式。

空间有一个20万的源简单要素类(点数据),呈不均匀分布状态,以缓冲半径为200个地图单位进行缓冲,并将结果输出到目的简单要素类图层中,如图1所示,是按照本发明所述方法的基本工作流程,包括:

步骤a:本发明所述一种gis点缓冲区分析系统中的数据读取单元,用于打开源简单要素类,批量读取20万个点要素的数据信息,并建立相应的内存结构;

步骤a1:综合考虑数据内存和当前系统可用内存两个影响因素,当决定数据内存大小的要素数据量小于数据量阈值(阈值又叫临界值,此例中的数据量阈值为10万,是一个经验值)时,默认一次读入数据进行缓冲;当数据量较大时,考虑到可能无法一次性将所有数据读入内存,因此该过程引入数据读取策略;

首先,所述数据读取单元中的内存分配单元将简单要素类中的20万个点要素的外包矩形以空间四叉树的方式划分为四个格网,假设四个格网内的点要素数据量分别为8万、0.5万、1.5万、10万,取第一块格网8万点要素数据量来预估数据内存(数据内存值为一个点要素所占内存乘以点要素数据量,此例中,每个点的x,y坐标数据类型均为double型,则数据内存为16字节*8万=128万字节),此例中,阈值的大小为系统可用内存的三分之一,所述阈值为经验值,如果数据内存小于系统可用内存的三分之一,则不再对该外包矩形进行划分;如果数据所占内存大于系统可用内存的三分之一,则对该格网继续以空间四叉树的方式划分,并进行内存判断,直到当前格网点要素数据所占内存小于系统可用内存的三分之一为止;重复此操作,直至将所有格网内的点要素数据都进行合理划分,保证每个格网的数据内存都小于系统可用内存的三分之一,划分过程结束后,输出格网(外包矩形)数组;

步骤a2:所述数据读取单元中的批量读取单元进行批量读取当前格网数组中的点要素的数据信息,读取内容包括点要素的空间几何信息、属性信息、图形参数信息;根据数据读取策略得到的格网数组,逐一获取当前格网范围内的点要素数据,为了减少输入输出,采用简单要素类批量读取数据技术,在此例中,该技术根据批量读取个数值k=2000为一个批次,此批量读取个数值k=2000为经验值,一次读出2000个点要素,从而减少频繁的数据库打开关闭等操作,提高效率;通过多批次读取,最终将当前格网范围内点要素的数据信息全部读出到内存。

步骤b:本发明所述一种gis点缓冲区分析系统中的数据缓冲单元对已经读取到的点要素进行多线程并行缓冲分析:调用buffer()方法实现对单个点要素的缓冲分析,其原理如下:取当前空间几何信息坐标点作为旋转支点(xr,yr),获取其缓冲半径r为200个地图单位;根据公式旋转角式中n为用于预计四分之一圆的指定扇形片段数,由用户自定义扇形片段数n(综合考虑缓冲精度及运行效率可参考默认值取12)求出旋转角θ,求解此参数方程,此方程所得到的几何计算结果即得出点缓冲区的各个顶点;具体的程序实现是声明一个cpoints类对象,多次调用cpoints∷append()方法,将构成点缓冲区的各个顶点依次添加到点集合中;至此,可以实现对单个点要素的缓冲分析;

依据对单个点要素的缓冲原理,调用openmp架构对读取到的所有点要素进行多线程缓冲分析,即通过在源代码中加入专用的pragma来指明要缓冲的点要素,由此编译器可以自动将程序进行并行化运算,从而实现了对大量点要素的并行缓冲分析。

步骤c:并行缓冲分析完成后,所述一种gis点缓冲区分析系统中的数据存储单元依照批量读取数据的方法批量将缓冲后点要素的空间几何信息、属性信息、图形参数信息存入相应数据库的点简单要素类图层中,即得到缓冲分析的结果。

本发明的有益效果为:

1)与现有技术相比,本发明所述方法在gis空间的点缓冲分析过程中使用了openmp多线程并行处理方案,本发明是在计算机的内存结构空间中同时进行多线程缓冲提高效率的,批量读取和批量储存也是如此,在内存结构空间上进行的;批量读取与批量存储数据,即减少了输入和输出,从而减少频繁的数据库打开关闭等操作,提高了效率;在众多点要素缓冲分析方法中选取了缓冲效率较高的方法进行缓冲,使得在保证正确性的前提下,进一步地提高了缓冲效率;在大数据上,本发明所述gis点缓冲区分析方法的高效性体现地十分明显;

2)在同样的控制条件及在保证正确性的前提下,通过与本技术领域内的相关平台的测试数据对比表明,在gis空间的点缓冲区分析中,本发明所述新算法比其他平台快2~10倍以上,而且耗时相比于其他技术平台更加稳定,同时,多线程技术的使用提高了本发明所述系统的处理性能,进一步提高了系统的稳定性。

以上内容是结合具体的实施方式对本发明所作的进一步详细说明,不能认定本发明的具体实施只局限于这些说明。对于本发明所属技术领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干简单推演或替换,都应当视为属于本发明的保护范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1