<!--[if !supportLists]-->1.         <!--[endif]-->

缩放等级与图幅数

Google maps的缩放等级是0-17共18个等级,比例尺与缩放等级是成反比的(比例尺越大地图越详细),其第17等级只有一幅世界地图,某一等级下所含地图数的计算公式为 2<!--[endif]-->^(17-n)^2(n为缩放等级)。

<!--[if !supportLists]-->2.         <!--[endif]-->

图幅生成与编号

可以假设Google maps在每一缩放等级下的地图上都建立了一个坐标系,坐标原点为(西经180度,北纬90度),正方向分别为向东向南,经度跨度为360度,纬度跨度为180度。一般情况下,为便于理解可以这么认为,若在缩放等级n的情况下,共需生成(2<!--[endif]-->^(17-n))^2副图片,其编号形如(x,y)(0<=x<= <!--[if !vml]-->2<!--[endif]-->^(17-n)<!--[endif]-->-1,0<=y<= <!--[if !vml]-->2<!--[endif]-->^(17-n)<!--[endif]-->-1)。

但由于制图区域的范围、形状和地理位置等的不同需要选择不同的投影方式,以减少投影成平面地图后的误差值。在世界地图中常用墨卡托投影绘制世界航线图、世界交通图与世界时区图;我国出版的世界地图多采用等差分纬线多圆锥投影,选用这个投影,对于表现中国形状以及与四邻的对比关系较好,但投影的边缘地区变形较大。根据不同的需要还有许多其它的投影方式,在此不再赘述,当然国家基本比例尺地形图的投影、分幅等,是由国家测绘主管部门研究制订,不容许任意改变的,另外编制小区域大比例尺地图,无论采用什么投影,变形都是很小的。

由于Google是面向全世界的,故其不同比例尺下并且相同比例尺下不同地区不同国家其投影方式都是不同的,我猜测为使整个世界范围内的地图达到相对的精确是以牺牲海洋两极等人烟稀少地图的变形为代价的,当然这也只是针对小比例尺下的地图,随着比例尺的不断放大这种投影上的差距会越来越小。

<!--[if !supportLists]-->3.         <!--[endif]-->

结论

每个切割的小图片是256*256(像素),常识来判断每个小图片代表的实际区域长宽之比应为2:1,但由于投影不同的存在,其实它是1:1的,至于中间过程怎么处理的我也没搞明白。

关于51ditu
<!--[if !supportLists]-->1.         <!--[endif]-->缩放等级

使用的比例级别总共有0-12级共13个级别,他们和实际的比例尺的对应关系分别是:

0级 -------------------- 1:2,500

1级 -------------------- 1:5,000

2级 -------------------- 1:10,000

3级 -------------------- 1:25,000

4级 -------------------- 1:50,000

5级 -------------------- 1:100,000

6级 -------------------- 1:250,000

7级 -------------------- 1:500,000

8级 -------------------- 1:1,000,000

9级 -------------------- 1:2,500,000

10级 ------------------- 1:5,000,000

11级 ------------------- 1:10,000,000

12级 ------------------- 1:50,000,000

简单的说,0级地图最详细,12级地图最简单。

以上是其官方发布的数据。

<!--[if !supportLists]-->2.         <!--[endif]-->

与Google的比较

51地图和Google maps都开放了API,有人结合两者的API把它们集成到一块,发现两者的经纬度吻合的非常好,我想这也主要是在大比例尺地图下只要两者的切割方法相同就可以做到的,故为了以后能更好的兼容并向领先者学习我们也争取达到这种比较好的吻合效果。

但分析两者的切割图片发现Google的是256*256(像素),而51ditu是128*128(像素)。如下图(1)、图(2)两幅图(两幅图均没有包含到最南端的曾母暗沙):

由于两者是采用的不同的投影方式,故地图在外形上有着比较大的差别,但应该注意的是每一小片上只是面积上的差别,通俗点来讲要有都有要没有都没有;由于两者每一幅图片是不等的,在实际中Google的每一图幅的面积应该是51ditu的4倍,但我们将两者放在同样大小的比例中发现两者吻合的比较好,由此也可推测随着比例的放大吻合程度将会更好,也就是说两者的切割方法是相同的,只不过导出图片的大小不同而已。

<!--[if !supportLists]-->3.         <!--[endif]-->

坐标系统

同样可以假设51ditu在每一缩放等级下的地图上也都建立了一个坐标系,不同的是其坐标原点为(西经11.25度,北纬0度),正方向分别为向东向北,跨度范围基本上就是覆盖中国的国土面积,即经度跨度为【67.5,135】,纬度跨度为【0,56.25】,而中国领土北起漠河以北的黑龙江江心(北纬53°30′),南到南沙群岛南端的曾母暗沙(北纬4°),跨纬度49度多;东起黑龙江与乌苏里江汇合处(东经135°05′),西到帕米尔高原(东经73°40′),跨经度60多度。

<!--[if !vml]-->


<!--[endif]-->

图(1)

<!--[endif]-->

图(2)

拟采用的方案
<!--[if !supportLists]-->1.         <!--[endif]-->方案简述

由于Google maps并没有提供大比例尺下的中国地图,故将其作为参照系不是一个很好的选择,为便于以后的比较,我们采用与51ditu相同的坐标系统,即编号方式。

如上图(2)所示,小图片12-1-7.png,是缩放等级12之下的一副图片,1是纬度方向上的序号,7是经度方向上的序号,从以上分析我们得知,缩放等级12之下,整个地球的切图共是 <!--[if !vml]--><!--[endif]-->* <!--[if !vml]--><!--[endif]-->张,在投影影响的基础上,每个图片的跨度为11.25*11.25度,图片12-1-7.png左下角点的经纬度为(67.5,11.25),很明显(67.5+11.25)/11.25=7,11.25/11.25=1。这样我们就得到了切割图片序号的计算公式,一般化如下:

在缩放等级为n之下,切割图片的边长(设为d)d=360度/ <!--[if !vml]-->2^(17-n)<!--[endif]-->,若小图片左下角坐标为(x,y),并设经度方向上的序号为bx,纬度方向上的序号为by,可得到其表达式为bx=(x+11.25)/d;by=y/d.。

由于我们只是针对中国范围,故取经度跨度为【67.5,135】,纬度跨度为【0,56.25】,在切割时可以适当延展,延展单位以11.25为准。

<!--[if !supportLists]-->2.         <!--[endif]-->命名规则、存储方案

在最大比例尺即缩放等级为0之下,取经度跨度为【67.5,135】,纬度跨度为【0,56.25】,可以计算出共需切割的图片数量为 <!--[if !vml]-->2^17<!--[endif]-->*(67.5/360)*<!--[if !vml]-->2^17<!--[endif]-->*(56.25/360)=131072*(3/16)*131072*(5/32)=112,442,880.缩放等级n之下,所需图片数量的计算公式为2^(17-n)<!--[endif]--><!--[endif]-->*(67.5/360)* <!--[if !vml]-->2^(17-n)<!--[endif]--><!--[endif]-->*(56.25/360)=15* <!--[if !vml]-->2^(25-2n)<!--[endif]-->(0<=n<=12)

以下为各比例尺之下的对应关系

缩放级别          比例尺              图幅数           存储空间(4K/幅)

0级 -------------------- 1:2,500 --------------------503,316,480 --------------------1920G

1级 -------------------- 1:5,000 -------------------- 125,829,120 --------------------480G

2级 -------------------- 1:10,000 --------------------31,457,180 --------------------120G

3级 -------------------- 1:25,000 --------------------7,864,320 --------------------30G

4级 -------------------- 1:50,000 --------------------1,966,080 --------------------7.5G

5级 -------------------- 1:100,000 --------------------491,520 --------------------1.875G

6级 -------------------- 1:250,000 --------------------122,880……………………………

7级 -------------------- 1:500,000 --------------------30,720……………………………

8级 -------------------- 1:1,000,000 --------------------7,680……………………………

9级 -------------------- 1:2,500,000 --------------------1,920……………………………

10级 ------------------- 1:5,000,000 --------------------480……………………………

11级 ------------------- 1:10,000,000 -------------------120……………………………

12级 ------------------- 1:50,000,000 -------------------30……………………………

由以上分析可见在大比例尺下若全部生成,其数量是很巨大的,考虑到某些大比例尺地图只是在某些地区或特殊要求时是必须的,我们没有必要全部生成,只需生成规定经纬度范围内的某一缩放级别下的地图。但即使这样小缩放级别下的图幅数量仍然不小,所以我们应该分区域在不同文件夹下存放。从级别n到级别n+1,图片数量后者是前者的4倍,即放大一个级别原级别一张图片裂变为四张,这样我们可以借鉴四杈树的组织形式,即若树的深度为N,深度为N-1的节点子节点均为30个,其余节点子节点为四个(当深度为1时,根结点子节点为5*6=30个),树的深度与缩放级别的对应关系为N=13-n。

树的节点的命名即为对应文件夹的名称,根结点即以缩放级别命名,叶节点对应图片以形如“bx-by.png”的形式命名,其它节点则是形如“0-0”、“0-1”、“1-0”、“1-1”的形式命名。

这样一来生成图片的时候就有一个路径判断和生成的问题。在确定了经度跨度为【67.5,135】,纬度跨度为【0,56.25】,并且在最小比例尺(缩放等级为12)之下我们已知图片是5*6张,即经度方向为6,纬度方向为5,这两个值很重要直接影响到我们的命名,当然前提变了这个值也随着变了。我们制定规则如下:

如前树的深度为N,经度方向上的序号为bx,纬度方向上的序号为by。则当1时,经度方向上的节点值Lng=ToString(((bx-7*N)/6)%2), 纬度方向上的节点值Lat=ToString((by/5)%2),则节点名称命名为Lng+”-”+Lat。

研究Google maps及51ditu的图片切割及存储方法相关推荐

  1. 浅谈WEBGIS运用栅格地图实现原理[更新:Google Maps带来的新型WebGIS设计模式]

    为什么要取这样的一个题目呢?主要是因为今天去了一家公司和他们谈了谈,本来是指望做兼职的,谈到最后当然是不成了.去谈的是地图制作(可兼职)一职,要求是地图制图经验,最后加了个有WEBGIS开发经验.本来 ...

  2. Android系统Google Maps开发实例浅析

    Google Map(谷歌地图)是Google公司提供的电子地图服务.包括了三种视图:矢量地图.卫星图片.地形地图.对于Android系统来说,可以利用Google提供的地图服务来开发自己的一些应用. ...

  3. Google Maps和GIS开发资源收集

    Google Maps JQuery Maps google map是怎样工作的 Google Map API基本概念 Google Maps API编程资源大全 google map限制地图缩放级别 ...

  4. Google Maps地图投影全解析

    原文出处:http://www.cnblogs.com/LionGG/archive/2009/04/20/1439905.html Google Maps.Virtual Earth等网络地理所使用 ...

  5. 【转】Google Maps Android API V2的使用及问题解决

    Google Maps Android API V2的使用及问题解决 Google Maps Android API V2使用及问题解决 说明 因为Google Maps的API版本更新,之前的一些教 ...

  6. maps-api-v3_利用Google Maps API发挥创意

    maps-api-v3 您已经设计了一个闪亮的新网站: 仔细选择颜色,版式和照片,以完美反映公司的品牌形象. 然后您的客户要求您添加地图. 当然,您可以使用地图构建"向导",例如每 ...

  7. 程序员就是这么皮,逆向Google maps snake游戏

    为了庆祝愚人节,Google在Google Maps应用安卓版和IOS版本中加入了snake游戏.Check Point研究人员对该应用进行了逆向破解--你不知道的是逆向竟然使用的是远程调试的方法. ...

  8. Android Google Maps V2之动态Polyline

    1,首先在Maps上添加路径Ployline的代码实现如下: public Polyline addMarker( List<LatLng> latLngs ){Polyline poly ...

  9. 极验滑块验证码破解与研究(二):缺口图片还原

    极验滑块验证码破解与研究(二):缺口图片还原 声明 一.缺口图片还原js分析 1. 为什么需要还原 2. 本篇文章需要用到的小工具 2.1. reres插件 3. 找到图片还原js入口函数 3.1. ...

  10. 【转】ArcGIS server如何将自己的小地图叠加到Google maps或者Virtual Earth上

    如果要将自己的数据与ArcGIS online的数据叠加使用,那么:1.应该选择后者为Primary Map Resource(有一种情况下,可以将自己的服务作为Primary Map Resourc ...

最新文章

  1. 驴友生涯的开始--香八拉路线精选
  2. 解决页面使用overflow: scroll在iOS上滑动卡顿的问题
  3. Uva 10537 过路费
  4. PEOPEO中国区总经理于景:当我谈交互设计时我谈些什么
  5. 7kyu Exes and Ohs
  6. PHP面试题:对于用户输入一串字符串$string,要求$string中只能包含大于0的数字和英文逗号,请用正则 表达式验证,对于不符合要求的$string返回出错信息
  7. RuntimeError: Cannot run the event loop while another loop is running
  8. Java 类加载总结
  9. dbms_DBMS | 并发控制
  10. CSDN markdown 数学公式指导手册
  11. 微信小程序打印实时日志
  12. 并(zhao)查(die)集详解以及其优化版本
  13. “香港一卡通” 內地見證開戶
  14. 数据分析之——Adventure项目分析
  15. 第十四届蓝桥杯大赛软件赛省赛-试题 B---01 串的熵 解题思路+完整代码
  16. linux grub2 配置文件,grub2配置文件
  17. mysql-community-server是什么?
  18. Karto的后端优化与回环检测功能对比测试与分析
  19. 小程序之修改单条数据
  20. 董树义 近代微波测量技术_微波和微波信号的分析方法介绍

热门文章

  1. C语言知识体系框架图
  2. 联合国首席AI顾问专访:我们期望AI应该是完美的,但这永远不会
  3. 3个步骤+1个模型,原来「数据分析」才是「增长黑客」的核心技能!
  4. 什么是驱动程序?为什么要用驱动程序?
  5. 微信小程序实战–集阅读与电影于一体的小程序项目(二)
  6. 删除WIN10桌面右键菜单多余项的方法
  7. Kinect传感器的硬件组成
  8. windows服务器查看lls证书
  9. webpack配置文件的抽离
  10. 通过关键词获取微博内容