这篇文章是我17年写的。

前言

作为城乡规划的学生,有时需要某一个城市片区的卫星地图作为设计作业的底图,地图从何来?百度?高德?谷歌?但是它们都只提供了浏览的服务啊。市面上倒是有不少自动的地图下载器。什么Bigemap啊、水经注啊、91卫图,啥的,但是它们都不是完全免费的(免费版有水印),想要授权就要帮它们推广或者花钱买。蛋疼。。。

然而作为会编程的人,怎么能让这种事情难住?

网上有不少文章分析了地理坐标系、投影坐标系的原理,还有各大地图网站瓦片的分割方式,也有提供下载的网址,只要把瓦片坐标系和缩放级别填到指定的位置,就可以下载到地图的瓦片。

看了这些文章以后,就会理解网络地图的分片原理,并且知道在浏览器中,是可以看到这些瓦片的地址的,只要我们知道从经纬度到瓦片坐标的转换方法,就可以在已知经纬度范围的情况下,下载这一范围内的地图。

谷歌地图

对于坐标偏移问题,国内的经纬度坐标在WGS-84的基础上经过了一些偏移(不是单纯的线性,但是在一定范围内长度面积什么的还是不会变形的,不然国内地图怎么导航?),也就是在高德等地图上采集到的坐标并不是WGS-84的坐标,而是GCJ-02坐标。在参考文章中用的谷歌的源就是国内的源(.cn结尾嘛)。不过对于当底图来看就够用了,实测应该使用http://www.google.cn/maps/采集到的经纬度来进行下载前的坐标获取。

难道瓦片坐标也进行了相应的偏移?

再次详细试验,发现gl参数决定了卫星图是否会偏移。

假设不加这个参数,会按WGS-84来,会和路线图有偏移(因为路线图只有GCJ-02的版本)

加了这个参数(gl=CN)就会使卫星图也变成GCJ-02。

也就是说,如果你使用www.google.cn/maps或者ditu.google.cn来获取坐标,那么最后你还按照这个坐标进行瓦片的获取,同时加上gl参数即可。如果你想按照WGS-84来获取坐标,那么就访问国际版的谷歌地图

,获取瓦片时不加gl参数就好了。

瓦片参数解析:

http://mt{index}.google.com/vt/lyrs={style}&hl=zh-CN&gl=CN&src=app&x={x}&y={y}&z={z}"

{index}为0到3,分别为谷歌的4个服务器,随便取一个就行~

{style}为地图的类型,比如卫星图、路线图什么的.

m:路线图

t:地形图

p:带标签的地形图

s:卫星图

y:带标签的卫星图

h:标签层(路名、地名等)

其中m路线图和s卫星图是我们想要的。

{x}{y}{z} 则分别是瓦片坐标的xy和缩放级别z,z取0-22。但是我测试发现卫星图最大只能取到20。不过即使是路线图,到20级也就足够用了。

对于python3,可以用urllib.request库进行图片的下载,然后用PIL.Image库(pillow)进行图片的合并。

如果想下载快一些,还可以使用多线程。

高德地图

高德地图的坐标是GCJ-02坐标(国内的所有地图都是,有的还进行了二次加偏)

至于怎么在高德地图上看坐标:高德地图怎么看经纬度

还是谷歌方便啊,直接地址栏就有,汗。。。。

高德的瓦片分割方式和谷歌的一样。

这里是瓦片的下载网址:

http://wprd03.is.autonavi.com/appmaptile?style=7&x=427289&y=227618&z=19

经过我的测试

style=7是路线图,6的话是卫星图。其他就不知道了。

实际测试中style=8好像是单独的路线层,背景为透明,结合ltype参数还有不同效果,这个以后可以慢慢摸索。我只下载最基本的图,这里就不深入讨论了。不过也基本够用了。一般不也就要这两个这吗?

x和y自然就是瓦片的坐标,z自然是缩放级别了。高德的z取值范围是[1,19]。不过卫星图实测只能取到18。

wprd03想必是和谷歌一样,有多个服务器提供服务。测试下来可以取到01 到 04。

也就是说,把同样的xyz从谷歌地图(中国版)填到高德里面,可以得到同一块地方的瓦片!

百度地图等

从资料看,百度的坐标在GCJ-02的基础上二次加偏形成了BD-09。百度的瓦片分割方式也和高德谷歌不一样,处理起来略麻烦,就不管了~~

腾讯地图则是瓦片坐标原点在左下角,而谷歌在左上角。xy的输入方式是进行一定的编码。

好麻烦。。。感觉有俩就够用了,其他的就不管了。

如何使用python批量下载-如何用Python批量下载卫星地图相关推荐

  1. chatgpt赋能python:Python迭代:如何用Python迭代优化你的程序?

    Python 迭代:如何用 Python 迭代优化你的程序? 引言 Python 是一门强大的编程语言,在科学计算.数据分析.Web 开发.人工智能等领域都得到了广泛的应用.其中,Python 的迭代 ...

  2. 国产Google地球如何下载2021版谷歌高清卫星地图?

    谷歌卫星地图是国内比较常用的卫星地图.最近Google 卫星地图对国内部分地区进行了全面的更新,地图资料涵盖了全国146个城市.现在,从Google地图上已经可以查看全国各大城市的高清晰街道地图,并且 ...

  3. 如何下载一张北京全景的卫星地图?

    如何下载一张北京全景的卫星地图? 使用万能地图下载器在行政区划中选择北京,会显示北京的行政区划边界和下载按钮,点击"下载"按钮即可下载北京全景的卫星地图.

  4. excel和python建模_如何用Python提高办公(Excel)效率?

    1 T: G2 ^3 U. x0 ?. W* A: `如何用Python提高办公(Excel)效率? ; m+ Z; f& U4 H' I这几天在家里利用网络视频教程学习了一下简单的Pytho ...

  5. python读数据-如何用Python读取开放数据?

    当你开始接触丰富多彩的开放数据集时,CSV.JSON和XML等格式名词就会奔涌而来.如何用Python高效地读取它们,为后续的整理和分析做准备呢?本文为你一步步展示过程,你自己也可以动手实践. 需求 ...

  6. python爬虫图片-如何用Python来制作简单的爬虫,爬取到你想要的图片

    原标题:如何用Python来制作简单的爬虫,爬取到你想要的图片 在我们日常上网浏览网页的时候,经常会看到一些好看的图片,我们就希望把这些图片保存下载,或者用户用来做桌面壁纸,或者用来做设计的素材. 我 ...

  7. python编程爱心-如何用python画爱心

    用python绘制爱心的基本步骤如下: 首先先下载安装好python程序. 在我们自己的电脑上找到python 的IDLE工具. 2.然后打开IDLE,新建一个文件,命名为test1.py. 3.接着 ...

  8. python读数据-如何用 Python 读取数据?

    原标题:如何用 Python 读取数据? 这是林骥的第 36 篇文章 1. 序言 读取数据往往是做数据分析的第一步,本文没有讲那些艰涩难懂的概念,只有一些问题的解决方案,当你遇到类似的问题的时候,可以 ...

  9. python租房_如何用Python爬租房网站信息

    展开全部 首先你需要了解如何用python进行爬虫,然后需要了解正则或者找寻条件的方法,给你62616964757a686964616fe4b893e5b19e31333337383839举个例子: ...

最新文章

  1. 与时代共振,AI助力工业缺陷检测
  2. ajax请求锁屏功能
  3. CDN简介及linux环境下搭建
  4. 面试官:缓存穿透、缓存雪崩和缓存击穿是什么?
  5. 可以替代Viso的小巧开源工具DIA。
  6. oracle php 配置,PHP + Oracle的配置
  7. 前端Javascript与Nodejs的异同
  8. mysql 索引- 笔记
  9. SpringMVC+FreeMarker
  10. Shell脚本——内置命令
  11. CSS选择器的权重详解
  12. 为翻译软件提供云端语料库支持,Tmxmall 瞄准了语言领域的大数据
  13. Java实现HTML代码生成PDF文档
  14. 一天搞懂深度学习--深度学习简介
  15. “微信之父”张小龙:微信背后的产品观
  16. 网格交易法 | 股票市场低风险稳定盈利的方法
  17. NOI2015 小园丁与老司机
  18. oracle删除目录 数据库文件,数据库生成一个app文件夹为什么删不掉
  19. MySQL最全整理!java技术总监面试常见问题及答案
  20. 信用卡逾期怎么办,如何让信用卡不逾期?

热门文章

  1. release 与您的 deploy integrations 或 source map uploads 同步
  2. [转]win10以前连接过的wifi密码怎么查看
  3. C++中三种产生随机数的方法
  4. 【软件定义汽车】【架构篇】SOA面向服务的软件架构
  5. PDF 补丁丁 0.6.2 测试版发布
  6. 风云再起 2017中国软件生态大会登陆上海
  7. 东方国信时序数据库(基于Apache IoTDB)适配图扑TopLink,携手助力核电站数据展示
  8. 2020年最酷的十个无人机项目(上)
  9. 很可爱的动画片小鸟三号
  10. 入职五年回顾(十四) 2013年9月