使用QT开发GoogleMap瓦片显示和下载工具(2)——Google地图瓦片投影和获取网址解析
这篇主要说的是Google地图采用的投影方式,瓦片划分方式以及如何从给定的经纬度获取瓦片的数据的网址。所有资料均来自于网络,并亲自试验可行。
- 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* [分辨率]
然后如果需要计算经纬度的话则在上面坐标计算的基础上在进行逆投影计算就可以得出该点的经纬度数值
- 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地图瓦片投影和获取网址解析的更多相关文章
- [转]使用QT开发GoogleMap瓦片显示和下载工具
第一节 之前做项目的时候经常遇到需要大量地图背景数据,然后没有数据被逼着去Google上下载瓦片数据在拼接成整张影像的工作,其实遥感影像晚上有很多可以下载到的,但是大部分是作为研究用的,作为GIS的背 ...
- 使用QT开发GoogleMap瓦片显示和下载工具
之前做项目的时候经常遇到需要大量地图背景数据,然后没有数据被逼着去Google上下载瓦片数据在拼接成整张影像的工作,其实遥感影像晚上有很多可以下载到的,但是大部分是作为研究用的,作为GIS的背景图或者 ...
- 使用QT开发GoogleMap瓦片显示和下载工具(1)——QT开发环境准备
由于是第一次使用qt,光是QT的安装和调试就费了好大功夫,汗一个,下面记录下过程和遇到的问题的解决方法吧. 下载QT 直接Google搜索“QT”,进入官网http://qt-project.org/ ...
- QT开发之旅四邮件发送工具
终于有了一个晚上安静的写写程序,最近一直忙着公司商务上的事情,一直想用QT实现一个调用最底层socket通信来实现的邮件发送程序,以前用C#写过,微软都封装好的,不知道底层是如何实现的,只知道调用方法 ...
- python tkinter 框架开发的收费音乐免费下载工具
使用介绍: 工具下载地址:https://wps-oss.oss-cn-shenzhen.aliyuncs.com/Music2.exe 技术交流和赞助请前往我的咸鱼: https://market. ...
- ArcGIS Server开发实践之【Search Widget工具查询本地地图服务】
加载本地地图服务,并实现要素的查询.(不足之处还请指点)具体代码如下: <!DOCTYPE html> <html dir="ltr"> <head& ...
- Qt开发环境下载和安装
Qt是跨平台的图形开发库,目前由Digia全资子公司 Qt Company 独立运营,官方网址: http://www.qt.io/ 也可以访问Qt项目域名:http://qt-project.org ...
- Cesium中文网——如何开发一款地图下载工具[一]
Cesium中文网:http://cesiumcn.org/ | 国内快速访问:http://cesium.coinidea.com/ Cesium中文网的朋友们的其中一个主题是:自己独立开发一款地图 ...
- Linux下使用VsCode进行Qt开发环境搭建
最近在Linux上搞Qt, vim环境还用不太习惯, QtCreator之前使用时莫名其妙崩溃然后丢失代码之后就被我彻底放弃了, 于是研究了一下用VsCode进行Qt开发. 首先是系统环境和下载安装包 ...
随机推荐
- shiro,基于springboot,基于前后端分离,从登录认证到鉴权,从入门到放弃
这个demo是基于springboot项目的. 名词介绍: ShiroShiro 主要分为 安全认证 和 接口授权 两个部分,其中的核心组件为 Subject. SecurityManager. Re ...
- Git错误解决(windows版本下的Git Shell)
第一个问题:怎么也不能将自己本地仓库代码pull到GitHub网站上? git push origin master Warning: Permanently added 'github.com,19 ...
- 第6章 征服CSS3选择器(上)
属性选择器 在HTML中,通过各种各样的属性可以给元素增加很多附加的信息.例如,通过id属性可以将不同div元素进行区分. 在CSS2中引入了一些属性选择器,而CSS3在CSS2的基础上对属性选择器进 ...
- div居中方式
1. position: absolute; top:50%:left: 50%; margin-top: -高度的一半; margin-left: -宽度的一半(此方法适用于固定宽高的元素) 注: ...
- html+css模仿的锤子官方首页
<div id="wrapper"> <header> <div class="container"> <h1> ...
- HTTP状态码302、303、307区别
HTTP状态码3XX表示重定向,表明浏览器需要执行某些特殊的处理以正确处理请求. 301 Moved Permanently 永久性定向.该状态码表示请求的资源已被分配了新的URI,以后应使用资源现在 ...
- Codeforces Round #413 A. Carrot Cakes
A. Carrot Cakes time limit per test 1 second memory limit per test 256 megabytes In some game ...
- IsWindow,findwindow
原文:http://www.cnblogs.com/ahuo/archive/2007/12/05/983354.html IsWindow 函数功能:该函数确定给定的窗口句柄是否识别一个已存在的窗口 ...
- Android 6.0+ 运行时权限
1.权限被分为了普通和危险两种 2.打电话的Demo import android.Manifest; import android.app.Activity; import android.cont ...
- windows c++ 修改用户的文件夹操作权限
一般Windows下的系统文件(夹)只让受限帐户读取而不让写入和修改.如果要开启写操作权限就需要手动修改文件(夹)的用户帐户安全权限(这操作当然要在管理员帐户下执行).以下用程序封装了一下该操作: # ...
