建立于可视化地图组件的数据空间索引研究
2016-06-01王晓颖
王晓颖
(铁岭市测绘管理办公室,辽宁 铁岭 112000)
建立于可视化地图组件的数据空间索引研究
王晓颖
(铁岭市测绘管理办公室,辽宁 铁岭 112000)
摘要:根据地理空间要素的空间对象、地理位置或形状之间空间关系,按特定规律组合的空间数据结构,通过排除筛选不相干的对象,提升空间操作的效率和速度。此等空间索引建立了多种方法,各有不同。文章对规则网格索引进行改进,在首层划分的基础上,以相邻四个网格的对角线点为中心,逐级格网划分,形成多级交错式格网划分方法的空间索引。此种方法,在定位点匹配时间和精度上有一定进步,从实验结果中可以看出,采用基于多级交错式格网划分方法的空间索引方法,充分的使用空间信息,舒缓了格网划分密集导致的数据量增加和检索用时过长等矛盾,使实时路段搜索更加快捷高效,具有一定的优越性。
关键词:可视化;地图组件;空间索引;划分方法
0引言
目前,随着经济社会的迅猛发展,人们的生活水平不断提高,汽车这个交通工具已悄然走进千家万户,致使城市交通压力不断加大,为使人们利用私家交通工具快速搜索路径,车载导航必不可少。本文研究的就是车载导航的地图匹配。因单点定位的精度较低,为解决精度低的问题,就要对单层规则网格建立空间索引,在基础网格划分上继续划分,使搜索区域逐渐变小而提高精度。以铁岭市地图数据为例进行了实验,结果表明搜索更加简捷高效。
1分析空间索引建立方法
1.1数据空间索引设计
在已有资料的道路层上,均匀的将图层实际图幅尺寸划分为a×b个网格,使各个网格为正方形,设计网格边长为500 m×500 m。在此基础上,以每个网格对角线交点为中心,再次进行500 m×500 m的网格划分,按照此等方法依次划分。即多级交错式划分方法。
如果设图幅尺寸为A×B,a,b分别为A方向和B方向的网格数量,定位点坐标为(x,y),得到如下计算过程,假设定位点在第一次网格划分中的索引块号为D,二次划分网格索引块号为(D1,D2,D3,D4),则D1,D2,D3,D4的计算过程如公式1:
a=[A/50q]+1
b=[B/50q]+1
D=[x/50q]+[y/50q]×a+1
D1=a×b+[x/50q]+([y/50q-1])×(a-1)
D2=D1+1
D3=D1+(a-1)
D4=D3+1
(1)
式中:[ ]表示取整。
定位点的路段匹配区域(a=10)。此时的网格索引块号[D,D1,D2,D3,D4]=[6,18,19,31,32],对尺寸确定、坐标参数已知的正方形,经过数据比较,可明确定位点在250 m×250 m格网中的位置。
单点定位精度较差,默认误差为100 m,以定位点为圆心,以100 m为半径的区域内,在首层格网中区域可能覆盖了其它网格,首层网格局限性被忽视,使定位点在某条道路上时产生重大的错误。从上述说明可看出,定位点按上述过程进行单元格逻辑判断,匹配道路范围始终在500 m×500 m的区域内。大大的减小单点定位误差带来的影响,高标准的提取待匹配路段信息[1]。
1.2建立多级划分流程
取得地图最弱外接矩形的右上角和左下角的坐标,算出高度和宽度;依据高度与宽度计算首层格网纵向和横向上的网格数b和a;明确首层网格右上角坐标,首层网格的标识从01开始;顺次计算各层网格的右上角和左下角坐标,根据算得的坐标取得处于该区域内的数量及其路径,将得到的信息数据存入数据库中,直到每单层网格结束循环;计算二层网格纵向和横向的格网数b-1和a-1; 依次计算多层级网格的右上角和左下角坐标,获取该区域的数量和路径,并将得到的信息数据存入数据库中,所有的层级格网循环结束即可[2]。
2实现多级划分的方法
2.1建立空间索引
2.1.1设定坐标系
使用1980年西安坐标系,设置成高斯-克吕格投影,取得图形坐标系统,按照坐标系要求的标准设置对应的坐标系。
2.1.2道路图层获取
各幅地图含有很多图层,本文的研究只要道路层即可,测出道路层全部图元的数量。
2.1.3数据控制
鉴定后台服务数据中是否存在数据,存在则删除,不存在则保留。使用指针删掉首条信息记录,然后挪动到第二个,依次循环,直到删掉最后一条记录再返回,清空原数据库。
2.1.4确定空间索引
确定最弱外接正方形对象,获取右上角和左下角的坐标,算得正方形的高和宽,以500为单位计算纵向上的格网数b:
int mb=int(Height /wgwz)+1;
bool mb =false;
for(int i=0;i<= mb;i++)
{
if(Height -i* wgwz ==0)
{
m=int(Height / wgwz);
mb =true;
break;
}
}
if(! mb)
{
b=int(Height / wgwz)+1;
}
使用相同的计算方法得到横向的格网数a。
2.1.5描绘多层格网
得到需要图层,不得自动刷新,设置图层为可读写状态并描绘,使用循环语句,在纵向和横向上隔500 m绘出一条横线和竖线。对每层格网编号,首层格网编号从01开始,第二层网格编号从b×a+1开始,依次类推。最终让图层自动刷新后不可读写[3]。
2.1.6数据库入库
算出多层格网中全部格网的右上角和左下角坐标,获取每个格网通过的标识号和道路数后入库。
2.2分析数据获取的经过
通过单点定位点坐标,计算确定其所在的多级网格号,网格编号位置如图1所示:
图1 两层网格编号标识
N级网格划分如图2所示,将第一层D号网格再次划分成4×4格网,得到D格网中的各个小网格的右上角坐标。当定位点在D网格的不同位置时,有可能属于{D,D1,D2,D3,D4}不同的网格内,要经过计算确定定位点在D号格网中的小格网的编码而数据。
if(i_D==6 || i_D==7 || i_D==10 || i_D==11)
{
ListDu m=LiDeDu m_D;
LiDeIDGridArray=Dew iDt[ListDu m];
m_CalBase.striDg_to_array(LiDeIDGrid_D,LiDeDu m_D,LiDeIDGridArray);
}
定位点在5、9或14、15或8、12或2、3位置时,经过计算来划定定位点所处的500 m×500 m区域,保证获取数据准确的前提下,减少获取量,可提高效率。
图2N级网格划分
3方法实验
3.1实验经过
选取铁岭市地图数据进行了实验。
3.1.1准备数据
创建新表,确定1980年西安坐标系,设置投影。打开地图,在控制界面上增加dl图层,使其处于可编缉状态,把dl图层中增加的线段存在dl表中。在可视化地图组件中找到dl表并将其保存成.gst文件。
3.1.2建立索引
启动程序,打开地图,点选建立索引响应,系统自动建立空间索引,清空数据库后,生成新的数据库表,如图3所示。
图3数据库表
3.2结果验证
1)准确性方面,原方法对单个网格检索,准确性为57%,而采用多级交错式格网划分方法,其准确性为100%,可见本文研究的准确性很高。
2)数据量方面,传统格网划分方法有2680个网格单元,多级交错式格网划分方法则有1183个网格单元,数据库中存储的记录数大幅度减少。
3)检索方面,通过单元格的检索变化,也可看出数据检索效率大大提高。
4结论
通过对空间索引方法的研究,分析各自的优缺点,文章对规则网格索引进行改进,在首层划分的基础上,以相邻四个网格的对角线点为中心,逐级格网划分,形成多级交错式格网划分方法的空间索引。此种方法,在定位点匹配时间和精度上有一定进步,从实验结果中可以看出,采用基于多级交错式格网划分方法的空间索引方法,充分的使用空间信息,舒缓了格网划分密集导致的数据量增加和检索用时过长等矛盾,使实时路段搜索更加快捷高效,具有一定的优越性。
参考文献:
[1]隋心.GPS车辆导航系统中地图匹配算法研究[D].沈阳:辽宁工程技术大学,2007.
[2]龚强.GIS及空间数据组织管理[M].哈尔滨:哈尔滨地图出版社,2004:157-169.
[3]尹旭日,张武军.Visual C++环境下mapX 的开发技术[M].北京: 冶金工业出版社,2009:21-36.
中图分类号:P208
文献标识码:B
[作者简介]王晓颖(1979-),女,辽宁铁岭人,工程师,从事测绘业务工作。
[收稿日期]2016-01-14
文章编号:1007-7596(2016)03-0041-03