一种多数据源地图下载方法

文档序号:9524303阅读:504来源:国知局
一种多数据源地图下载方法
【技术领域】
[0001]本发明涉及GIS技术领域,适用于为WebGIS应用开发提供基础地图底图数据及下载方法。
【背景技术】
[0002]随着地图应用越来越广泛,对于地图数据的需求也越来越多,然而具有准确坐标的数据属于国家机密,个人或者无测绘资质的公司不能随便保留地理数据;另一方面地理数据采购价钱昂贵,对于没有正式获得用户采购的项目,购买数据会增加项目的支出,没有数据,基于地图应用的功能又无法展示。基于此,地图数据成为做地图应用开发的共同瓶颈。而网络地图数据是经过加密的,因此不存在涉密问题,对于没有落地的项目,或者是只需要底图的一些地图应用,网络地图是最好的选择,然而很多情况下,项目应用的地方是不通互联网的,因此无法直接使用互联网在线地图,所以必须想办法把地图下载到本地部署使用。
[0003]现有的地图下载器基本都是付费的,仅有免费的下载工具稻哥,存在一些问题,如采用的是数据抓包的形式,比较被动,下载速度慢,只能下载google地图,且经常会有数据缺失问题。

【发明内容】

[0004]针对这些问题,本发明提供了一种多数据源地图下载方法,实现了 google在线地图、百度在线地图以及PGIS在线地图的缓存切片下载。采用主动解析计算的方式,下载速度大幅度提升,无数据丢失问题,重点是实现了 PGIS在线地图缓存切片的下载。
[0005]为实现上述目的,本发明采取如下技术方案:
[0006]一种多数据源地图下载方法,包含如下步骤:
[0007](1)获取下载范围的地图坐标;
[0008](2)根据地图坐标计算下载级别对应的像素坐标;
[0009](3)根据像素坐标计算图块坐标范围和需要下载的切片(图块)数量;
[0010](4)拼接为完整的缓存切片下载地址:根据图块坐标范围,通过二重循环,逐次取出图块坐标的行号和列号,拼接成完整的缓存切片下载地址进行下载。
[0011]运用多数据源地图下载方法下载地图缓存切片时,对于一般的地图缓存切片下载,例如google在线地图、百度在线地图的缓存切片下载过程,步骤(2)根据地图坐标计算下载级别对应的像素坐标的计算方法为:记地图上某地坐标为(X,y),对应级别的地图分辨率为 resolut1n,像素坐标为(px,py),则 px = x/resolut1n,py = y/resolut1n ;
[0012]步骤(3)根据像素坐标计算图块坐标范围和数量的计算方法为:记图块大小为tileSize,图块坐标为(tilex,tiley),则 tilex = px/tileSize,tiley = py/tileSize0假定下载范围地图坐标为(xl,yl)?(x2,y2),则下载范围地图坐标对应的图块坐标范围为(tilexl,titleyl)?(tilex2,tiley2),图块数量为 count = (tilex2_tilexl+l)*(tiIey2-tileyl+l)。
[0013]所述多数据源地图下载方法可用于下载PGIS地图缓存切片,在下载PGIS地图缓存切片时,步骤(2)根据地图坐标计算下载级别对应像素坐标的计算方法如下:记切片的原点坐标为(originx,originy),地图上某地的球面坐标为(x,y),初始分辨率为initResolut1n,地图层级偏移为k,下载级别为n,则某个下载级别的分辨率resolut1n=initResolut1n/Math.Power (2,k+n)(在开发里面,Math 代表是数学计算类,Power 是其中的一个方法,Math.Power (2,k+n)表示求2的k+n次方);
[0014]像素坐标(Px,Py)计算方法为:
[0015]Px = (x-originx)/resolut1n,
[0016]Py = (y-originy)/resolut1n。
[0017]对所述步骤(4)拼接为完整的缓存切片下载地址的过程进行循环检查,先在本地进行检测是否已经下载,若没有下载,则进行下载,若已经完成下载则循环至下一张图片的下载,直至循环结束。本发明采用主动解析计算的方式,大幅度提升了地图缓存切片的下载速度,无数据丢失问题,重点是实现了 PGIS在线地图缓存切片的下载。
【附图说明】
[0018]图1为多数据源地图缓存切片下载流程图
[0019]图2为PGIS下载界面图
【具体实施方式】
[0020]下面结合附图对本发明作更进一步的说明。
[0021]本发明提供了一种多数据源地图缓存切片下载方法。下载前确定要下载的在线地图类型:百度地图、google地图或者PGIS地图(公安警用GIS)。其中,PGIS在线地图运行在公安内网,百度地图或者google地图运行在互联网,需要保证在下载地图所在的网络类型,保持网络畅通。图1所示为多数据源地图缓存切片下载方法的一般流程:
[0022]首先,获取下载级别及下载范围。设置好下载级别,将地图浏览到需要下载的初始级别范围,启动任务开始下载。首先就是获取下载的坐标范围。这个范围是一个矩形框,选取矩形框的左下和右上坐标角点(minx,miny),(maxx,maxy)。
[0023]优选地,这里的矩形框直接选用当前窗口的显示区域。
[0024]其次,计算下载级别对应的像素坐标。根据下载级别及下载地图坐标范围计算像素坐标范围。根据获取的地图坐标范围计算出对应的像素坐标范围(pminx,pminy)?(pmaxx,pmaxy)。其中,pminx = minx/resolut1n (resolut1n 为对应级别的地图分辨率),相应地,可计算出pminy,pmaxx, pmaxy的值。
[0025]多数据源地图下载方法还可用于下载PGIS地图缓存切片,在下载PGIS地图缓存切片时,根据地图坐标计算下载级别对应像素坐标步骤的计算方法如下:记切片的原点坐标为(originx,originy),地图上某地的球面坐标为(x,y),初始分辨率为initResolut1n,地图层级偏移为k,下载级别为n,则某个下载级别的分辨率resolut1n=initResolut1n/Math.Power (2,k+n)(在开发里面,Math 代表是数字计算类,Power 是其中的一个方法,Math.Power (2,k+n)表示求2的k+n次方);
[0026]像素坐标(Px,Py)计算方法为:
[0027]Px = (x-originx)/resolut1n,
[0028]Py = (y-originy)/resolut1n。
[0029]再次,根据像素坐标范围计算图块坐标范围及切片数量,图块坐标范围为:(tileminx,tileminy)?(tilemaxx,tilemaxy);切片数量为:count = (tilemaxx-tileminx+1) * (tile
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1