这篇主要说的是Google地图采用的投影方式,瓦片划分方式以及如何从给定的经纬度获取瓦片的数据的网址。所有资料均来自于网络,并亲自试验可行。

  1. Google地图投影

    首先是地图投影问题,因为地球本身是一个球体,理论上不可能将球面展开成一个没有裂缝的平面(就像圆柱侧面可以展开成一个矩形,但是球面不可能展开成类似的无缝平面),因此需要采用投影的方式将地球展开成一张平面,方面使用者阅读。地图投影有很多种方法,来实现不同的应用目的(等角投影,等面积投影,等长度投影等),可以从地图学相关数据中进行了解。这里主要说的是Google地图采用的投影方式,用术语来说就是正轴等角切圆柱投影,是墨卡托投影的一种,一般称为Web墨卡托投影,ESPG编号是4326(GDAL可以直接使用该编号加载该投影相关信息)。具体相关信息可以从这篇博客中进行学习Google Maps地图投影全解析

    需要注意的是,经过投影计算后使用的是投影坐标系坐标进行计算,也就是博文中所说的[-20037508.3427892,20037508.3427892]这个范围内的坐标进行计算。也就是说x轴和y轴使用该数值可以线性计算某点坐标,而不能使用经纬度进行线性计算某点坐标,因为投影后的经纬度不是均匀的。这么说可能比较抽象,举个例子说,对于Google地图0级图像(如下图),需要计算(x,y)像素点(左下角点为起始点)坐标,需要使用投影坐标系坐标采用下式计算:

    [X坐标] = -20037508.3427892 + x * [分辨率]

    [Y坐标] = -20037508.3427892 + y* [分辨率]

    然后如果需要计算经纬度的话则在上面坐标计算的基础上在进行逆投影计算就可以得出该点的经纬度数值

  2. Google地图瓦片切分方式以及索引计算方式

    这里我就不多写了,请参见这篇博客OpenStreetMap/Google/百度/Bing瓦片地图服务(TMS),里面讲了目前主流地图服务的瓦片切分方式以及索取网址形式,不止包括Google地图。以后有时间没准可能会多做几个网站吧,毕竟TMS服务都是大同小异的。

    恩,自己又仔细看了下,还是稍微补充点原博客没有讲清楚的东西,大家翻到google地图瓦片地址格式那里,原作者给出了如下这样的瓦片地图格式:

    http://mt2.google.cn/vt/lyrs=m@167000000&hl=zh-CN&gl=cn&x=420&y=193&z=9

    这个后面的x,y,z分别代表上图所说的x轴方向序号,y轴方向序号以及瓦片金字塔层级z(TMS服务地图瓦片一般都是采用完全四叉树金字塔方式进行数据组织,高层的每个瓦片被一分为四,确定低层瓦片覆盖的范围,具体的可以搜索瓦片金字塔学习相关概念)。注意一般来说z的取值范围为[0,x],x值因不同的服务和数据精度相关,但一般在20左右,x和y的取值范围是[0,2^(z-1)],获取不同的地点的瓦片只需要修改x,y,z即可。

这篇大概就写这么多吧,主要是一些基础知识方面的内容,而且主要是转载别人的一些博客,并按照自己的理解进行了补充。有什么疑问或者问题欢迎留言。

使用QT开发GoogleMap瓦片显示和下载工具(2)——Google地图瓦片投影和获取网址解析的更多相关文章

  1. [转]使用QT开发GoogleMap瓦片显示和下载工具

    第一节 之前做项目的时候经常遇到需要大量地图背景数据,然后没有数据被逼着去Google上下载瓦片数据在拼接成整张影像的工作,其实遥感影像晚上有很多可以下载到的,但是大部分是作为研究用的,作为GIS的背 ...

  2. 使用QT开发GoogleMap瓦片显示和下载工具

    之前做项目的时候经常遇到需要大量地图背景数据,然后没有数据被逼着去Google上下载瓦片数据在拼接成整张影像的工作,其实遥感影像晚上有很多可以下载到的,但是大部分是作为研究用的,作为GIS的背景图或者 ...

  3. 使用QT开发GoogleMap瓦片显示和下载工具(1)——QT开发环境准备

    由于是第一次使用qt,光是QT的安装和调试就费了好大功夫,汗一个,下面记录下过程和遇到的问题的解决方法吧. 下载QT 直接Google搜索“QT”,进入官网http://qt-project.org/ ...

  4. QT开发之旅四邮件发送工具

    终于有了一个晚上安静的写写程序,最近一直忙着公司商务上的事情,一直想用QT实现一个调用最底层socket通信来实现的邮件发送程序,以前用C#写过,微软都封装好的,不知道底层是如何实现的,只知道调用方法 ...

  5. python tkinter 框架开发的收费音乐免费下载工具

    使用介绍: 工具下载地址:https://wps-oss.oss-cn-shenzhen.aliyuncs.com/Music2.exe 技术交流和赞助请前往我的咸鱼: https://market. ...

  6. ArcGIS Server开发实践之【Search Widget工具查询本地地图服务】

    加载本地地图服务,并实现要素的查询.(不足之处还请指点)具体代码如下: <!DOCTYPE html> <html dir="ltr"> <head& ...

  7. Qt开发环境下载和安装

    Qt是跨平台的图形开发库,目前由Digia全资子公司 Qt Company 独立运营,官方网址: http://www.qt.io/ 也可以访问Qt项目域名:http://qt-project.org ...

  8. Cesium中文网——如何开发一款地图下载工具[一]

    Cesium中文网:http://cesiumcn.org/ | 国内快速访问:http://cesium.coinidea.com/ Cesium中文网的朋友们的其中一个主题是:自己独立开发一款地图 ...

  9. Linux下使用VsCode进行Qt开发环境搭建

    最近在Linux上搞Qt, vim环境还用不太习惯, QtCreator之前使用时莫名其妙崩溃然后丢失代码之后就被我彻底放弃了, 于是研究了一下用VsCode进行Qt开发. 首先是系统环境和下载安装包 ...

随机推荐

  1. web.xml配置文件中async-supported报错解决

    项目中配置spring时async-supported报错: 是因为<async-supported>true</async-supported>是web.xml 3.0的新特 ...

  2. golang学习之go简单博客应用

    先说说golang的语法吧,个人觉得有以下特点: 简洁,不管是变量.方法声明,还是代码编写,均十分简洁,效率也比较高 非纯粹面向对象,但是go的struct类似c的struct,go的结构体还可以进行 ...

  3. MySQL:ERROR 2003 (HY000): Can't connect to MySQL server on 'localhost' (10061)

    错误 原因:可能是服务没有启动 以管理员身份打开cmd 输入 net start mysql

  4. shiro,基于springboot,基于前后端分离,从登录认证到鉴权,从入门到放弃

    这个demo是基于springboot项目的. 名词介绍: ShiroShiro 主要分为 安全认证 和 接口授权 两个部分,其中的核心组件为 Subject. SecurityManager. Re ...

  5. easypoi导出单个sheet和多个sheet

    今天有时间研究了一下easypoi,感觉使用了easypoi导出excel方便了很多,不用写很多复杂的反射,只需要使用注解和一些工具类就可以实现常用的excel的导出,接下来介绍一下easypoi如何 ...

  6. DataTables添加额外的查询参数和删除columns等无用参数

    //1.定义全局变量 var iStart = 0, searchParams={}; //2.配置datatable的ajax配置项 "ajax": { "url&qu ...

  7. 使用JavaScript脚本控制媒体播放(顺序播放和随机播放)

    在JavaScript脚本中获取<audio.../>元素对应的对象为HTMLAudioElement对象,<video.../>元素对应的对象为HTMLVideoElemen ...

  8. Javascript 多物体淡入淡出(透明度变化)

    <!DOCTYPE html><html> <head> <meta charset="UTF-8"> <title>& ...

  9. SpringBoot2.0+Mybatis+PageHelper+Redis实现缓存

    1.在maven引入相关的依赖 <parent> <groupId>org.springframework.boot</groupId> <artifactI ...

  10. Android 单元测试Junit