关于Folium库的基础使用,可以查看官方文档,或者很多知友、博客的分享,这里不再详述。本文主要以一个简单的示例讲解如何更换底图,以及进行坐标变换。

1.坐标变换

地球上同一个地理位置的经纬度,在不同的坐标系中,会有少量偏移,国内目前常见的坐标系主要分为三种:

地球坐标系——WGS84:常见于GPS设备,Google地图等国际标准的坐标体系。

火星坐标系——GCJ-02:中国国内使用的被强制加密后的坐标体系,高德坐标就属于该种坐标体系。

百度坐标系——BD-09:百度地图所使用的坐标体系,是在火星坐标系的基础上又进行了一次加密处理。坐标偏移

在上图中,蓝色线条位置应该是准确的位置,但是由于坐标系不统一,导致定位标志所示的位置发生了偏移。坐标偏移修正(坐标变换)

转换方法一:关于坐标转换,可以参见python库 :coord-convert​pypi.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/e34f85029fd7​www.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)相关推荐

  1. python下载谷歌地图瓦片_openLayers TMS加载谷歌地图瓦片

    openLayers  TMS中加载谷歌瓦片  经纬坐标(LonLat) 和投影坐标系的转换 /** openLayer根据TMS加载谷歌地图瓦片 (1)先去下载加载谷歌地图瓦片,这样的软件有(水经注 ...

  2. python下载谷歌地图瓦片_使用 Python 合并地图瓦片

    前文提到了合并瓦片图,而瓦片图应用比较多的则是瓦片地图.对地图本就感兴趣的我,也想试试合并互联网地图的某个范围内的地图图层. 随着技术的发展,国内的地图服务商相继将地图瓦片更新为矢量瓦片[1],这下想 ...

  3. python下载文件暂停恢复_python下载文件记录黑名单的实现代码

    具体代码如下所示: #!/usr/bin/python # -*- coding: GBK -*- # -*- coding: UTF-8 -*- from ftplib import FTP imp ...

  4. python下载谷歌地图瓦片_python获取bing地图发布自己的TMS服务(一)下载瓦片

    部分结果 bing地图瓦片使用QuadKey作为命名方式. QuadKey简介 如何计算quadkey 在给定level下,把行号tileY和列号tileX转换为2进制,然后行列交叉存储,再转换为4进 ...

  5. python下载谷歌地图瓦片_python抓取天地图瓦片

    [实例简介] 抓取天地图瓦片 [实例截图] [核心代码] # _*_coding:utf-8_*_ from urllib import request import re import urllib ...

  6. python地图标注_Python 给定的经纬度标注在地图上的实现方法

    博主最近发现了python中一个好玩的包叫basemap,使用这个包可以绘制地图.值得说一下的是,basemap还没有pip检索,因此不能直接使用pip install basemap,来安装这个包. ...

  7. python画地图柱状图_Python 如何画出漂亮的地图?

    Python地图可视化库有大家熟知的pyecharts.plotly.folium,其他回答都有介绍,还有稍低调的bokeh.basemap.geopandas,也是地图可视化的利器. 首先介绍下bo ...

  8. python通过经纬度点制图_Python 给定的经纬度标注在地图上的实现方法

    博主最近发现了python中一个好玩的包叫basemap,使用这个包可以绘制地图.值得说一下的是,basemap还没有pip检索,因此不能直接使用pip install basemap,来安装这个包. ...

  9. python做动态折线图_Python数据可视化 pyecharts实现各种统计图表过程详解

    1.pyecharts介绍 Echarts是一款由百度公司开发的开源数据可视化JS库,pyecharts是一款使用python调用echarts生成数据可视化的类库,可实现柱状图,折线图,饼状图,地图 ...

  10. python的最大绘图速度_Python数据可视化之高速绘图神器PyQtGraph库,强烈建议收藏...

    01为什么使用PyQtGraph库 我们知道,在Python中,已经有了很多可供选择的数据可视化库. 比如最经典.使用人数最多的matplotlib库,其有着十多年的历史积累,可生成高质量出版级别的图 ...

最新文章

  1. 一行代码:你的纯文本秒变Markdown
  2. 12.委托是什么?委托的property声明用什么属性?为什么?
  3. java list wordcount,初试spark java WordCount
  4. PCB genesis自制孔点 Font字体实现方法
  5. 信安考友分享:软考信息安全工程师备考四年,终成正果
  6. Visual Studio Code 1.43 发布
  7. 苹果企业版帐号申请记录
  8. hibernate的入门
  9. IDEA系列(六)一This file is indented with tabs instead of 4 space
  10. oshi因系统问题报错:IllegalStateException: Unmapped relationship: 7
  11. stm32设置延时函数
  12. 谷歌浏览器如何开启暗黑模式
  13. Android 自定义下拉列表
  14. 名编辑电子杂志大师教程 | 给电子杂志添加下载功能
  15. 终身 服务器_阿里云VS腾讯云618年中活动云服务器价格对比哪个更优惠?
  16. 原来 Element 的组件源码还能这么看
  17. 我大一的线性代数学习
  18. 做自媒体视频剪辑,必备的辅助工具和素材网站
  19. 电脑常用的快捷键大全
  20. GitHub地址是什么?哪里看?

热门文章

  1. redhat安装wine教程_超简单制作多合一系统安装启动U盘的工具
  2. 冰桶挑战,正在朝功利化和畸形化方向“扩散”
  3. Android:LiveData postValue导致数据丢失问题,及其原因
  4. 计算机nls数据丢失损坏无法启动,电脑开机时,显示NLS数据丢失或损坏怎么处理...
  5. 使用npm运行react程序报错The 'mode' option has not been set, webpack will fallback to 'production' for th
  6. 景观设计名字主题_园林景观好听的名字
  7. js模仿f11全屏_Js浏览器全屏代码(模仿按F11)
  8. linux服务器根据requestId查看日志
  9. 1024程序员节,云和恩墨送大礼啦
  10. 【js高级 Day3】深入理解原型的方式继承,借用构造函数继承,组合继承,拷贝继承