全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
揭密Google Map的工作原理 日期:2007-06-20 10:16:46 作者:未知 来源:3S新闻周刊 评论条 我分析了google map的工作原理,特别是如何进行tiles编码。Google map使用预着色tiles,可以通过一个简单的url地址实现。这篇文章将解释如何从地理坐标(经纬度)建立tile的url地址。Map tile编码Google map使用两种算法对tile的位置进行编码。对于Google map,tile的url地址类似于:/mt?n=404&v=w2.12&x=130&y=93&zoom=9使用x和y来设置tile坐标和放大因子。放大因子从17(完全缩小)到0(最大比例)。当放大因子为17时,整个地球在一个tile中显示,此时x=0 ,y=0;放大因子为16时,地球被分为2x2部分,这时0=x=1 且0=y=1。每放大一次,每个tile被分为4个部分。因此,当放大因子为z时,显示的水平和垂直tile个数为2(17-z)。算法:寻找经纬度和放大因子/correct the latitude to go from 0 (north) to 180 (south),/ instead of 90(north) to -90(south)latitude=90-latitude;/correct the longitude to go from 0 to 360longitude=180+longitude;/find tile size from zoom leveldouble latTileSize=180/(pow(2,(17-zoom);double longTileSize=360/(pow(2,(17-zoom);/find the tile coordinatesint tilex=(int)(longitude/longTileSize);int tiley=(int)(latitude/latTileSize);事实上,这个算法只是理论上的,覆盖的地带还无法和整个地球匹配。服务器:Google使用4台服务器维持加载。分别是mt0, mt1, mt2 and mt3。显示位置:每个tile为256x256 的.png格式的图像。对于卫星影像,编码方式有点不同Tile的url地址类似于/kh?n=404&v=8&t=trtqtt,其中参数t对影像的位置进行编码。参数的长度表示缩放级别。t=t时,可观察整个地球,只有一个tile表示地球。下一个放大级别是,该tile被分为4个象限,从左上顺时针开始分别是q r s 和 t。在你观察的影像那个象限后添加字母,就可以看见下一级象限。比如,t=tq时,给出t 影像的左上象限。依次类推,可以表示每个缩放级别算法:寻找经纬度和放大因子Collapse/initialise the variables;double xmin=-180;double xmax=180;double ymin=-90;double ymax=90;double xmid=0;double ymid=0;string location=t;/google use a latitude divided by 2;double halflat = latitude / 2;for (int i = 0; i ymoy) /upper part (q or r) ymin = ymoy; if (longitude xmoy) /*q*/ location+= q; xmax = xmoy; else /*r*/ location+= r; xmin = xmoy; else /lower part (t or s) ymax = ymoy; if (longitude xmoy) /*t*/ location+= t; xmax = xmoy; else /*s*/ location+= s; xmin = xmoy; /here, the location should contains the string corresponding to the tile.同样,这个算法也是理论上的,覆盖地带还无法和整个地球匹配。服务器:Google使用4台服务器维持加载。分别是kh0, kh1, kh2 and kh3。显示位置:每个tile为256x256 的.jpg格式图像。墨卡托投影由于在显示时使用了墨卡托投影,因此上述的算法需要进行修改。在墨卡托投影中,两条纬线间的距离不一定相等,所以描述tile的角度依据它的垂直位置。以下代码为从tile的纬度位置计算的tile的垂直个数Collapse/*Get the vertical tile number from a latitude using mercator ptrojection formula*/ private int getMercatorLatitude(double lati) double maxlat = Math.PI; double lat = lati; if (lat 90) lat = lat - 180; if (lat radians double phi = Math.PI * lat / 180; double res; /double temp = Math.Tan(Math.PI / 4 - phi / 2); /res = Math.Log(temp); res = 0.5 * Math.Log(1 + Math.Sin(phi) / (1 - Math.Sin(phi); double maxTileY = Math.Pow(2, zoom); int result = (int)(1 - res / maxlat) / 2) * (maxTileY); return (result); 覆盖地带:理论上,纬度范围应该是-90度到90度,但事实上,由于墨卡托投影使得两级无穷大,覆盖的地带小于-90 到 90。实际最大的纬度可通过公式Y = 1/2(1+sin(lat)/(1-sin(lat)求得,其中PI 3.1415926。保护:Google map使用保护机制维持高质量服务。如果某个用户要求太多,Google map将添加它的IP地址到黑名单,并发送一条有意思的消息:Google Error我们很抱歉. .您的查询像病毒或黑客应用程序的自动化请求。为了保护我们的用户,现在无法处理您的请求。我们将尽快恢复您的访问,所以请重新试试。同时,如果您怀疑您的计算机或网络被感染了,可以清除病毒。为给您带来的不便表示歉意,希望能在Google上再一次见
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 石家庄租房协议书
- 供柴油合同协议书
- 药铺转让协议书
- 2025租赁协议中英合同
- 税务登记 三方协议书
- 房屋担保免责协议书
- 2025汽车买卖合同与过户协议
- 2025 edition- 动产货物买卖合同范本
- 2025年工业互联网平台建设与2026-2032年行业应用案例分析报告
- 2025年工业万用表采购行业精度标准与使用安全供应商评估报告
- 拆除人行道施工方案
- 能源产业政策效果评估2025年可行性分析报告
- 2025年中级经济师经济基础知识真题解析与答案
- 角磨机安全教育培训课件
- 财政投资评审业务课件
- 兽药安全使用及配伍禁忌快速查阅表
- 矿建监理岗前安全培训课件
- 新时代乡村治理培训课件
- Unit 4 Amazing Plants and Animals 大单元整体公开课一等奖创新教学设计(表格式)
- 道路绿化施工的重点难点分析及措施
- 车载摄像头行业知识培训课件
评论
0/150
提交评论