中国地图
GIS探索者
地图网
GIS论坛
网站首页| GIS论坛 |新闻动态 | 技术专栏 | GIS书籍 | 资源下载 | 求职招聘 | 研究生考试 | GIS博客 | GIS空间站
欢迎光临GIS空间站!   网站地图
  专栏导航:| ArcGIS | MapInfo | TopMap | 地理信息 | 遥感 | GPS | 测绘 | WebGIS | LBS | 前沿 | 数据库 | 开发 | 行业应用
  推荐栏目:| AO开发 | 业界动态 | GIS资源 | 招聘信息 | 求职简历 | 共享软件 | 电子书籍 | 研究生考题 | 电子期刊 | GIS论文
您现在的位置: GIS空间站 >> 技术专栏 >> WebGIS >> 文章正文

google map是怎样工作的

作者:Leepys B…    文章来源:http://www.cnblogs.com/liping13599168/    点击数:    更新时间:2007-3-2

Google Map 怎样工作

这是我对google map工作的一个分析,特别是地图卫片怎样被编码.google map 用简单的url预载入卫片的方式获得。这篇文章解释怎样建立从它们的地理坐标(经纬度)来建立url

 

地图卫片编码

1) Google Map 用两个不同的算法来编码卫片们的定位。

 

比如说,有这么一个url http://mt1.google.com/mt?n=404&v=w2.12&x=130&y=93&zoom=9,其中X, Y坐标,和一个比例因素。比例因素从最大的17到最小的0。在zoom=17,整个地球在一个卫片中,在zoom=16,地球被卫成2*2……以此类推,每一级比例使卫片多分为4片,所以在z比例因素中,水平和垂直的卫片数目为2^(17-z).

 

算法:从经纬度和一个比例因素中查找一个卫片坐标

latitude=90-latitude;

longitude=180+longitude;

double latTileSize=180/(pow(2,(17-zoom)));

double longTileSize=360/(pow(2,(17-zoom)));

int tilex=(int)(longitude/longTileSize);

int tiley=(int)(latitude/latTileSize);

事实上,这个算法理论上是覆盖整个地区位置的但并不匹配整个地球。

 

服务:

Google用了4个服务来平衡加载,它们是m1,m2,m3,m4

卫片大小:

每个卫片是一个256*256png格式图片.

 

2) 对于卫星图片,编码有些不同。

象这样的链接:http://kh0.google.com/kh?n=404&v=8&t=trtqtt ’t’参数编码图片定位。参数的长度指定一个zoom水平。

要看整个地球,用’t=t’,这给单一的卫片代表地球。在下一个zoom水平,这个卫片北分成4个象限,按顺时针方向: ‘q’ ‘r’ ‘s’ ‘t’。看其中一个象限,增加一个字母在你所能看到的图象上。例如:’t=tq’,给’t’图象的左上象限。

 

算法:从经纬度和一个比例因素中查找一个卫片坐标

double xmin=-180;

double xmax=180;

double ymin=-90;

double ymax=90;

double xmid=0;

double ymid=0;

 

string location="t";

double halflat = latitude / 2;

for (int i = 0; i < zoom; i++)

    {

        xmoy = (xmax + xmin) / 2;

        ymoy = (ymax + ymin) / 2;

        if (halflat > 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;

            }

        }

    }

和前面一样,这个算法理论上是覆盖整个地区位置的但并不匹配整个地球。

服务:

Google用了4个服务来平衡加载,它们是kh0, kh1, kh2 and kh3

卫片大小:

每个卫片是一个256*256jpg格式图片

 

例子:

http://kh0.google.com/kh?n=404&v=8&t=t

 

并且四个象限加载 :

  • http://kh0.google.com/kh?n=404&v=8&t=tq
  • http://kh1.google.com/kh?n=404&v=8&t=tr
  • http://kh2.google.com/kh?n=404&v=8&t=ts
  • http://kh3.google.com/kh?n=404&v=8&t=tt

  
    

文章录入:gissky    责任编辑:gissky  发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
■■相 关 图 书:
■■相 关 文 章:
  • vista下安装ArcGis9.2的解决办法

  • 《ArcGIS二次开发编程实例》

  • ArcGIS中图象配准经验总结

  • ArcGIS中对矢量和栅格数据进行裁剪切割的方法

  • 地理信息系统设计与实现-利用ArcGIS软件

  • [原创]ARCGIS9.0安装经验

  • ArcGIS 9.1 升级到 9.2 部分文件格式不可读的解决方法

  • 上一篇文章:

  • 下一篇文章:
  •  
    GIS博客精华
    TopMap下载
    热点文章
    热门资源
     
    关于我们 | 联系我们 | 广告服务 | 友情链接 | 申请链接 | 合作联盟 | 诚聘英才
      GIS空间站(GISSky.Net)版权所有 站长:兔八哥