Google地图分级
- 格式:xls
- 大小:26.50 KB
- 文档页数:1
Google 全国地图纠偏数据偏移数据火星坐标修正方案谷歌地图纠偏有两种精度:分别为0.01和0.001,精度为0.01:经纬度每变化0.01,取一次偏移值,共980万条,access文件约600mb,误差5~10米。
精度为0.001:经纬度每变化0.001,取一次偏移值,共9亿条,csv文件共20gb,几乎没有误差。
非常的精准,也是当前开发最牛的纠偏技术解决方案。
下面来说明如何使用国内最权威的技术方案:使用方法:1、假设原始gps数据为(73.528888,39.368888)2、查询数据库:SELECT * FROM offset where lng=73.52 and lat=39.36,得出offsetlat、offsetlng3、用原始的lat加上offsetlat,lng加上offsetlng,得出纠偏后的经纬度,可以直接在google地图上显示正确位置了。
以上方法,百度地图和谷歌地图通用,但是纠偏数据库是完全不同的,原因可以查看其他博客,有详细的说明!具体的获取方法可以QQ:2640056519,官方新浪博客/s/blog_ae91db6001014pi6.html我们平时用到的地球坐标系统,叫做WGS84坐标,国家保密插件,也叫做加密插件或者加偏或者SM模组,其实就是对真实坐标系统进行人为的加偏处理,按照几行代码的算法,将真实的坐标加密成虚假的坐标,而这个加偏并不是线性的加偏,所以各地的偏移情况都会有所不同。
而加密后的坐标也常被人称为火星坐标系统,这是我们的国家又一个伟大的发明,让国外的go-vern-ment和企业等,都看不懂我们的坐标系统。
其实很少有人知道国家保密插件问题,但作为导航电子地图产业或者汽车导航产业中的人,吧,你真实的坐标是这个,加密后就成了那个,导航电子地图上看到的就是那个,那么人家导弹要是攻击那个的时候,那么导弹就打不中我们的鸟巢啦,我们的鸟巢就安全了。
不过,个人担心这样加密后没有打中鸟巢,会不会打中水立方呢,可能是无心插柳柳成荫了。
[置顶][置顶]Google 地图切片URL地址解析分类:GIS 2012-05-19 11:56 8564人阅读评论(4) 收藏举报googleurlchromeserviceweb目录(?)[+]一、Google地图切片的投影方式及瓦片索引机制1.Google地图采用的是Web墨卡托投影(如下图),为了方便忽略了两极变形较大的地区,把世界地图做成了一个边长等于赤道周长的正方形(赤道长度为6378137米),原点在正方形中心,即经纬度为(0,0)处。
Web墨卡托投影的X,Y坐标取值范围为:[-20037508.3427892,20037508.3427892],对应的经度取值范围为[-180,180],对应的纬度范围则为[-85.05112877980659,85.05112877980659]。
具体投影解释请参考墨卡托投影:2.Google 地图的索引机制是TMS(Tile Map Service) 规范的一个变种,其地图瓦片如下图进行索引:Google 瓦片坐标系:把地球投影后形成的正方形划分为2 的level(缩放级别) 次幂个地图瓦片,原点在左上角,类似于像素坐标系;详细解释参见Google MapsAPI 文档。
TMS瓦片坐标系:TMS与Google的地图瓦片切割方法相同,不同的是TMS的原点在左下角。
转换关系:TMS 与Google 坐标系的X 、Z是相等的,Y 的转换关系为:Y(TMS) + Y(Google) = Math.pow(2,zoom) - 1注:关于投影和瓦片索引机制强烈推荐阅读:Tiles à la Google Maps: Coordinates, Tile Bounds and Projection,文中详细分析了地图瓦片涉及各类坐标的转换关系及具体算法,包括瓦片坐标(Google、TMS、Bing QuadTree)、像素坐标、WGS84 经纬度、Mercator 投影平面坐标等。
各级比例尺及空间分辨率例表文- 汉语汉字编辑词条文,wen,从玄从爻。
天地万物的信息产生出来的现象、纹路、轨迹,描绘出了阴阳二气在事物中的运行轨迹和原理。
故文即为符。
上古之时,符文一体。
古者伏羲氏之王天下也,始画八卦,造书契,以代结绳(爻)之政,由是文籍生焉。
--《尚书序》依类象形,故谓之文。
其后形声相益,即谓之字。
--《说文》序》仓颉造书,形立谓之文,声具谓之字。
--《古今通论》(1) 象形。
甲骨文此字象纹理纵横交错形。
"文"是汉字的一个部首。
本义:花纹;纹理。
(2) 同本义[figure;veins]文,英语念为:text、article等,从字面意思上就可以理解为文章、文字,与古今中外的各个文学著作中出现的各种文字字形密不可分。
古有甲骨文、金文、小篆等,今有宋体、楷体等,都在这一方面突出了"文"的重要性。
古今中外,人们对于"文"都有自己不同的认知,从大的方面来讲,它可以用于表示一个民族的文化历史,从小的方面来说它可用于用于表示单独的一个"文"字,可用于表示一段话,也可用于人物的姓氏。
折叠编辑本段基本字义1.事物错综所造成的纹理或形象:灿若~锦。
2.刺画花纹:~身。
3.记录语言的符号:~字。
~盲。
以~害辞。
4.用文字记下来以及与之有关的:~凭。
~艺。
~体。
~典。
~苑。
~献(指有历史价值和参考价值的图书资料)。
~采(a.文辞、文艺方面的才华;b.错杂艳丽的色彩)。
5.人类劳动成果的总结:~化。
~物。
6.自然界的某些现象:天~。
水~。
7.旧时指礼节仪式:虚~。
繁~缛节(过多的礼节仪式)。
8.文华辞采,与“质”、“情”相对:~质彬彬。
9.温和:~火。
~静。
~雅。
10.指非军事的:~职。
~治武功(指礼乐教化和军事功绩)。
11.指以古汉语为基础的书面语:552~言。
~白间杂。
12.专指社会科学:~科。
13.掩饰:~过饰非。
谷歌地球坐标大全谷歌地球坐标大全“无畏”号 CV-11 坐标:40°45'53.88"N,74° 0'4.22"W“杜鲁门”号 CVN75 坐标:36°48'53.25"N,76°17'49.29"W“华盛顿”号 CVN73 坐标:36°57'32.90"N, 76°19'45.10"W“林肯” 号 CVN72 坐标:47°58'53.54"N,122°13'42.94"W“艾森豪威尔”号 CVN69 坐标:36°57'27.13"N, 76°19'46.35"W“尼米兹”号 CVN68 坐标:32°42'47.88"N,117°11'22.49"W“肯尼迪”号 CVN67 坐标:30°23'50.91"N, 81°24'14.86"W“小鹰”号 CV63 坐标:35°17'29.66"N,139°39'43.67"E“约克镇”号坐标:32°47'25.40"N,79°54'30.11"W“星座”号坐标:47°33'11.30"N,122°39'17.24"W“独立”号坐标:47°33'7.53"N,122°39'30.13"W“游骑兵”号坐标:47°33'10.63"N,122°39'9.53"W“佛瑞斯特”号和“萨拉托加”号坐标:41°31'39.59"N,71°18'58.70"W “美利坚”号坐标:39°53'6.36"N,75°10'45.55"W“黄蜂”号坐标:37°46'21.80"N,122°18'10.80"W复活节岛27° 6'54.18"S 109°23'43.00"W27° 6'32.70"S 109°23'25.74"W27° 8'2.96"S 109°25'37.90"W27° 8'0.08"S 109°25'39.46"W27° 8'23.54"S 109°25'39.18"W解放军位于河南的某基地33°41'4.68"N 112°53'34.40"E神秘的海底涂鸦9°27'9.31"N 118°36'55.60"E一处造型很奇特的树林38°27'14.86"N 75°58'23.91"W迪拜世界岛25°13'11.55"N 55° 9'53.18"E奇怪的圈圈群7°56'17.96"S 14°22'31.29"W海豚岛43°34'12.69"S 146°31'47.00"E宝马公司在德国慕尼黑的总部大楼48°10'36.38"N 11°33'34.73"E美丽的大脚34°54'35.02"N 111°46'21.58"WFirefox 麦田圈45° 7'25.63"N 123° 6'50.27"W巴勒斯坦的奇怪图案31°55'44.42"N 35°23'42.62"E英国的田间白马51°22'21.73"N 1°50'52.86"W澳大利亚神秘三角地30°30'38.72"S 115°22'56.28"E田里一个巨大的人像43°49'58.87"N 12°40'26.78"E核武器试验场37°10'37.22"N 116° 2'47.65"W麦田怪圈53°31'54.25"N 1°21'23.59"W美国的飞机坟场32°09'19.17N 110°49'46.69W朱美拉棕榈岛25° 6'58.27"N 55° 8'3.48"E珍珠港亚利桑那号纪念馆21°21'53.58"N 157°56'59.57"W我国新疆地区的一个可能是武器测试的场地40°27'28.61"N 93°18'50.05"E臭名昭著的靖国神社!35°41'37.34"N 139°44'32.98"E14°42'9.92"S 75° 8'3.52"W纳斯卡线条上飞行的飞机14°41'32.37"S 75° 8'57.09"W纳斯卡线条——鸟14°41'51.29"S 75° 7'35.85"W纳斯卡线条——鹰14°42'25.63"S 75° 8'19.43"W纳斯卡线条——猴子(只能看清螺旋型的尾巴)大三角37°39'56.22"N116° 1'30.90"W 美国内华达州南部台湾的机场24°01'26.27"N,121°37'16.37"E 花莲机场(2个):训练基地24°51'14"N,121°14'08"E 桃园机场很多直升机22°47'30"N,121°10'51"E 台东机场:第七战术联队22°40'29"N,120°27'18"E 屏东机场一:第六反潜/空运大队22°41'50"N,120°29'04"E 屏东机场二23°27'37"N,120°23'26"E 嘉义机场:第455战斗机联队24°15'36"N,120°37'32"E 台中机场:好多战斗机啊24°48'46"N,120°56'10"E 新竹机场:第二战斗机联队25°04'55"N,121°14'24"E 桃园国际机场美国51区域37°14'39.05"N115°49'11.93"W据说还是美国军事方面的什么东西37°29'19.42"N 116°13'39.14"W094 36°06'38.72"N 120°35'03.48"E4°14'59.94"N 73°32'39.31"E 马尔代夫?天堂岛老美神秘设施37°54'59.34"N116°47'0.88"W31°23'44.95"N118°20'26.19"E 两架沿长江飞行的战斗机31°41'38.66"N118°46'19.28"E 中国境内A320客机43°42'23.65"N 7°24'29.68"E 直升飞机。
谷歌地图的级别与对应比例尺及分辨率探究谷歌推出的免费在线卫星地图、电子地图也已经有些年头了,无论是出于个人爱好还是商业目的,大家都在分享谷歌提供的这份丰盛的免费午餐。
至于如何获取谷歌的免费地图,这个不用多讲,百度一下就能找到各种谷歌地图下载器工具。
以截屏方式获取的,或直接从谷歌服务器上下载的,收费的,免费的,应用尽有,这个不是今天我们要讨论的主题!谷歌的免费地图是容易下载的,但没有哪款地图下载器工具是有比例显示的,这个问题很严重!即便是简单的应用,如打印个挂图什么的也需要有比例尺作参照,如果要作深层次的专业应用,比例尺就更重要了,是必须的,也是必不可缺少的。
目前谷歌地图大概分为22个层级(国内一般只到20级,国外有20级以上的),每个层级比例尺不相同,如果我们能知道每个图层的比例尺对于我们下载来说也是件很轻松的事,可以直接选择下载适合自已应用比例的层级,何乐而不为?为了方便他人,也方便自已,今天就来分析解决这一问题:探究谷歌地图各层级的对应比例尺和分辨率!一、什么是比例尺?比例尺是表示图上距离比实地距离缩小的程度,也叫缩尺。
公式为:比例尺=图上距离/实地距离。
比例尺有三种表示方法:数字式,线段式,和文字式。
三种表示方法可以互换。
根据地图的用途,所表示地区范围的大小、图幅的大小和表示内容的详略等不同情况,制图选用的比例尺有大有小。
地图比例尺中,通常大于二十万分之一的地图称为大比例尺地图;比例尺介于二十万分之一至一百万分之一之间的地图,称为中比例尺地图;比例尺小于一百万分之一的地图,称为小比例尺地图。
在同样图幅上,比例尺越大,地图所表示的范围越小,图内表示的内容越详细,精度越高;比例尺越小,地图上所表示的范围越大,反映的内容越简略,精确度越低。
一般讲,大比例尺地图,内容详细,几何精度高,可用于图上测量。
小比例尺地图,内容概括性强,不宜于进行图上测量。
二、什么是分辨率我们这里探讨的分辨率是指卫星影像分辨率。
Google Earth三维地图服务使用详解Google于2004年11月收购了美国Keyhole公司,推出了,让人耳目一新。
但Google并未就此止步,在2005年6月底,推出了桌面工具Google Earth,把地球放到了每个人的桌面上。
让你坐在电脑前,就可以在名川大山间翱翔,在摩天楼群中俯瞰。
关于这款软件的使用条件,只要内存够256M,CPU够1G,能宽带上网就差不多了。
安装完成后,图标如下双击图标,打开GoogleEarth主界面对于界面中的按钮,我们下面逐个试用。
“Fly To”和“Local Search”就不具体介绍了,直接在搜索框里输入英文地名,就会给出一堆结果,然后在里面筛选自己要的东西。
这里我们要看一下“Directions”,它可以用来显示两个地点之间的行车路线,为了方便,在这里我们以Google公司到Yahoo公司的路线为例(两公司相距很近,如下图)。
我们单击Google地标,选取“From here”。
再单击Yahoo地标,选取“To here”这时,我们在“Directions”(驾车指南服务)里就看到,路线的起讫坐标已自动填入,点击“Search”按钮,路线一目了然(下图中的紫色细线)。
大家发现,在图中有很多文字,干扰了我们的视线,是什么意思呢,那我们就来沿这条路来走一遍。
上图表示在Google公司起程,沿Amphitheatre Pky街道向东行驶,到N Shoreline Blvd大道时向右转。
右转,上US-101号公路(可能相当于国道吧),往San Jose市方向行驶。
拐上CA-237号公路(可能相当于省道。
CA是加利福尼亚缩写)由于CA-237D在这里是高架路,所以会提醒你由通往Mathilda Ave方向的匝道下来,并在前方向左拐上Mathilda Ave大道。
向左转向第一大道,片刻工夫即到目的地Yahoo公司。
怎么样,够便捷吧,出门前就把路线定好。
不过驾车指南服务仅在欧美地区有效,因为这里数据最为齐全,中国车友暂时无法享受。
GoogleMapApi⾕歌地图接⼝整理⼀:基本知识:1. 使⽤⾕歌地图 API 的第⼀步就是要注册⼀个 API 密钥,需要注重⼀下两点:1.假如使⽤ API 的页⾯还没有发布,只是在本地调试,可以不⽤密钥,随便⽤个字符串代替就可以了。
2.API 密钥只对⽹站⽬录或者域有效。
对不同域的⽹页,需要⽤这些域分别注册不同的密钥2.页⾯引⽤javascript⽂件<script src="/maps?file=api&hl=zh-CN&v=2&key=abcdefg" type="text/javascript"></script>:也可以⽤,假如你需要在地图上显⽰⼤陆以外的具体地图,就⽤ 2.file=api 这个是请求API 的JS ⽂件⽤的,固定的格式。
3.hl=zh-CN这个是在设定地图上除了地图图⽚以外的诸如控件名称、版权声明、使⽤提⽰等所需要显⽰⽂本的语⾔版本时候⽤的,假如没有指定这个参数就使⽤ API 的默认值,对 来说,默认是中⽂简体 默认的是英⽂。
4. v=2这个是⽤来指定需要导⼊的 API 类库的版本号,可以有四种设定⽅式:v=2.s 稳定版本,更新最慢,但是最可靠;v=2 当前版本(只⽤主版本号),更新速度和可靠性介于 s 和 x 之间v=2.x 最新版本,更新最快,包括最新功能,可能没有当前版本可靠;v=2.76 指定具体版本。
不建议使⽤。
注:⽬前⾕歌地图 API的主版本号是2,当API升级时旧版本只能继续使⽤⼀个⽉,所以要及时更改主版本号,版本号改变会在Google Code和Maps API讨论组发布相关信息5.key=abcdefg这个是设定你注册的 API 密钥.⼆:核⼼类:google地图API主要包括:地图类(GMap2)、标记类(GMarker)、标记选项类(GMarkerOptions)、折线类(GPolyline)、经纬度(GLatLng)、命名空间(GEvent)、坐标类(GPoint)、控件的⼤⼩类GSize、 interface(GControl)、地图类型类(GMapType)、地图上⾯的图标类(GIcon)、窗体类(GInfoWindow)、窗体选项类 GInfoWindowOptions)、接⼝GOverlay、枚举GMapPane等等注:标记和折线都是地图的覆盖物1.GMap2:地图类,下⾯实例化⼀张地图:var map= new GMap2(container: DOM_Div,opts: Options);构造函数的参数如下:参数是否必要值类型定义container 是 DOM_Div DOM元素,是个Divopts 可选 Options 构造函数选项GMap2包含的⽅法:1.设置状态的⽅法:enableDragging():设置地图可以被拖动。
谷歌卫星影像地图各级比例尺及空间分辨率列表
级别实际距离像素图上距离图像分辨率比例尺空间分辨率第2级5000公里70 2.47厘米72dpi2亿:171公里第3级2000公里55 1.94厘米72dpi1亿:136公里第4级2000公里115 4.06厘米72dpi5千万:117公里
第5级1000公里115 4.06厘米72dpi 2.5千万:19公里第6级500公里115 4.06厘米72dpi 1.2千万:14公里第7级200公里91 3.21厘米72dpi6百万:12公里第8级100公里176 6.21厘米72dpi160万:1568米第9级50公里91 3.21厘米72dpi155万:1549米第10级20公里72 2.54厘米72dpi80万:1278米第11级10公里72 2.54厘米72dpi40万:1139米
第12级5公里72 2.54厘米72dpi20万:169米第13级2公里57 2.01厘米72dpi10万:135米第14级2公里118 4.16厘米72dpi5万:117米第15级1公里118 4.16厘米72dpi 2.5万:18米
第16级500米118 4.16厘米72dpi 1.2万:14米
第17级200米93 3.28厘米72dpi2300:1 2.15米第18级100米93 3.28厘米72dpi3000:1 1.07米
第19级50米93 3.28厘米72dpi1500:10.54米第20级20米74 2.61厘米72dpi800:10.27米
第21级10米72 2.54厘米72dip393.70(1000/2.54)0.138(10/72)米/像素第22级5米72 2.54厘米72dip196.85(500/2.54)0.0694(5/72)米/像素。
Google Map应用3G移动开发Google Map介绍Google地图(英语:Google Maps)是Google 公司提供的电子地图服务,包括局部详细的卫星照片。
能提供三种视图:一是矢量地图(传统地图),可提供政区和交通以及商业信息;二是不同分辨率的卫星照片(俯视图,跟Google Earth 上的卫星照片基本一样);三是后来加上的地形视图,可以用以显示地形和等高线。
它的姊妹产品是Google Earth,一个桌面应用程序,在三维模型上提供街景和更多的卫星视图及GPS定位(付费版本)的功能,但没有前述的矢量视图和地形视图功能。
Google Map介绍Google提供地图,有了地图我们的很多应用软件都更加丰富。
我们可以搜索我们附近饭店、影院和交通路线等等。
获取Google Map API Key在模拟器中正常使用Google Map之前需要提供一个APIKey (密钥),否则在MapView中只能看到网格,没有任何地图信息。
步骤:找到keystore证书文件生成MD5认证指纹生成Google Map API Key keystorekeystore是一个密码保护的文件,用来存储密钥和证书。
Eclipse提供了一个临时debug.keystore文件。
而实际发布要自己生成。
生成MD5认证指纹启动Command Prompt. 使用Keytool命令(keytool.exe存放在Java/bin目录下)。
完整的命令行:C:\>keytool -list -keystore (回车输入密码:android) 生成Google Map API Key进入/intl/zh-CN/android/maps-api-signup.html这是Google Map API Key在线生成网站。
输入自己的MD5认证指纹确保具有Google账户并且登录!!Copy Google Map API Key<LinearLayout xmlns:android="/apk/res/android"android:id="@+id/main"android:layout_width="fill_parent"android:layout_height="fill_parent"><com.google.android.maps.MapViewandroid:layout_width="fill_parent"android:layout_height="fill_parent"android:enabled="true"android:clickable="true"android:apiKey="0obloo9wXdp1XPk8Y8SpXDxDMMZwYmYyOo8OZ0Q"/></LinearLayout> 创建Google Map程序选择Google API继承MapActivity在AndroidManifest.xml中增加internet访问权限在AndroidManifest.xml中增加Google地图函数库选择Google API Google Map API是GoogleAPI一部分,它不属于Android,是Android的附件(add-ons)。
第39卷第3期2019年5月海㊀洋㊀测㊀绘HYDROGRAPHICSURVEYINGANDCHARTINGVol 39ꎬNo 3Mayꎬ2019收稿日期:2018 ̄04 ̄19ꎻ修回日期:2018 ̄07 ̄18基金项目:河南省空天地一体化环境信息监控系统(一期)(豫财单一采购-2017-205)ꎮ作者简介:赵永辉(1974-)ꎬ男ꎬ河南温县人ꎬ高级工程师ꎬ主要从事环境监控及信息化研究ꎮDOI:10.3969/j.issn.1671-3044.2019.03.015谷歌地图关键技术剖析与应用赵永辉1ꎬ段云龙2ꎬ郭新望2ꎬ张㊀明1(1 河南省环境监控中心ꎬ河南郑州㊀450004ꎻ2 中国电子科技集团公司第二十七研究所ꎬ河南郑州㊀450047)㊀㊀摘要:以研究和分析谷歌地图的设计与运行机制为目标ꎬ深入分析了谷歌地图卫星影像的投影模型㊁瓦片数据组织模型㊁数据请求与响应流程㊁瓦片数据URL地址解析等关键技术ꎬ并设计了一套可以多线程的方式下载瓦片影像数据㊁采用OpenGL渲染瓦片影像㊁并按照MBTiles规范使用SQLite数据库存储瓦片影像的卫星影像下载器ꎮ实践效果表明ꎬ下载器可实现对谷歌地图卫星影像数据的可靠下载㊁渲染和存储ꎬ验证了关键技术的正确性和有效性ꎮ关键词:谷歌地图ꎻ卫星影像ꎻ瓦片影像ꎻWeb墨卡托投影ꎻ影像下载器㊀㊀中图分类号:P237文献标志码:B文章编号:1671 ̄3044(2019)03 ̄0067 ̄041㊀引㊀言GoogleMaps是谷歌公司在2006年推出的一款基于B/S架构的可以在网页浏览器上搜索㊁浏览地图的服务软件ꎬ它与GoogleEarth采用相同的地图数据源ꎮGoogleMaps地图数据可分为3种:矢量地图(map)㊁卫星影像(satellite)和地形(terrain)的数据ꎮGoogleMaps的卫星影像和矢量地图数据都是以分幅栅格图片 瓦片(tile)的形式传输的[1]ꎮGoogleMaps数据服务器既支持浏览器客户端的空间数据请求服务ꎬ还支持在用户开发的应用程序中请求所需的卫星影像数据ꎮ崔金红[2]等系统地研究了Google地图的算法及实现ꎻ巫细波[3]等从代码的层次阐述GoogleMaps的运行机制以及如何获取GoogleMaps的免费地理数据ꎻ寇曼曼[4]等从GoogleMaps的坐标系㊁Web墨卡托投影方式㊁地图瓦片URL组织结构等方面系统地研究了谷歌地图的数学和组织模型ꎻ张业舟[5]等从GoogleMaps瓦片的组织结构出发ꎬ探讨了GoogleMaps内部的运行机制ꎻ李长春[6]系统地讨论了Web墨卡托投影的原理ꎬ并设计和实现了一套桌面地理信息系统ꎮ本文对GoogleMaps的投影模型㊁瓦片数据组织模型㊁数据请求与响应流程㊁瓦片数据URL地址解析等关键技术进行了深入分析ꎬ并设计了一套卫星影像数据下载器ꎬ验证了关键技术的正确性和有效性ꎮ2㊀谷歌地图关键技术剖析2 1㊀谷歌地图数据投影模型GoogleMaps所使用的地图投影被称作Web墨卡托坐标系(WebMercatorꎬ见图1)ꎬ是谷歌在2005年推出的ꎬWeb墨卡托坐标并不是地图投影学中的墨卡托投影(正轴等角切圆柱投影)ꎬ而是基于墨卡托投影的一种近似坐标系统ꎬ它与常规墨卡托投影的主要区别就是把地球看作球体而非椭球体ꎬ二者的相同之处是都采用正轴切圆柱进行投影ꎮWebMercator投影已经成为WebGIS领域使用最广的坐标系统ꎬ如天地图[7]㊁百度地图[8]㊁高德地图[9]ꎬ以及OpenStreetMap[10]和微软BingMap[11]等在线地图服务商都采用球面Web墨卡托坐标参考系ꎮ图1㊀Web墨卡托投影示意图在进行Web墨卡托投影时ꎬ把地球椭球体假设为正球体ꎬ以赤道作为标准纬线ꎬ本初子午线作为中央经海㊀洋㊀测㊀绘第39卷线ꎬ两者交点为坐标原点ꎬ向北向东为正ꎬ向南向西为负ꎮ取地球赤道平均半径为Re=6378137 0000000mꎬ则赤道周长为2πR=40075016 68557848mꎬ因此投影坐标系中X轴的取值范围:[-πRꎬπR]ꎬ同时有a=b=Reꎬ第一偏心率e=0ꎮ此外ꎬ考虑到靠近两极地区投影面积变形较大ꎬ且两极地区多为无人区域ꎬ特将Y轴的取值范围也限定在[-πRꎬπR]之间ꎬ对应地理坐标ʃ85 05ʎꎬ可删除南北两极的部分无人区域ꎮWebMercator投影公式如下(公式中θ为经度ꎬϑ为纬度):x=Reˑθy=ReˑLn(tan(π4+ϑ2))ìîíïïïï(1)㊀㊀这样处理有两个好处:一是使整幅地图为正方形ꎬ便于将多分辨率影像金字塔瓦片制作为正方形ꎬ降低像素坐标㊁瓦片坐标和地理坐标之间换算算法的复杂度ꎻ二是去除了两极面积变形较大的无人区域ꎬ投影处理后的纬度范围为ʃ85 05ʎꎬ经度范围为ʃ180ʎꎮ2 2㊀谷歌地图瓦片数据组织模型GoogleMaps拥有全球范围的多比例尺㊁多分辨率遥感影像㊁矢量地图和DEM模型等海量空间数据ꎮ为了提高用户请求的响应速度ꎬ减少前台实时渲染的压力ꎬ保持地图浏览操作的流畅性ꎬGoogleMaps采用了影像金字塔缓存技术将影像等栅格数据以金字塔瓦片的形式组织并存储在文件系统的目录下ꎮ该技术采用四叉树的剖分方式对全球范围(纬度[-85 05ʎꎬ85 05ʎ]ꎬ经度[-180ʎꎬ180ʎ])进行分层㊁分块的切分和重采样ꎬ建立一系列不同分辨率层次的切片文件集合并分级存储ꎮ分层级别的首层编号为0ꎬ以1位步进递增ꎬ支持的最大分层数为22层ꎮ在每一级别分层中ꎬ采用规则的正方形格网进行数据的分块ꎬ分块后的每一块空间区域为一个正方形区域ꎬ称为瓦片(tile)ꎬ每一个瓦片对应的数据最终存储为按照特定文件索引目录结构定义下的一个切片文件ꎮ初始等级0级时ꎬ整个地球只投影在一张256pxˑ256px的影像上ꎬ此时256px代表了2πRmꎬ也即每个像素代表距离为2πR/256=156543 033928041mꎮ地图的缩放是由四叉树实现的ꎬ地图每放大一个级别则原来的一张256pxˑ256px影像分裂成4张256pxˑ256px的影像ꎬ比例尺则增大为原来的2倍ꎬ分辨率变为原来的4倍ꎬ随着缩放等级的增大ꎬ瓦片自顶向下呈几何级增长ꎬ形成一个金字塔状(见图2)ꎬ级别越高ꎬ分辨率越高ꎬ金字塔最底层即原始影像ꎬ影像分辨率最高ꎬ因而也最清晰ꎮ图2㊀GoogleMaps瓦片数据组织模型示意图在某一层级中ꎬ每一个瓦片均可以通过行号㊁列号来标识其在该层级中的位置ꎮ分块的起始点为(-180ʎꎬ85 05ʎ)ꎬ对应瓦片的行㊁列索引号为(0ꎬ0)ꎮ在GoogleMaps的影像金字塔结构中ꎬ某个瓦片可以通过层级㊁行号和列号来定位ꎬ即(rowꎬcolumnꎬlevel)ꎮ其中ꎬrow为瓦片的行号ꎻcolumn为瓦片的列号ꎻlevel为瓦片所在的层级ꎮ2 3㊀谷歌地图数据请求与响应流程谷歌地图数据请求与响应流程如下:(1)用户在浏览器进行拖动㊁缩放等漫游操作ꎬ或创建新的下载任务ꎻ(2)客户端将所需的瓦片的层级和范围封装成请求参数ꎬ通过HTTP协议发送给GoogleMaps的数据服务器ꎻ(3)GoogleMaps服务器验证和筛选收到地图数据请求ꎬ然后解析数据请求URLꎬ将相应瓦片的数据以HTTP协议返回到客户端ꎻ(4)客户端在收到服务器返回的响应数据后ꎬ对响应数据进行解析ꎬ将瓦片数据在用户窗口中更新和渲染ꎬ见图3ꎮ图3㊀影像数据请求与响应流程示意图2 4㊀谷歌地图瓦片URL地址一个典型谷歌地图卫星影像瓦片请求链接URL如下所示:http://mt0 google cn/vt?n=404&lyrs=s&hl=zh-CN&gl=cn&v=191&x=50&y=100&z=8ꎮ当客户端请求瓦片数据时ꎬ便会将所请求瓦片86第3期赵永辉ꎬ等:谷歌地图关键技术剖析与应用的层级㊁行㊁列号作为请求参数填充到上述的瓦片URL地址中ꎬ通过HTTP协议发送给GoogleMaps的服务器以获得响应ꎮ3 应用设计与实现为了验证对谷歌地图关键技术剖析的正确性和有效性ꎬ本文设计了可下载谷歌地图卫星影像瓦片数据的地图下载器的应用程序ꎮ3 1㊀下载器典型运行流程设计3 1 1㊀下载器初始化运行设计谷歌地图卫星影像下载器启动时ꎬ程序将进行初始化操作ꎮ窗口在初始化更新时会完成OpenGL顶点着色器和片段着色器的初始化工作ꎬ同时构造影像瓦片渲染类对象ꎬ其内部创建和启动下载任务系统对象ꎬ下载任务系统对象再创建和启动指定数量的影像瓦片下载工作线程ꎮ当窗口创建并显示时ꎬ按以下步骤执行:①程序按照初始化设置的窗口的宽度和高度获得客户区的宽度和高度(单位:像素)ꎬ并依据Web墨卡托坐标系X轴的取值范围(单位:m)计算出客户区一个像素所代表的地面距离ꎬ即像素分辨ꎻ②依据该分辨率在GoogleMaps的金字塔层级中得到合适的层级ꎬ并以本初子午线和赤道的交点(0ꎬ0)为客户区中心ꎬ再以所选层级和该层级的分辨率重新计算客户区所能展示的地理范围ꎻ③根据Web墨卡托投影公式计算客户区左上角和右下角所能表示的地理坐标在所选层级中的瓦片行㊁列号ꎻ④所有瓦片行㊁列号和层级为参数构建待下载任务列表ꎮ程序以下载任务列表中的瓦片信息为参数向谷歌地图数据服务器请求瓦片数据ꎮ当程序获得服务器返回的瓦片数据后ꎬ即可提取出像素数据并渲染到客户区窗口ꎬ同时将本次请求的所有瓦片信息保存到缓冲区列表中ꎮ3 1 2㊀用户漫游操作设计用户执行地图缩放操作时ꎬ程序根据当前的金字塔层级ꎬ并结合鼠标滚轮滚动的角度依次增加一级或者减小一级ꎬ并根据当前窗口的大小和显示区域范围重新请求新的瓦片数据并绘制显示ꎻ用户执行地图平移操作时ꎬ程序根据平移前㊁后窗口显示区域范围和当前瓦片层级重新计算所需的瓦片行㊁列号范围ꎬ并重新请求新的瓦片数据ꎮ为了降低网络传输压力和瓦片刷新延迟ꎬ程序在请求所需的瓦片时并不是全部重新请求下载ꎬ而是对于当前所需的每一块瓦片ꎬ先查询瓦片缓冲区数组中是否存在ꎬ如果已经存在ꎬ则将其取出并直接绘制ꎻ如果不存在ꎬ则将所需要的瓦片数据加入到下载任务队列中ꎬ先完成下载ꎬ下载成功后再通知客户区渲染线程进行绘制ꎮ3 1 3㊀多线程下载任务系统设计当用户通过框选区域创建下载任务时ꎬ一个现实的问题是待下载的瓦片总量众多ꎮ为此ꎬ本文采用生产者-消费者的并行开发编程模型来完成瓦片下载工作ꎮ该模型是通过一个容器来解决生产者和消费者的强耦合问题ꎮ生产者和消费者彼此之间不直接通讯ꎬ而通过任务队列来进行通讯ꎬ生产者生产任务后不用等待消费者处理ꎬ直接扔给任务队列ꎬ消费者不找生产者要任务ꎬ而是直接从任务队列里取ꎮ其中ꎬ互斥器㊁信号量和事件等Windows核心对象在该模型中起着控制同步和数据同步等作用[12]ꎮ当用户通过鼠标右键在客户区框选目标区域创建下载任务时ꎬ程序可将框选的矩形区域的左上角坐标㊁右下角坐标ꎬ以及指定的下载瓦片的开始级别和结束级别(默认为0~22)作为参数信息传递给生产者线程ꎬ生产者将上述信息封装成任务信息对象并加入下载任务列表中ꎮ作为消费者的任务下载线程启动之后就开始一直循环检查任务列表是否有待下载瓦片ꎬ如果有则取出任务ꎬ进行瓦片数据的下载ꎬ下载完成后将瓦片插入数据库ꎮ3 2㊀谷歌地图瓦片渲染在渲染影像瓦片时ꎬ程序以当前窗口客户区的宽度和高度构造4个顶点坐标ꎬ存入顶点数组ꎬ并指定纹理映射坐标ꎮ为了提高绘制效率ꎬ减少创建OpenGL对象和频繁调用OpenGL渲染API接口ꎬ当所需的瓦片数据下载到本机内存时程序直接从影像瓦片文件中提取出像素数据ꎬ将像素数据作为子纹理通过调用glTexSubImage2D()接口更新到一张大二维纹理对象中ꎬ再将此大二维纹理对象以正交投影的方式映射到前面创建的顶点数组上ꎬ以此完成在窗口客户区的瓦片纹理绘制工作ꎮ3 3㊀谷歌地图瓦片存储卫星影像下载器解析得到卫星影像瓦片数据后ꎬ一方面将瓦片数据在用户窗口中拼接渲染ꎬ另一方面进行本地存储ꎬ以便离线使用ꎮ考虑到大量小瓦片文件的磁盘碎片问题㊁访问效率以及SQLite数据库的轻量型㊁单一文件㊁跨平台和内存数据库等优点[13]ꎬ本文采用MBTiles[14]存储规范将大量的地图瓦片存储到一个SQLite数据库文件中ꎬ通过瓦片的ID号在不同三维坐标系中引用瓦片数据ꎮ当需要访问瓦片数据时ꎬ程序将直接基于当前用户窗口大小㊁中心坐标和缩放级别ꎬ确定所需要的瓦片层级㊁行和列号范围ꎬ并将每一块瓦片的(rowꎬcolumnꎬlevel)转换为SQLite数据库中的索引ID号ꎬ然后从96海㊀洋㊀测㊀绘第39卷数据库中读取瓦片数据文件ꎮMBTiles通用方法是将瓦片表分成两张:一个用来存储原始图像和一个存储瓦片坐标对应那些图片ꎮ此外ꎬMBTiles规范本身来自于OSGEO的TMS(TileMapService)规范中文件在存储方面的管理ꎬ便于后续发布符合TMS规范的静态瓦片数据服务ꎮ图4㊀谷歌地图卫星影像下载器主界面本应用的主界面见图4ꎮ实践效果表明ꎬ本应用可实现对谷歌地图卫星影像数据的可靠下载㊁渲染和存储ꎮ4㊀结束语以研究和分析谷歌地图的设计与运行机制为目标ꎬ深入分析了谷歌地图卫星影像的投影模型㊁瓦片数据组织模型㊁数据请求与响应流程㊁瓦片数据URL地址解析等关键技术ꎬ并设计了一套可靠的卫星影像下载器ꎮ本文研究表明:(1)对谷歌地图关键技术的剖析是正确㊁有效的ꎬ得到了应用软件卫星影像下载器的验证ꎮ(2)谷歌地图功能和算法复杂ꎬ下载器只实现了对卫星影像瓦片数据的下载㊁渲染和存储ꎬ其他设计原理和应用ꎬ如海量空间数据的组织和管理㊁数据服务器的架构等ꎬ还有待进一步研究ꎮ参考文献:[1]㊀马㊀谦.智慧地图:GoogleEarth/Maps/KML核心开发技术揭秘[M].北京:电子工业出版社ꎬ2010.[2]㊀崔金红ꎬ王㊀旭.Google地图算法研究及实现[J].计算机科学ꎬ2007ꎬ34(11):193 ̄195.[3]㊀巫细波ꎬ胡伟平.GoogleMaps运行机制以及应用研究[J].华南师范大学学报:自然科学版ꎬ2009(2):106 ̄110.[4]㊀寇曼曼ꎬ王勤忠ꎬ谭同德.GoogleMap数字栅格地图算法及应用[J].计算机技术与发展ꎬ2012ꎬ22(4):204 ̄206.[5]㊀张业舟ꎬ黄㊀兴.GoogleMaps瓦片组织分析和应用研究[J].测绘时空ꎬ2012ꎬ115(2):22 ̄25.[6]㊀李长春ꎬ蔡伯根ꎬ上官伟ꎬ等.基于Web墨卡托投影的地图算法研究与实现[J].计算机应用研究ꎬ2012ꎬ29(12):4793 ̄4796.[7]㊀国家基础地理信息中心.天地图全球影像地图服务[EB/OL].http://www.tianditu.com/service/info.html?sid=1061&type=Infoꎬ2010.[8]㊀百度地图开放平台.坐标系说明[EB/OL].http://lbsyun.baidu.com/index.php?title=coordinateꎬ2018.[9]㊀高德开放平台.坐标体系[EB/OL].http://lbs.amap.com/faq/top/coordinateꎬ2018.[10]KlokanTechnologies.Maptiler:TilesàlaGoogleMaps:CoordinatesꎬTileBoundsandProjection[EB/OL].http://www.maptil-er.org/google-maps-coordinates-tile-bounds-projection/ꎬ2008.[11]Microsoft.BingMapsTileSystem[EB/OL].https://msdn.microsoft.com/en-us/library/bb259689.aspxꎬ2018.[12]JoeDuffy.Windows并发编程指南[M].北京:机械工业出版社ꎬ2010.[13]SQLiteHomePage[EB/OL].http://www.sqlite.org/ꎬ2017.[14]MapBox.MBTiles规范说明[EB/OL].https://www.mapbox.com/help/define-mbtiles/ꎬ2016.KeyTechnologyAnalysisandApplicationofGoogleMapsZHAOYonghui1ꎬDUANYunlong2ꎬGUOXinwang2ꎬZHANGMing1(1.HenanEnvironmentalMonitoringCenterꎬZhengzhou450004ꎬChinaꎻ2.The27thResearchInstituteofChinaElectronicsTechnologyGroupCorporationꎬZhengzhou450047ꎬChina)Abstract:AimedatstudyingandanalyzingthedesignandrunningprinciplesofGoogleMapsꎬthekeytechnologiessuchastheprojectionmodelꎬtheorganizationmodeloftiledataꎬthetechnologicalprocessoftiledatarequest-responseandtheURLresolvingoftiledataareanalyzeddeeplyꎬandadownloadersoftwareisdesignedandimplementedwhichcandownloadimagetiledatabymulti ̄threadꎬadoptOpenGLtorendertheimagetiledataꎬandsaveimagetilefilesintoSQLiteaccordingtoMBTilesspecifications.PracticeprovesthatthedownloadercandownloadꎬrenderandsaveGoogleMapssatelliteimagedatareliablyꎬandcorrectnessandvalidityofthekeytechnologiesareverified.Keywords:Googlemapsꎻsatelliteimageꎻtileimageꎻwebmercatorprojectionꎻimagedownloader07。