第一节

  之前做项目的时候经常遇到需要大量地图背景数据,然后没有数据被逼着去Google上下载瓦片数据在拼接成整张影像的工作,其实遥感影像晚上有很多可以下载到的,但是大部分是作为研究用的,作为GIS的背景图或者三维可视化的基础背景数据需要大量的处理工作,而google瓦片数据只要拼接好就可以用,很方便,就是下载量太大会被google封ip一段时间,需要谨慎。

  之前用很多第三方的软件下载,很方便,但是去年google换掉接口以后很多软件没法用了,然后就欲哭无泪了。现在突然有时间和精力了,顺便想学习一下QT的开发,就像写一个GoogleMap瓦片显示和下载的软件练手吧,以后每天写个日志记录下开发进展,如果工作比较忙就没办法谢了,争取不像前面的系列日志那样太监掉吧,这个日志就当是目录和开发计划的发布吧,初期的开发计划如下了

  1. 能够根据给定的坐标正确的下载GoogleMap的瓦片
  2. 使用QT创建简单的用户界面,显示下载的瓦片
  3. 能够自由的漫游、缩放

  暂时这么多吧,以后完成了或者有新的想法在写进来吧,下载留给目录吧,第一篇这个就不写了。恩,对了,我先写个简单框架能够实现自己的想法了,会把源码放到网上的,不要着急,前期工作主要还是理论性吧,特别是地图投影,坐标变换什么的,想着我就头疼。

第二节

    这篇主要说的是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即可。

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

引文连接:

1、使用QT开发GoogleMap瓦片显示和下载工具

2、使用QT开发GoogleMap瓦片显示和下载工具(2)——Google地图瓦片投影和获取网址解析

[转]使用QT开发GoogleMap瓦片显示和下载工具相关推荐

  1. QT 开发板无法显示GIF图片,windows能正常显示问题

    .h头文件 #include <QLabel> #include <QMovie>QLabel *lable=nullptr; QMovie *movie=nullptr; . ...

  2. 如何使用Qt开发一个进制转换小工具

    本游戏使用Qt5.8开发 这是一款进制转换小工具,比如十二进制的源数据15,如果您选择目标进制7进制的话,那么按下转换按钮,程序会输出[23]:程序的逻辑原理大概如此:首先把输入通过一系列算法转换成b ...

  3. .NET开发人员十大必备下载工具

    http://www.pconline.com.cn/pcedu/empolder/net/cs/0509/699905_4.html 转载于:https://www.cnblogs.com/chen ...

  4. iApp开发的网易云音乐下载工具源码

    正文: 目前已经对接酷狗和网易云的官方接口,所有VIP音乐都可以下载了的,酷狗有个代码在编辑框的文本更新监听事件里的文本内容已改变. 程序: lanzou.com/iyVAK04astvi 图片:

  5. QT开发环境搭建qt-4.8.6详细教程

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

  6. VS集成Qt开发入门(简易时间显示)

    VS集成Qt开发入门(简易时间显示) 软件开发入门 开发环境 简单时间显示(LcdNumber) ui界面设计(clock.ui) 工程文件(clock.h,clock.cpp) 头文件clock.h ...

  7. linux开发板汉字显示,Linux Qt 及Arm开发板汉字显示

    作为一个优秀的开发人员,我就不说废话了. 很多人在 使用Qt做嵌入式开发时,会遇到一个问题: 汉字显示,网上有好多方法,并且针对 Qt5 以前的版本和Qt5 的版本有不同的方法,同样,我也遇到了这个问 ...

  8. linux中qt加载rviz,ROS与Qt5人机交互界面开发-添加rviz显示界面

    ROS与Qt5人机交互界面开发-添加rviz显示界面 说明: 介绍如何添加rviz显示界面 步骤: 实现效果: 核心代码 创建librviz界面类: qrviz_widget.h内容如下: #ifnd ...

  9. Qt开发 — 显示gif动画

    Qt开发 - 显示gif动画 Qt 中,静态图片 PNG,JPG 等可以用其创建 QPixmap,调用 QLabel::setPixmap() 来显示,但是能够具有动画的 GIF 却不能这么做,要在 ...

最新文章

  1. bat批处理删除指定N天前的文件
  2. Docker 搜索镜像
  3. JSON.stringify时间的问题
  4. 洛谷——P1146 硬币翻转
  5. JAVA回调函数简单讲解 CallBack
  6. 通过企业微信SCRM营销系统,完成百万私域用户引流
  7. 解决VsCode下载慢问题
  8. matlab将txt转成dat,将matlab中数据保存为txt或dat格式
  9. 单片机波形发生c语言,51单片机波形发生器程序设计
  10. ADS学习:统计分析——灵敏度分析、良率优化
  11. ISO 8583协议-银行交易的标准
  12. vue视频播放插件vue-video-player
  13. CDH6.3.2防止被攻击,打补丁(未授权漏洞)
  14. “要吃鲷鱼到岛上钓”团队小结
  15. Spark - Core 随笔
  16. Python的人工智能模拟框架
  17. (附源码)APP+springboot垃圾自动分类管理系统 毕业设计 160846
  18. 如何启动Android SDK 1.5模拟器
  19. oracle-12514,Oracle错误 ORA-12514 解决方法
  20. 北上广深等十城市,互联网大厂“鄙视链”

热门文章

  1. 如何高性能添加UIView阴影
  2. webpack中loader加载器(打包非js模块)
  3. HBase学习指南之HBase原理和Shell使用
  4. 用SERVLET进行用户名和密码验证
  5. 展开被 SpringBoot 玩的日子 《 二 》 WEB 开发
  6. Linux C/C++ 链接选项之静态库--whole-archive,--no-whole-archive和--start-group, --end-group
  7. Git 经常使用命令总结
  8. 基于Tire树和最大概率法的中文分词功能的Java实现
  9. Mac 应用程序不能打开解决方法
  10. [Bat]UNC路径不支持的2种解决方法