python下载谷歌地图瓦片_Python地图可视化之Folium更换地图瓦片(Map Tiles)
关于Folium库的基础使用,可以查看官方文档,或者很多知友、博客的分享,这里不再详述。本文主要以一个简单的示例讲解如何更换底图,以及进行坐标变换。
1.坐标变换
地球上同一个地理位置的经纬度,在不同的坐标系中,会有少量偏移,国内目前常见的坐标系主要分为三种:
地球坐标系——WGS84:常见于GPS设备,Google地图等国际标准的坐标体系。
火星坐标系——GCJ-02:中国国内使用的被强制加密后的坐标体系,高德坐标就属于该种坐标体系。
百度坐标系——BD-09:百度地图所使用的坐标体系,是在火星坐标系的基础上又进行了一次加密处理。坐标偏移
在上图中,蓝色线条位置应该是准确的位置,但是由于坐标系不统一,导致定位标志所示的位置发生了偏移。坐标偏移修正(坐标变换)
转换方法一:关于坐标转换,可以参见python库 :coord-convertpypi.org
官方给出的API调用方法如下:
from coord_convert.transform import wgs2gcj, wgs2bd, gcj2wgs, gcj2bd, bd2wgs, bd2gcj
lon, lat = 120, 40
gcj_lon, gcj_lat = wgs2gcj(lon, lat)
bd_lon, bd_lat = wgs2bd(lon, lat)
print(gcj_lon, gcj_lat) # the result should be: 120.00567568355486 40.0013047896019
转换方法二:网上可以搜到很多转换代码,可根据自己的情况进行适当调整,本文采用的为;python3实现GPS经纬度坐标(WGS84)国测局火星坐标(GCJ02)百度坐标(BD09)相互转换_Python_开开的博客-CSDN博客blog.csdn.net
2.底图更换
folium库默认是基于OpenStreetMap的,但是可能由于信息更新不及时,有时候OpenStreetMap的数据是不准确的。这就需要更换底图,如高德地图,或者Google地图等。
m = folium.Map(
location=[38.96, 117.78],
zoom_start=12,
# tiles='http://webrd02.is.autonavi.com/appmaptile?lang=zh_cn&size=1&scale=1&style=7&x={x}&y={y}&z={z}', # 高德街道图
# tiles='http://webst02.is.autonavi.com/appmaptile?style=6&x={x}&y={y}&z={z}', # 高德卫星图
tiles='https://mt.google.com/vt/lyrs=s&x={x}&y={y}&z={z}', # google 卫星图
# tiles='https://mt.google.com/vt/lyrs=h&x={x}&y={y}&z={z}', # google 地图
attr='default'
)
如果需要更换底图,仅需调整tiles参数URL即可。
这里给出google地图的一些参数设置:
''' lyrs可以设置为不同的参数,分别代表不同形式的地图,可以尝试
lyrs=
h = roads only
m = standard roadmap
p = terrain
r = somehow altered roadmap
s = satellite only
t = terrain only
y = hybrid
'''
卫星图效果如下:
高德街道图:
卫星图效果如果条件允许,建议选择google地图,高德和百度在放大到一定程度时,会没有卫星图显示。
关于高德地图瓦片URL的解析可以参见:不睡觉的怪叔叔:OpenLayers教程十二:多源数据加载之使用XYZ的方式加载瓦片地图zhuanlan.zhihu.comhttps://www.jianshu.com/p/e34f85029fd7www.jianshu.com
在Stack Overflow上有如下问答,可做Mapbox的参考:How do I use mapbox tiles with folium?gis.stackexchange.com
示例代码(高德):
import numpy as np
import folium
from folium import plugins
def PlotLineOnMap():
# 给出的坐标系为GCJ-02,如果需要测试google地图,需要进行坐标转换
Lat = [40.8352, 40.8342, 40.8335, 40.8323, 40.8311, 40.8308, 40.8304, 40.8315, 40.8325, 40.8332, 40.8339, 40.8345,
40.8352]
Lon = [114.8886, 114.8883, 114.8881, 114.8877, 114.8873, 114.8888, 114.8902, 114.8909, 114.8916, 114.8919, 114.8922,
114.8917, 114.8886]
tri = np.array(list(zip(Lat, Lon)))
san_map = folium.Map(
location=[40.8329, 114.8898],
zoom_start=16,
tiles='http://webrd02.is.autonavi.com/appmaptile?lang=zh_cn&size=1&scale=1&style=7&x={x}&y={y}&z={z}', # 高德街道图
# tiles='http://webst02.is.autonavi.com/appmaptile?style=6&x={x}&y={y}&z={z}', # 高德卫星图
attr='default')
folium.PolyLine(tri,color='#3388ff').add_to(san_map)
marker_cluster = plugins.MarkerCluster().add_to(san_map)
for lat,lon in zip(Lat,Lon):
folium.Marker([lat,lon], color='red').add_to(marker_cluster)
san_map.save('test.html')
def main():
PlotLineOnMap()
if __name__ == '__main__':
main()
python下载谷歌地图瓦片_Python地图可视化之Folium更换地图瓦片(Map Tiles)相关推荐
- python下载谷歌地图瓦片_openLayers TMS加载谷歌地图瓦片
openLayers TMS中加载谷歌瓦片 经纬坐标(LonLat) 和投影坐标系的转换 /** openLayer根据TMS加载谷歌地图瓦片 (1)先去下载加载谷歌地图瓦片,这样的软件有(水经注 ...
- python下载谷歌地图瓦片_使用 Python 合并地图瓦片
前文提到了合并瓦片图,而瓦片图应用比较多的则是瓦片地图.对地图本就感兴趣的我,也想试试合并互联网地图的某个范围内的地图图层. 随着技术的发展,国内的地图服务商相继将地图瓦片更新为矢量瓦片[1],这下想 ...
- python下载文件暂停恢复_python下载文件记录黑名单的实现代码
具体代码如下所示: #!/usr/bin/python # -*- coding: GBK -*- # -*- coding: UTF-8 -*- from ftplib import FTP imp ...
- python下载谷歌地图瓦片_python获取bing地图发布自己的TMS服务(一)下载瓦片
部分结果 bing地图瓦片使用QuadKey作为命名方式. QuadKey简介 如何计算quadkey 在给定level下,把行号tileY和列号tileX转换为2进制,然后行列交叉存储,再转换为4进 ...
- python下载谷歌地图瓦片_python抓取天地图瓦片
[实例简介] 抓取天地图瓦片 [实例截图] [核心代码] # _*_coding:utf-8_*_ from urllib import request import re import urllib ...
- python地图标注_Python 给定的经纬度标注在地图上的实现方法
博主最近发现了python中一个好玩的包叫basemap,使用这个包可以绘制地图.值得说一下的是,basemap还没有pip检索,因此不能直接使用pip install basemap,来安装这个包. ...
- python画地图柱状图_Python 如何画出漂亮的地图?
Python地图可视化库有大家熟知的pyecharts.plotly.folium,其他回答都有介绍,还有稍低调的bokeh.basemap.geopandas,也是地图可视化的利器. 首先介绍下bo ...
- python通过经纬度点制图_Python 给定的经纬度标注在地图上的实现方法
博主最近发现了python中一个好玩的包叫basemap,使用这个包可以绘制地图.值得说一下的是,basemap还没有pip检索,因此不能直接使用pip install basemap,来安装这个包. ...
- python做动态折线图_Python数据可视化 pyecharts实现各种统计图表过程详解
1.pyecharts介绍 Echarts是一款由百度公司开发的开源数据可视化JS库,pyecharts是一款使用python调用echarts生成数据可视化的类库,可实现柱状图,折线图,饼状图,地图 ...
- python的最大绘图速度_Python数据可视化之高速绘图神器PyQtGraph库,强烈建议收藏...
01为什么使用PyQtGraph库 我们知道,在Python中,已经有了很多可供选择的数据可视化库. 比如最经典.使用人数最多的matplotlib库,其有着十多年的历史积累,可生成高质量出版级别的图 ...
最新文章
- 一行代码:你的纯文本秒变Markdown
- 12.委托是什么?委托的property声明用什么属性?为什么?
- java list wordcount,初试spark java WordCount
- PCB genesis自制孔点 Font字体实现方法
- 信安考友分享:软考信息安全工程师备考四年,终成正果
- Visual Studio Code 1.43 发布
- 苹果企业版帐号申请记录
- hibernate的入门
- IDEA系列(六)一This file is indented with tabs instead of 4 space
- oshi因系统问题报错:IllegalStateException: Unmapped relationship: 7
- stm32设置延时函数
- 谷歌浏览器如何开启暗黑模式
- Android 自定义下拉列表
- 名编辑电子杂志大师教程 | 给电子杂志添加下载功能
- 终身 服务器_阿里云VS腾讯云618年中活动云服务器价格对比哪个更优惠?
- 原来 Element 的组件源码还能这么看
- 我大一的线性代数学习
- 做自媒体视频剪辑,必备的辅助工具和素材网站
- 电脑常用的快捷键大全
- GitHub地址是什么?哪里看?
热门文章
- redhat安装wine教程_超简单制作多合一系统安装启动U盘的工具
- 冰桶挑战,正在朝功利化和畸形化方向“扩散”
- Android:LiveData postValue导致数据丢失问题,及其原因
- 计算机nls数据丢失损坏无法启动,电脑开机时,显示NLS数据丢失或损坏怎么处理...
- 使用npm运行react程序报错The 'mode' option has not been set, webpack will fallback to 'production' for th
- 景观设计名字主题_园林景观好听的名字
- js模仿f11全屏_Js浏览器全屏代码(模仿按F11)
- linux服务器根据requestId查看日志
- 1024程序员节,云和恩墨送大礼啦
- 【js高级 Day3】深入理解原型的方式继承,借用构造函数继承,组合继承,拷贝继承