一种高性能gis矢量数据编辑捕捉方法及装置

文档序号:190518 发布日期:2021-11-02 浏览:13次 >En<

阅读说明:本技术 一种高性能gis矢量数据编辑捕捉方法及装置 (High-performance GIS vector data editing and capturing method and device ) 是由 池晶 贺楷锴 余磊 沈雷 武永波 任康成 付智能 白文博 冯德润 沈文斐 于 2021-09-28 设计创作,主要内容包括:本发明适用于GIS技术领域,提供一种高性能GIS矢量数据编辑捕捉方法及装置,所述方法包括:对当前显示的一屏矢量地物数据进行简化数据处理,保存在简化缓存中;使用简化的数据绘制地图和绘制捕捉缓存;当开启一个捕捉任务时,获取当前捕捉点位并根据捕捉缓存进行捕捉计算,将捕捉结果进行缓存。本发明首先对数据进行简化,使用本地RGB位图索引查询代替空间查询,降低了几何算法的复杂度,减少了几何运算时间,提高了空间数据查询效率,提升了捕捉效率,具有很高的工程价值;并采用多路缓存策略来应对大数据的情况,提高了对象捕捉稳定性和流畅度,能够明显提高编辑作业人员的工作效率。(The invention is suitable for the technical field of GIS and provides a high-performance GIS vector data editing and capturing method and a device, wherein the method comprises the following steps: carrying out simplified data processing on the currently displayed vector ground feature data on one screen, and storing the data in a simplified cache; mapping and mapping capture cache using the simplified data; when a capturing task is started, the current capturing point position is obtained, capturing calculation is carried out according to the capturing cache, and the capturing result is cached. The method simplifies the data, replaces space query with local RGB bitmap index query, reduces the complexity of a geometric algorithm, reduces the geometric operation time, improves the spatial data query efficiency, improves the capture efficiency, and has high engineering value; and a multi-path cache strategy is adopted to deal with the condition of big data, so that the object capturing stability and smoothness are improved, and the working efficiency of editing operators can be obviously improved.)

一种高性能GIS矢量数据编辑捕捉方法及装置

技术领域

本发明属于GIS技术领域,尤其涉及一种高性能GIS矢量数据编辑捕捉方法及装置。

背景技术

在GIS(Geographic Information System或 Geo-Information system,地理信息系统)行业中矢量点线面数据作为最基础的一种数据,常用数据组织方式为将点,线和面分别按照图层分类型存储,即点存成一类,线存成一类,面存成一类,如此存储的优点是能为空间数据处理分析和渲染提供方便,能提高数据管理效率。在空间数据分析处理中,数据编辑是常用的数据处理手段,各类GIS软件中编辑中有各种强大的几何运算处理,能对点线面各做各种分析处理,但是目前为止数据的人工编辑还占主要工作,而人工编辑中需要大量地借助节点捕捉的方法来实现快速有效的对数据进行更改和处理,所以人为选点难免产生较大误差,以至于造成拓扑错误.

节点捕捉视觉上的可以理解为我们要用鼠标在屏幕上选择一个点,这个点必选是按照地理范围精度确认的,和已有点完全重合的或者有线性关系.很显然,人工手点可能无法点击的精确,那么就无法做到精确增删点,这会造成大量拓扑错误.

例如在GeoGlobe软件中捕捉,在绘制面得时候捕捉到临近一个面的节点,数学意义上捕捉可以看作是一个寻找最优点的过程,这个最优点可以是距离鼠标点最近的节点、交点、垂点或者切线、圆心等。所以传统意义上捕捉是一个计算密集型的过程,常规做法是当鼠标移动的时候动态求取与鼠标所在地理范围内的地物的交集,然后在此交集内寻找地物的各线段的准确关系,比如最近的节点,垂点等.常用技术方案就是在鼠标移动寻找点的时,与鼠标相近几个地物做求交运算,如果地物和鼠标点相交则取最近的节点,并且这个过程是实时计算的,鼠标只要在屏幕就会计算。

现有捕捉技术整个过程分三步:1、通过查询数据库或者本地缓存文件获取地理范围内的地物,此步主要是为了获取多个完整地物对象;2、对范围内每个对象做节点级别的几何运算求精确交点,如求取一个对象中距离鼠标最近的节点,循环此方式找到所有对象中最近的节点;3、 输出此捕捉节点供编辑使用,并缓存此节点计算用的所有地物对象,用以加快下次捕捉速度。

显然,目前这种矢量数据捕捉方法存在明显缺点:

第一,空间查询耗时多,整体流程效率不高。通过空间查询获得需要捕捉的数据,空间查询相比较普通的属性查询效率要低得多,并且要在高频得鼠标移动中不间断的做空间查询,可想而知在较大数据量得情况下,数据库服务端将承受巨大压力,如果服务端同时访问的人数较多将会产生较大延迟,捕捉可能会卡顿或者捕捉失效,常规测试如果数据量大于10万,此种方法就会造成卡顿1秒以上。

第二、地物对象几何运算耗时多。针对鼠标点范围内的对象几何对所有线段做几何相交运算,此过程用到了几何计算线断两两求交,如果数据量增加,此种几何计算方法将会成指数级别增长。

第三、缓存方式单一,不适应大数据量的应用场景。缓存范围过大会导致大量的数据在本地,不仅占用大量的存储空间,而且会导致效率降低;相反,缓存范围太小又不能达到有效缩减查询数据库的时间。

发明内容

鉴于上述问题,本发明的目的在于提供一种高性能GIS矢量数据编辑捕捉方法及装置,旨在解决现有矢量数据捕捉方法捕捉效率低、计算消耗高的技术问题。

一方面,所述高性能GIS矢量数据编辑捕捉方法包括下述步骤:

步骤S1、对当前显示的一屏矢量地物数据进行简化数据处理,保存在简化缓存中;

步骤S2、使用简化的数据绘制地图和绘制捕捉缓存,其中所述捕捉缓存中包含有地物对象唯一ID与位图索引的映射关系,其中所述地物对象唯一ID称之为OID;

步骤S3、当开启一个捕捉任务时,获取当前捕捉点位并根据捕捉缓存进行捕捉计算,将捕捉结果进行缓存。

进一步的,所述步骤S2中,绘制捕捉缓存具体过程如下:

根据屏幕显示像素大小创建一块适应大小的捕捉缓存;

将屏幕显示范围内每条地物对象唯一ID与位图索引中相应点进行对应,建立映射关系并绘制在捕捉缓存中。

进一步的,地物对象通过位图颜色赋值绘制到捕捉缓存中对应点位;如果所述地物对象为点或者线,直接根据地物对象的路径赋值绘制;如果所述地物对象为面,则将地物对象当做一条封闭轮廓线进行路径赋值绘制。

进一步的,所述步骤S3具体包括:

当开启一个捕捉任务时,获取当前捕捉点位p(x,y);

查询捕捉缓存中是否存在该点p(x,y)对应的缓存点或者线;

如果存在,则根据所述缓存点或者线通过映射关系找到相应的OID,从简化缓存中通过OID对应取出地物对象的几何与属性,即可捕捉到对应地物对象;

如果不存在,则从捕捉缓存中找到该点p(x,y)周围8方向外扩一个像素找到此9个像素范围内缓存点或者线,然后通过映射关系找到相应的OID,然后从简化缓存取出各地物对象的几何与属性,即可捕捉到对应地物对象;

将捕捉结果进行缓存。

进一步的,所述捕捉结果缓存在内存中,对于捕捉结果,按照最久未使用策略进行淘汰。

另一方面,所述高性能GIS矢量数据编辑捕捉装置,包括:

数据简化单元,用于对当前显示的一屏矢量地物数据进行简化数据处理,保存在简化缓存中;

绘制捕捉单元,用于使用简化的数据绘制地图和绘制捕捉缓存,其中所述捕捉缓存中包含有地物对象唯一ID与位图索引的映射关系,其中所述地物对象唯一ID称之为OID;

交互捕捉单元,用于当开启一个捕捉任务时,获取当前捕捉点位并根据捕捉缓存进行捕捉计算,将捕捉结果进行缓存。

进一步的,所述绘制捕捉单元包括:

缓存创建模块,用于根据屏幕显示像素大小创建一块适应大小的捕捉缓存;

映射绘制模块,用于将屏幕显示范围内每条地物对象唯一ID与位图索引中相应点进行对应,建立映射关系并绘制在捕捉缓存中。

进一步的,所述交互捕捉单元包括:

点位置获取模块,用于当开启一个捕捉任务时,获取当前捕捉点位p(x,y);

缓存查询模块,查询捕捉缓存中是否存在该点p(x,y)对应的缓存点或者线;

第一捕捉模块,用于当缓存查询模块查询存在时,根据所述缓存点或者线通过映射关系找到相应的OID,从简化缓存中通过OID对应取出地物对象的几何与属性,即可捕捉到对应地物对象;

第二捕捉模块,用于当缓存查询模块查询不存在时,从捕捉缓存中找到该点p(x,y)周围8方向外扩一个像素找到此9个像素范围内缓存点或者线,然后通过映射关系找到相应的OID,然后从简化缓存取出各地物对象的几何与属性,即可捕捉到对应地物对象;

结果缓存模块,用于将捕捉结果进行缓存。

本发明的有益效果是:本发明首先对数据进行简化,使用本地RGB位图索引查询代替空间查询,降低了几何算法的复杂度,减少了几何运算时间,提高了空间数据查询效率,提升了捕捉效率,具有很高的工程价值;并采用多路缓存策略来应对大数据的情况,提高了对象捕捉稳定性和流畅度,能够明显提高编辑作业人员的工作效率。

附图说明

图1是本发明第一实施例提供的高性能GIS矢量数据编辑捕捉方法的流程图;

图2是本发明第一实施例中映射关系示意图;

图3是本发明第二实施例提供的高性能GIS矢量数据编辑捕捉装置的结构方框图。

具体实施方式

为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。

为了说明本发明所述的技术方案,下面通过具体实施例来进行说明。

实施例一:

图1示出了本发明实施例提供的高性能GIS矢量数据编辑捕捉方法的流程,为了便于说明仅示出了与本发明实施例相关的部分。

当编辑人员在当前显示屏内拖动一屏地图绘制地物对象然后捕捉的时候,开始执行下述三个步骤,具体的,如图1所示,本实施例提供的高性能GIS矢量数据编辑捕捉方法包括下述步骤:

步骤S1、数据简化步骤:对当前显示的一屏矢量地物数据进行简化数据处理,保存在简化缓存中。

捕捉是按照当前屏幕内容进行操作,因此当显示一屏矢量地物数据的时候,首先需要简化数据。将当前窗口的数据做按照显示像素容差的简化,本实施例采用保拓扑的简化,具体使用异步本地缓存,不能使用内存缓存,否则影响捕捉操作界面响应。

GIS矢量地物数据有些可能会很大,百万、千万级别都是很常见的,而且是存于数据库中。但是编辑更新一般都是针对特定区域进行,比如分区、分县市、乡镇作业编辑,所以常用场景即在一定比例尺下逐屏编辑作业。但是由于GIS矢量地物数据量大,可能存在查询缓慢等问题,一般常用机器无法在内存缓存大体量的矢量数据。因此本步骤在绘制之前会做数据简化处理然后绘制。当然为了不影响绘制流程的效率,同时并行基于本地文件型数据库文件sqlite做矢量缓存。

数据简化步骤如下:对于点数据使用格网索引,简单点不做简化,多点数据根据当前比例尺对应的像素所代表的地理范围做简化;最大简化下,多点数据将变成一个点;对于线数据最大简化为两点线断,对于面数据最大简化为三角形,也就是说所有矢量点线面数据最终简化后还是点线面数据,只是坐标点会减少。

简化缓存主要用于绘制和捕捉绘制缓存,并不是真实的原始数据,简化缓存用sqlite数据库,因为sqlite文件型数据库在本地可建立rtree索引,他的读取和写入都很快,读取能达到10万/s,写能达到3万/s。

步骤S2、绘制捕捉步骤:使用简化的数据绘制地图和绘制捕捉缓存,其中所述捕捉缓存中包含有地物对象唯一ID与位图索引的映射关系,其中所述地物对象唯一ID称之为OID。

并行使用简化的数据绘制地图和绘制捕捉缓存,捕捉缓存非真正意义上得绘制,只是按照当前屏幕范围一块内存附上不同得值。其中绘制捕捉缓存具体过程如下:根据屏幕显示像素大小创建一块适应大小的捕捉缓存;将屏幕显示范围内每条地物对象唯一ID与位图索引中相应点进行对应,建立映射关系并绘制在捕捉缓存中。

具体实现时,首先根据当前屏幕像素创建一块捕捉缓存. 例如当前屏幕大小长w=1024,宽h=768,那么创建一块1024*768的捕捉缓存Swh,缓存数据类型为unsigned int[无符号整形]。数据类型设定为unsigned int,是因为后面将会和矢量地物的唯一值编号有一一对应的映射关系。 又由于一般图像的颜色值RGB值也可以使用unsigned int表示,例如RGB(255,255,0)颜色所对应的unsigned int 为65536。因此每个RGB颜色都可以用一个unsigned int类型的数值表示,通过常规颜色转换方法即可对应。所以本步骤可以将认为捕捉缓存Swh理论上认定为一个位图索引缓存,只不过不是常规意义上的按位存取的,而是按颜色存储的索引。

从简化缓存或者数据库获取的地物对象一般会有一个地物对象唯一ID,这里称之为OID(Object ID),一般是大于0的int[整形]值,因为大于0,所以可以将OID与位图索引缓存Swh中的任意一点对应起来,而Swh对应了屏幕范围的所有数据范围,所以基于屏幕内任意一点P(x,y)有值Pv=Swh(x,y)。 因此本发明用OID去初始化Swh(x,y)这一点的内存,那么就可以建立起OID和 Swh这块内存的映射关系。后面交互捕捉就不用去查数据库,直接获取这点值即可完成相关对象的查找,即使用Swh(x,y) == OID就可以获得地物对象的唯一ID,进而获取此点就和地物相交,从而避免了大量的几何计算以及查询。

这种基于颜色的位图索引映射关系执行效率非常高。如图2所示的一个基本的映射关系,不同的地物对象有唯一ID,即OID,通过将OID与颜色进行映射对应,使得每个地物对象以颜色色值形式绘制。图2中,假设两个地物对象线段的OID分别是255和65536。映射后分别表示为RGB(255,0,0)和RGB(255,255,0),通过颜色赋值渲染即可。

本步骤中,地物对象通过位图颜色赋值绘制到捕捉缓存中对应点位;如果所述地物对象为点或者线,直接根据地物对象的路径赋值绘制;如果所述地物对象为面,则将地物对象当做一条封闭轮廓线进行路径赋值绘制。这里由于不是真的绘制到设备,仅仅绘制到Swh这段内存块,也不需要抗锯齿,也不需要复杂的渲染,只需要将对应内存值做一定赋值即可。对于面也不需要填充,只需要当作线来处理其边界即可。因为面捕捉不会捕捉内部,所以此缓存的生成效率相对来说是会很高的。另外缓存和真正的地图符号化绘制是并行执行的,所以对地图显示和操作基本无效率降低影响,这里不必要用和设备相关的GDI、OpenGL等绘制方法,选取一个内存绘制引擎agg即可满足应用设计。经过详细测试,在30W的矢量面绘制捕捉缓存不会超过3s,而符号化绘制需要9s,如果并行执行地图绘制和捕捉缓存绘制将对效率无任何影响。

步骤S3、交互绘制步骤:当开启一个捕捉任务时,获取当前捕捉点位并根据捕捉缓存进行捕捉计算,将捕捉结果进行缓存。

具体的,本步骤包括:

S31、当开启一个捕捉任务时,获取当前捕捉点位p(x,y);

S32、查询捕捉缓存中是否存在该点p(x,y)对应的缓存点或者线;

S33、如果存在,则根据所述缓存点或者线通过映射关系找到相应的OID,从简化缓存中通过OID对应取出地物对象的几何与属性,即可捕捉到对应地物对象;

S34、如果不存在,则从捕捉缓存中找到该点p(x,y)周围8方向外扩一个像素找到此9个像素范围内缓存点或者线,然后通过映射关系找到相应的OID,然后从简化缓存取出各地物对象的几何与属性,即可捕捉到对应地物对象;

S35、将捕捉结果进行缓存。

假设现在要捕捉p(x,y)点处的地物对象,首先从捕捉缓存内读取查询有没有此p(x,y)点位置对应的缓存点或者线段,如果有则直接返回相应的OID,然后从简化缓存中通过OID对应取出地物对象的几何与属性,实现捕捉到对应地物对象;如果没有,首先获取p(x,y)点周围8方向,含p(x,y)点本身一共9个点, 也就是根据属边外扩一个像素找到此范围内的OID(类似9宫格), 然后从简化缓存取出相应地物对象的几何与属性,这样就捕捉到了对应的地物对象。9宫格范围内,有几个OID均可以取出。如果没有对应OID,这直接返回空,并给出提示。

捕捉结果的点和线段缓存起来,这里由于缓存的位点或者线段存在内存,为了防止内存过大, 对于捕捉结果,按照最久未使用策略进行淘汰,这样就避免了捕捉缓存暴涨,而且能保障效率, 因为一般编辑都是一屏一屏编辑很少会跳屏编辑。

实施例二:

图3示出了本发明实施例提供的高性能GIS矢量数据编辑捕捉装置的结构,为了便于说明仅示出了与本发明实施例相关的部分。

如图3所示,本实施例提供的高性能GIS矢量数据编辑捕捉装置包括:

数据简化单元1,用于对当前显示的一屏矢量地物数据进行简化数据处理,保存在简化缓存中;

绘制捕捉单元2,用于使用简化的数据绘制地图和绘制捕捉缓存,其中所述捕捉缓存中包含有地物对象唯一ID与位图索引的映射关系,其中所述地物对象唯一ID称之为OID;

交互捕捉单元3,用于当开启一个捕捉任务时,获取当前捕捉点位并根据捕捉缓存进行捕捉计算,将捕捉结果进行缓存。

上述功能单元1-3对应实现了实施例一中的步骤S1-S3,具体的,通过数据简化单元将矢量地物数据进行简化,然后绘制捕捉单元进行绘制捕捉缓存,最后通过交互捕捉单元完成捕捉计算和缓存捕捉结果。

其中,所述绘制捕捉单元2包括:

缓存创建模块,用于根据屏幕显示像素大小创建一块适应大小的捕捉缓存;

映射绘制模块,用于将屏幕显示范围内每条地物对象唯一ID与位图索引中相应点进行对应,建立映射关系并绘制在捕捉缓存中。

其中,所述交互捕捉单元3包括:

点位置获取模块,用于当开启一个捕捉任务时,获取当前捕捉点位p(x,y);

缓存查询模块,查询捕捉缓存中是否存在该点p(x,y)对应的缓存点或者线;

第一捕捉模块,用于当缓存查询模块查询存在时,根据所述缓存点或者线通过映射关系找到相应的OID,从简化缓存中通过OID对应取出地物对象的几何与属性,即可捕捉到对应地物对象;

第二捕捉模块,用于当缓存查询模块查询不存在时,从捕捉缓存中找到该点p(x,y)周围8方向外扩一个像素找到此9个像素范围内缓存点或者线,然后通过映射关系找到相应的OID,然后从简化缓存取出各地物对象的几何与属性,即可捕捉到对应地物对象;

结果缓存模块,用于将捕捉结果进行缓存。

综上,本发明使用特殊的位图索引降低了几何算法的复杂度,大大提升了捕捉效率,具有很高的工程价值;且针对数据库优化大量减少数据库的查询次数,节省更多带宽,数据利用率效率相对较高;同时采用了多路缓存,极大提升了整体捕捉的流畅性,能明显提高编辑作业人员的工作效率提高。

以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。

10页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:索引管理方法、装置、电子设备和可读存储介质

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!