一种基于点矢量数据多层存储的快速地图表示方法及系统
技术领域
本发明涉及一种在地理信息系统中矢量数据的地图标示方法及系统,具体的涉及一种基于点矢量数据多层存储的快速地图表示方法及系统。
背景技术
矢量数据是地理信息系统中空间数据的一种常用表示方法,它是基于矢量描述方法来表达和处理空间地物特征的一种数据组织方法,主要由点矢量、线矢量和面矢量数据组成。点矢量是用来描述地图上的各种标志点,如监控点、居民点等。在实际GIS项目中,点矢量数据的应用存在的主要技术难点在于点矢量数据的数据量大、分布不均匀、拓扑空间分析关系复杂等。GIS中点矢量数据一般包括点位置坐标,其中的坐标数据一般为浮点格式,同时为了更好地表达现实地理世界,GIS点矢量数据往往包括一系列属性信息,例如反应该地的社会经济,自然特征等。对于数据量较大的点矢量数据,在GIS应用中就会发生网络传输量、拓扑分析计算效率瓶颈以及大量矢量点的地图表示问题。
目前,国内外对减少矢量数据网络传输问题做过很多研究,以研究矢量数据压缩方法为热点,如间隔取点法、垂距限值法、角度限值法、道格拉斯-普克法等,这些研究方法采用有损压缩方式,以压缩线矢量或多边形矢量为目标;“一种二维矢量数据的压缩方法(公开号CN 1777038 A)”也是对线矢量数据进行压缩,但具有较好的压缩比和较小的失真。对点矢量数据的压缩目前还没有好的研究结果。
同时,也有一些研究“矢量数据的存储及空间索引方法”为出发点,以此来提高矢量数据的网络传输效率,以“一种矢量数据的存储及空间索引方法(公开(公告)号:101763422A)”为代表,该文在一定条件下可以减少矢量数据传输量,但当用户的可视范围包含全部的专题对象情况下,矢量数据的传输问题依然存在,一点也没解决。同时,这类研究往往需要在数据服务器端进行可视范围与矢量数据的空间分析计算,查询等处理,这会给具有大量客户端请求的服务器带来一定的运算负荷,影响其数据提供服务效率。
当然,还有一些专门针对矢量数据的地图表示为研究对象的,以“嵌入式GIS中矢量数据的快速显示方法研究--《城市勘测》2012年01期”为代表,其出发点还是以索引查找部分矢量数据和点线面分级显示部分要素层来达到减少数据传输和快速显示目标,但其只是在一定程度上解决部分问题,如索引的结果为全部的点矢量数据要素或某点要素层包含大量的点矢量数据,则仍然无法达到提高数据访问及显示效率的目标。
例如,用点矢量数据来简化描述全国各个乡镇社会经济情况时,全国共有乡镇四万多个,也就是需要4万多条数据记录来存储,每条记录包含点坐标数据,社会经济属性数据(根据需求,可有几十或几百个字段)。尤其是客户端通过网络远程请求在远程数据服务器上的这些4万多条点矢量数据记录时,效率自然比较低下;同时,对于点矢量数据较多的情况下,如何美观的在地图中显示也一直是GIS应用中研究的问题之一。例如,在10.0英寸屏幕1024*768象素分辨率情况下,如果显示4万多个点矢量数据(点图例与标注),那简直密密麻麻的覆盖整个屏幕,无法观看,所以,目前通常的做法是通过筛选或索引或进行区域合并等空间分析手段来减少要显示的点矢量数据。但是,这就要求服务器具有强大的分析处理能力,或者显示终端具有一定的内存及空间分析处理能力,以便处理分析这些空间点矢量数据。这在现有的内存及芯片处理能力有限的硬件终端上,尤其是在PDA等设备上就限制或影响此类的应用了。
如前面所述,为了能达到海量点矢量数据的快速地图表示这一目标,必须要同时解决数据传输量,服务器响应效率或用户终端硬件配置有限及地图美观表示这三方面同时存在的技术难点,现有研究基本都集中在部分的解决某一个方面的问题,而且还不是较好的全面的解决某一方面问题;例如,减少了数据传输量的同时,增加了服务器端的拓扑空间分析工作量,导致响应降低;或者增加了对用户终端的内存及处理性能的要求,限制了用户范围;或者难以达到美观的地图表示这一效果。
发明内容
本发明所要解决的技术问题是提供一种基于点矢量数据多层存储的快速地图表示方法及系统,能同时解决点矢量数据的地图表示中存在的网络传输量、服务器端或客户端拓扑分析计算效率瓶颈以及低效、美观的地图显示这三方面的问题。
本发明解决上述技术问题的技术方案如下:一种基于点矢量数据多层存储的快速地图表示方法,包括以下步骤,
步骤1,收集点矢量数据,并将点矢量数据存放在数据服务器端的数据表中;
步骤2,将数据服务器端的数据表中的点矢量数据按照应用要求,分层的存储在数据服务器端的分层数据表中;
步骤3,在数据服务器端,根据终端设备的配置和地图显示放大比例为每一分层存储的点矢量数据建立地图数据配置表;
步骤4,终端设备向数据服务器端发送点矢量地图数据显示的请求信息;
步骤5,数据服务器端将终端设备的请求信息进行解析,得到相应的终端设备请求点矢量地图数据和终端设备配置数据,数据服务器端查找地图数据配置表,并从该地图数据配置表中选择与终端设备请求点矢量地图数据和终端设备配置数据相匹配的地图数据来源,服务器端将此查找结果数据发送给终端设备;
步骤6,终端设备取得地图数据后,在地图上进行点矢量数据的地图表示;
所述所述点矢量数据包括点地理位置信息(x_pos,y_pos)数据和属性字段;
将点矢量数据按照应用要求分层的存储在数据服务器端的分层数据表中的方法为,对地图中的区域进行等级分层;将每一等级分层的边界多边形范围内收集到的所有点矢量数据中的x_pos字段和y_pos字段分别求平均值,分别得到x_av_pos和y_av_pos;将每一等级分层的边界多边形范围内收集到的所有点矢量数据中的属性字段进行相应的运算,得到一个新的属性字段;将得到的x_av_pos值、y_av_pos值和新的属性字段分别对应的作为每一层的的点矢量数据中的点地理位置信息数据和属性字段,并分层存储。
本发明一种基于点矢量数据多层存储的快速地图表示方法的有益效果是:本发明对点矢量数据进行多层存储,可以支持各种终端的应用,在终端无需进行任何的分析处理,在服务器端也只需进行简单的查询与计算,不存在服务器效率瓶颈;并且,应用本存储结构方法,可以大量减少服务器端与客户端的点矢量的数据传输量,提高应用系统的性能;同时在数据服务器端配置有数据配置表,可有效的解决美观的显示地图的问题。
在上述技术方案的基础上,本发明还可以做如下改进。
进一步,所述终端设备的配置包括尺寸、分辨率和放大比例。
进一步,所述终端设备向数据服务器端发送点矢量地图数据显示的请求信息的内容包括:点矢量数据的属性名称、终端设备当前的地图放大比例、终端设备屏幕当前可视区域、终端设备屏幕尺寸、终端设备分辨率及终端设备的IP地址与端口。
进一步,所述数据服务器端根据得到的终端设备请求点矢量地图数据和终端设备配置数据查找步骤3中建立的地图数据配置表是以请求信息里的终端屏幕当前可视区域组成的矩形区域对相应的分层点矢量数据的地图数据配置表进行查询。
进一步,当对亿级或以上数量的终端设备提供地理信息系统数据服务应用时,则按以下步骤执行,
步骤201,将步骤2中建立的各分层数据表分别存储在不同的数据服务器Sn中,并配置一用于处理各终端设备请求的服务器S0;
步骤301,在所述服务器S0中配置步骤3中的地图数据配置表;
步骤401,各终端设备向所述服务器S0发送点矢量地图数据显示的请求信息;
步骤501,所述服务器S0将各终端设备的请求信息进行解析,得到各终端设备请求点矢量地图数据和各终端设备配置数据,服务器S0根据其数据配置表将各终端设备请求点矢量地图数据转发给相应的数据服务器Sn,各数据服务器Sn查找服务器S0中的地图数据配置表,并从该地图数据配置表中选择与点矢量地图数据和各终端设备配置数据相匹配的地图数据来源,发送给各终端设备;
步骤601,各终端设备取得地图数据后,在地图上进行点矢量数据的地图表示。
采用上述进一步方案的有益效果是:对于有大量用户的GIS数据服务应用,例如亿级数量的用户,本专利所述的分层存储方法与分布式存储相结合,可以很好的支持此类应用,分层存储于分布式服务器相结合的结构可以具有很高的处理效率。另外,可以随时为任意数量的属性字段增加分层存储,具有很强的扩展性。
根据上述一种基于点矢量数据多层存储的快速地图表示方法,本发明还提供一种基于点矢量数据多层存储的快速地图表示系统。
一种基于点矢量数据多层存储的快速地图表示系统,包括数据服务器,所述数据服务器中设有存储模块、分层模块、地图数据配置模块、处理模块,
所述存储模块用于收集存储点矢量数据;
所述分层模块用于将点矢量数据按照按照应用要求进行分层,并将分层后的点矢量数据发送给存储模块进行存储;
所述地图数据配置模块用于根据终端设备的配置和地图显示放大比例为每一分层存储的点矢量数据建立地图数据配置表;
所述处理模块用于将终端设备的点矢量地图数据显示请求信息进行解析,得到相应的终端设备请求点矢量地图数据和终端设备配置数据,查找地图数据配置模块中的地图数据配置表,并从该地图数据配置表中选择与终端设备请求点矢量地图数据和终端设备配置数据相匹配的地图数据来源,将此查找结果数据发送给终端设备进行显示;
所述所述点矢量数据包括点地理位置信息(x_pos,y_pos)数据和属性字段;
将点矢量数据按照应用要求分层的存储在数据服务器端的分层数据表中的方法为,对地图中的区域进行等级分层;将每一等级分层的边界多边形范围内收集到的所有点矢量数据中的x_pos字段和y_pos字段分别求平均值,分别得到x_av_pos和y_av_pos;将每一等级分层的边界多边形范围内收集到的所有点矢量数据中的属性字段进行相应的运算,得到一个新的属性字段;将得到的x_av_pos值、y_av_pos值和新的属性字段分别对应的作为每一层的的点矢量数据中的点地理位置信息数据和属性字段,并分层存储。
附图说明
图1为本发明一种基于点矢量数据多层存储的快速地图表示方法的流程图;
图2为某企业基于点矢量数据多层存储以1:1000Km的比例在地图上表示全国各地店面的运营情况;
图3为为某企业基于点矢量数据多层存储以1:500Km的比例在地图上表示全国各地店面的运营情况;
图4为发明一种基于点矢量数据多层存储的快速地图表示系统的方框图。
具体实施方式
以下结合附图对本发明的原理和特征进行描述,所举实例只用于解释本发明,并非用于限定本发明的范围。
实施例1:
如图1所示,一种基于点矢量数据多层存储的快速地图表示方法,包括以下步骤,
步骤1,收集点矢量数据,并将点矢量数据存放在数据服务器端的数据表中。在数据服务器端将点矢量数据存储于一空间数据表VP_Base里;数据表VP_Base的字段有点位置信息(x_pos,y_pos)及各业务需求的属性字段,该表数据是通过调查或其他手段已经可以使用的数据。假设某应用中根据业务存储在服务器端的数据表VP_Base的属性字段如下:
该表中,业务属性字段有“PeopleNumber”(人口数量),“GDP”(人均国内收入)和其他一系列属性字段,共有41636条记录。根据应用要求,需要在用户终端对该点矢量数据进行按“人口数量”和“人均国内收入”两项专题进行地图显示,也就是说,需要在服务器端对此点矢量数据进行分层存储的所有属性字段为“PeopleNumber”和“GDP”,对其中的每个属性字段,按下面步骤2进行分层存储
步骤2,将数据服务器端的数据表中的点矢量数据按照应用要求,分层的存储在数据服务器端的分层数据表中。以对属性字段为“PeopleNumber”进行分层存储为例进行说明。按业务需求,确定该点矢量数据所需划分的层次。例如,数据表VP_Base存储的是全国各乡镇的社会经济情况表,在人口专题地图应用中,一般需要反映到乡镇级,县级,市级,省级,国家级三大经济圈,国家级,为此,对该属性,我们确定按此六个级别进行分六层数据表对点矢量数据存储处理。
第一层数据表VP_L1,指该表中每一条记录所代表的区域范围为最小的一级,在本例中其每个条记录代表一个乡镇的区划范围;该表的字段包括(x_pos,y_pos)及该分层的属性字段“PeopleNumber”。存储在服务器端的数据表VP_L1如下:
rowId |
x_pos |
y_pos |
PeopleNumber |
1 |
28.7773537 |
106.0856123 |
36997 |
(省略) |
|
|
|
其中,数据表VP_L1中的数据是取自表VP_Base中的x_pos,y_pos和PeopleNumber三个字段,记录数量保持不变。需要注意的是,假如业务地图应用中需要反映的最低区域范围不是乡镇级,例如以县内经济开发区为最小区域范围的地图显示,则需要对全国各县各经济开发区(每个开发区在地图中以一多边形表示),依次按开发区区域范围对表VP_Base进行空间查询,查询得到在该开发区内的所有乡镇记录,对该系列记录的x_pos字段和y_pos求平均值,分别得到x_av_pos,y_av_pos值;对这些记录的PeopleNumber字段求和,得到t_PeopleNumber,将x_av_pos,y_av_pos和t_PeopleNumber值分别作为数据表VP_L1的字段x_pos,y_pos,PeopleNumber的值进行添加一条该开发区的数据记录。
第二层数据表VP_L2,指该表中每一条记录所代表的区域范围比VP_L1表中记录所代表的区域更高一级,在本例中即为县级区域的属性信息,该表的字段包括(x_pos,y_pos)及该分层的属性字段“PeopleNumber”。存储在服务器端的数据表VP_L2如下:
rowId |
x_pos |
y_pos |
PeopleNumber |
1 |
28.7518652 |
105.9316001 |
903984 |
(省略) |
|
|
|
其中,数据表VP_L2的处理过程如下:全国2862个县,对每个县,用县边界多边形与表VP_Base做空间查询,得到该县范围内的所有乡镇记录,对这些记录的x_pos字段和y_pos求平均值,分别得到x_av_pos,y_av_pos值;对这些记录的PeopleNumber字段求和,得到t_PeopleNumber,将x_av_pos,y_av_pos和t_PeopleNumber值分别作为数据表VP_L2的字段x_pos,y_pos,PeopleNumber的值进行添加保存。按此过程处理完在表VP_L2里共有2862条记录。有几点需要说明,(1)rowId字段是从1开始,自动生成的记录唯一序号;(2)表VP_L2的属性字段要尽可能的少,以减少服务器端给客户端传输的数据量;(3)表VP_L2的分层属性字段值是根据实际应用确定是采用对查询的记录进行字段求和还是求平均,例如对“GDP”分层属性的表VP_L2,其“GDP”属性字段值是对查询的记录进行字段求平均得到的。在实际应用中,绝大部分是求和或求平均;对于求查询记录的最大值,最小值,出现的概率非常小,当然数据表VP_L2也可以支持这些运算。
第三层数据表VP_L3,做法类似上面的表VP_L2,指该表中每一条记录所代表的区域范围比VP_L2表中记录所代表的区域更高一级,在本例中即为市级区域的属性信息,该表的字段同表VP_L2,存储在服务器端的数据表VP_L3下:
rowId |
x_pos |
y_pos |
PeopleNumber |
1 |
28.8959298 |
105.4439703 |
4218400 |
(省略) |
|
|
|
其中,从数据表VP_L2得到数据表VP_L3的过程同上面表VP_L2的处理过程,只不过是采用全国各市行政边界多边形进行空间查询,处理后数据表VP_L3共有661条记录。
同理,可得第四层数据表VP_L4,共34条记录,包含23个省、4个直辖市、2个特别行政区、5个自治区的位置及“PeopleNumber”属性数据。
第五层数据表VP_L5,该表中每一条记录所代表的区域范围为国家级三大经济圈,即共有3条记录,分别代表环渤海湾经济圈、长江三角洲经济圈和珠江三角洲经济圈相应的记录,如下表:
其中第一条记录是利用环渤海湾经济圈多边形与数据表VP_L4进行空间查询与计算,得到相应的位置信息(均值)和PeopleNumber属性值(求和)。第二条记录是代表长三角经济圈区域范围,其是由数据表VP_L4中的上海直辖市和数据表VP_L3中的29城市组成,对这30条记录进行统计计算得到。第三条记录是代表珠三角经济圈区域范围,其是由数据表VP_L3中的9个城市组成,对这9条记录进行统计计算得到。
第六层数据表VP_L6,该表中包含一条记录,代表国家级区域的PeopleNumber属性信息,其值通过对数据表VP_L4的记录进行统计计算得到。如下表:
至此,对点矢量数据的属性字段为“PeopleNumber”的进行服务器端分层存储过程完成。其中,有下面几点需要说明:
(1)对点矢量数据的不同的属性字段进行分层存储时,各属性字段根据各自的业务应用确定分层数量,每个属性字段的每层数据存储在不同的数据表里,数据表字段只包含点坐标和属性值,力求简单,信息少,这样可减少数据传输量。
(2)对点矢量数据的分层,不是只按行政区划进行分层的,分层的原则是根据实际业务应用,具体方式灵活,不作任何限制。例如,可以由应用中指定的任意多边形为分层区域,这包括各级行政区划(县,省市,国家)及自定义区域,也可以由指定条件确定分层数据表,如建立全国百强县级层数据表VP_L1、省会级城市层数据表VP_L2与国家层数据表VP_L3三层简单的分层存储方案。
(3)在数据服务器端的点矢量数据表VP_Base是在GIS应用中给定的已知数据表,其包含的记录通常是大量的,属性字段也十分丰富,为了提高地图显示的效率,我们采用分层存储技术方案,其中各层数据表VP_L1、VP_L2,...,VP_LN是基于数据表VP_Base离线构建的,构建的具体方法方式灵活。
步骤3,在数据服务器端,根据终端设备的配置和地图显示放大比例为每一分层存储的点矢量数据建立地图数据配置表。在GIS应用中,点矢量数据的专题地图表示与各终端设备密切相关,不同尺寸的终端屏幕和指定的分辨率下,对同一点矢量数据的地图显示效果不一样。例如,在5英寸PDA屏幕分辨率为1024x768的情况下,显示全国各省人口分布点数据图层时,点图标及标记就会显得比较拥挤,地图表示不美观;但在10英寸PDA屏幕分辨率为2560x1600的情况下,各省人口点图标及标记显得比较美观。另外,在不同的地图放大比例下,也需要确定合理美观的地图表示所能显示的点数据的数量。例如,在在10英寸PDA屏幕分辨率为2560x1600的设备上,在放大比例为1:500公里,可显示全国范围各省人口点图标及标记(点数据的数量为34)并具有较好美观效果;但在1:100公里的放大比例下,设备屏幕只能显示全国部分区域,此时如果地图表示的点数据的数量仍然是34,则在屏幕上可见的点图标和注记只有几个,显得稀少,表达信息不够充分,如果此时地图表示的点数据采用所有市级点矢量数据,那么在屏幕范围内显示的点数据的数量会达几十个或更多点,地图表示显得比较美观,信息量也丰富。为此,在数据服务器端对步骤一,步骤二中进行分层存储的属性字段分别进行地图显示策略的设置,在数据服务器端建立如下配置表:
需要说明的是,数据服务器端需要为每个分层存储的属性设置一个配置表,以便于处理用户终端的数据请求;上表仅仅是示意性配置表,在具体的应用中,需根据系统常用的终端设备尺寸及分辨率和放大比例,通过实际测试,进行相应的配置,力求做到全面。
步骤4,终端设备向数据服务器端发送点矢量地图数据显示的请求信息。在Gis应用系统中,无论是B/S结构还是C/S结构的系统,各用户终端要获取某数据的地图服务,都是通过向数据服务器发送对该点矢量地图数据的请求信息,在本专利中用户终端发送的请求信息的内容包括:点矢量数据的属性名称、终端当前的地图放大比例、终端屏幕当前可视区域(一般用矩形表示,以其左上及右下角坐标表示)、终端设备屏幕尺寸和分辨率及用户终端的IP地址与端口。例如,某一用户终端请求的信息如【param1=“PeopleNumber”param2=“1:25Km”param3=“34.2244 108.9705 36.2244109.9705”param4=“19x1280X1024”param5=“220.181.108.93 3275”】(请求信息并非完全采用此例子格式,灵活自由,但必须包含上述内容即可)。
步骤5,数据服务器端将终端设备的请求信息进行解析,得到相应的终端设备请求点矢量地图数据和终端设备配置数据,数据服务器端查找地图数据配置表,并从该地图数据配置表中选择与点矢量地图数据和终端设备配置数据相匹配的地图数据来源,服务器端将此查找结果数据发送给终端设备。服务器端接受到此请求信息后,将进行解析,得到对应的终端所请求点矢量地图数据的属性名称PeopleNumber、用户当前地图的放大比例1:25Km,以及该用户终端的配置19英寸1280x1024,服务器程序会查找步骤四中建立的配置表,从该配置表里选择最接近该终端的地图数据来源(即配置表的第四列)为“表VP_L2”,但表VP_L2表里有两千多条记录,当前该用户终端的可视化范围里值包含其中很小一部分点数据记录,因此,在服务器端用请求信息里的终端屏幕当前可视区域,本例中为“34.2244 108.9705 36.2244109.9705”,用此矩形区域对表VP_L2矩形空间查询,查询结果一般只有很少数的点数据记录(并且每条记录信息只包含坐标xy和一个属性值,数据量小,传输效率高,这就是在步骤二中分层数据表力求简洁的原因),服务器端将此查询结果数据发送给该用户终端(因为终端请求信息里包含了其IP地址和端口,服务器就可以回发地图数据)。
步骤6,终端设备取得地图数据后,在地图上进行点矢量数据的地图表示。用户终端取得数据后,根据坐标点位置及属性值,便可在地图上进行点矢量数据的地图表示了,并且在数据传输效率,数据服务器的响应速度及地图美观展现方面都有较好的保证。
以上步骤就可以完整的实现海量点矢量数据的快速地图表示这一目标了,基本可以满足Gis领域里常见的实际应用项目。对于有大量用户的Gis数据服务应用,例如亿级数量的用户,本专利所述的分层存储方法与分布式存储相结合,可以很好的支持此类应用。具体过程简述如下:(1)将上述步骤二中所建立的分层数据表VP_L1,VP_L2,...VP_LN分别存储在不同的数据服务器S1,S2,...,SN中.(2)配置一专门用于处理各用户终端请求的服务器S0,在服务器S0中存储所有进行分层存储处理的属性配置表,即步骤四中的配置表。服务器S0接收每个终端的请求,按步骤四中处理解析请求,并将该请求所对应的地图数据来源表VP_LX(即为VP_L1,或VP_L2等)及该终端的当前可视化矩形区域转发给相应的数据服务器SX(VP_L1对应S1,VP_L2对应S2,其他同理),由数据服务器SX来进行空间查询,并将查询结果发回给该终端。这样,分层存储于分布式服务器相结合的结构可以具有很高的处理效率。另外,可以随时为任意数量的属性字段增加分层存储,具有很强的扩展性。
综合以上所述,本方法对点矢量数据的地图表示提出了完整的解决方法,从数据传输到服务端响应速度及地图的美观表达都得到很好的处理,并具有很好的扩展性,其代价就是在服务端增加存储设备,存储技术及成本在目前已经不是限制应用的重要问题了。
实施例2:
某大型企业,业务遍及全国各地,公司总部需要一项专题地图应用,以此公司高层可以方便的掌握全国各地店面的运营情况,普通消费者也能通过专题地图方便的了解分店在各地的分布及消费情况。公司收集了分布在全国各地分店信息,根据业务需求,我们整理出此点矢量数据对应的空间数据表VM_Base(2012年数据),表数据如下:
在该表中,属性字段较多,对此地图应用无关紧要的属性字段以“其他属性”代替;该数据表有8132条记录。在本应用中,需要对“年净利润”和“均价”这两个属性分别进行专题地图应用,为此,需要在服务器端对此点矢量数据进行分层存储的所有属性字段为“年净利润”和“均价”。由于对这两个属性字段的处理过程本质完全一样,现以对“年净利润”属性字段进行说明,分层存储过程如下:年净利润专题地图服务的对象是公司懂事及股东,他们关心的是企业中高层管理人员的业绩情况,而不关心各分店或某一局部区域的经营情况,因此,确定该点矢量数据所需划分的层次为省级区域层、华北东北等七大行政区域层及国家层共三层存储处理;第一层数据表VM_L1,指该表中每一条记录所代表的区域范围为各省区域,反应该省的年净利润信息,具体数据如下:
rowId |
x_pos |
y_pos |
年净利润(万元) |
1 |
38.03937 |
114.52111 |
4126 |
2 |
43.77163 |
87.62504 |
2316 |
省略 |
|
|
|
其中,x_pos,y_pos分别为表VM_Base中各省的省会城市坐标点x,y值,“年净利润”字段值是对其求和计算得来,共32条记录。
第二层数据表VM_L2,指该表中每一条记录所代表的区域范围为七大行政区域,反应该区域负责人的经营效益情况,具体数据如下:
rowId |
x_pos |
y_pos |
年净利润(万元) |
1 |
39.99775 |
116.31616 |
23584 |
2 |
43.83427 |
125.43790 |
7316 |
省略 |
|
|
|
其中,第一条记录代表华北地区,x_pos,y_pos值分别为从表VM_Base中北京市、天津市、河北省、山西省、内蒙古自治区对应的5条记录的x,y坐标平均值,“年净利润”属性值为和值。该表共6条记录(因不包括港澳台地区),处理方式同第一条记录。
第三层数据表VM_L3,包含一条记录,代表全国范围内的经营情况,具体数据如下:
rowId |
x_pos |
y_pos |
年净利润(万元) |
1 |
34.25425 |
108.93318 |
85726 |
点矢量数据分层处理后,在服务器端制定各终端设备的地图显示策略。考虑到此地图应用的对象以移动设备为主,兼顾计算机,按步骤三,在数据服务器端建立如下配置表:
上面简单说明,终端设备尺寸采用常用的分辨率,放大比例指在屏幕范围内能显示全国区域范围时所推荐的地图比例尺;
用户终端要获取该企业的各地经营情况的点数据地图服务,是通过向数据服务器发送对该点矢量地图数据的请求信息,在本应用中某终端设备屏幕为10英寸,显示全国区域范围的地图比例为1:1000Km,其向服务器发送的数据如下【param1=“年净利润”param2=“1:1000Km”param3=“3.824473.2705 53.6244 135.2705”param4=“10x2560x1600”param5=“220.141.112.93 4312”】,服务器程序会建立的配置表,从该配置表里选择最接近该终端的地图数据来源“表VM_L2”,并根据终端可视化矩形区域“3.8244 73.2705 53.6244 135.2705”对表VM_L2进行空间查询,服务器端将此查询结果(此处仍为六条记录)数据发送给该用户终端。用户终端取得数据后,根据坐标点位置及属性值,便可在地图上进行点矢量数据的地图表示了,如图2所示:在图2的表示中,可以清晰的看到七大行政区域内的经营情况(不包括港澳台地区),从服务器传输的数据为6条记录;当该用户终端的地图比例为1:500Km时,该屏幕只能看到全国部分区域,同样按上述方法,得到图3表示:在此地图表示中,可以清晰的看到终端可视化区域范围内的各省级行政区域内的经营情况(以各省会城市为标注点),从服务器传输的数据为15条记录;在此应用中,各终端用户只需要了解到企业的华中,华北等6大区域经理及各省分区的经理的经营情况即可,无需了解到县或更基层的程度,因此,本案中该年净利润的专题点矢量数据地图应用满足需求。另外,该专题地图的访问人群数量较少,无需考虑分布式数据服务器的配置,按一般分层存储即满足应用需求。当然,在本应用中,由于用户数量有限,不足以体现出本文所述方法的优势;当用户数量激增,各种终端尽有情况下,可以更好的体现本方法的效率;并且,可以随时为任意数量的属性字段增加分层存储,具有很强的扩展性。
根据一种基于点矢量数据多层存储的快速地图表示方法,本发明还提供一种基于点矢量数据多层存储的快速地图表示系统。
如图4所示,一种基于点矢量数据多层存储的快速地图表示系统,包括数据服务器,所述数据服务器中设有存储模块、分层模块、地图数据配置模块、处理模块,
所述存储模块用于收集存储点矢量数据;
所述分层模块用于将点矢量数据按照按照应用要求进行分层,并将分层后的点矢量数据发送给存储模块进行存储;
所述地图数据配置模块用于根据终端设备的配置和地图显示放大比例为每一分层存储的点矢量数据建立地图数据配置表;
所述处理模块用于将终端设备的点矢量地图数据显示请求信息进行解析,得到相应的终端设备请求点矢量地图数据和终端设备配置数据,查找地图数据配置模块中的地图数据配置表,并从该地图数据配置表中选择与终端设备请求点矢量地图数据和终端设备配置数据相匹配的地图数据来源,将此查找结果数据发送给终端设备进行显示。
所述所述点矢量数据包括点地理位置信息(x_pos,y_pos)数据和属性字段。
将点矢量数据按照应用要求分层的存储在数据服务器端的分层数据表中的方法为,对地图中的区域进行等级分层;将每一等级分层的边界多边形范围内收集到的所有点矢量数据中的x_pos字段和y_pos字段分别求平均值,分别得到x_av_pos和y_av_pos;将每一等级分层的边界多边形范围内收集到的所有点矢量数据中的属性字段进行相应的运算,得到一个新的属性字段;将得到的x_av_pos值、y_av_pos值和新的属性字段分别对应的作为每一层的的点矢量数据中的点地理位置信息数据和属性字段,并分层存储。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。