python下载谷歌地图瓦片_Python地图可视化之Folium更换地图瓦片(Map Tiles)
關(guān)于Folium庫(kù)的基礎(chǔ)使用,可以查看官方文檔,或者很多知友、博客的分享,這里不再詳述。本文主要以一個(gè)簡(jiǎn)單的示例講解如何更換底圖,以及進(jìn)行坐標(biāo)變換。
1.坐標(biāo)變換
地球上同一個(gè)地理位置的經(jīng)緯度,在不同的坐標(biāo)系中,會(huì)有少量偏移,國(guó)內(nèi)目前常見(jiàn)的坐標(biāo)系主要分為三種:
地球坐標(biāo)系——WGS84:常見(jiàn)于GPS設(shè)備,Google地圖等國(guó)際標(biāo)準(zhǔn)的坐標(biāo)體系。
火星坐標(biāo)系——GCJ-02:中國(guó)國(guó)內(nèi)使用的被強(qiáng)制加密后的坐標(biāo)體系,高德坐標(biāo)就屬于該種坐標(biāo)體系。
百度坐標(biāo)系——BD-09:百度地圖所使用的坐標(biāo)體系,是在火星坐標(biāo)系的基礎(chǔ)上又進(jìn)行了一次加密處理。坐標(biāo)偏移
在上圖中,藍(lán)色線條位置應(yīng)該是準(zhǔn)確的位置,但是由于坐標(biāo)系不統(tǒng)一,導(dǎo)致定位標(biāo)志所示的位置發(fā)生了偏移。坐標(biāo)偏移修正(坐標(biāo)變換)
轉(zhuǎn)換方法一:關(guān)于坐標(biāo)轉(zhuǎn)換,可以參見(jiàn)python庫(kù) :coord-convert?pypi.org
官方給出的API調(diào)用方法如下:
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
轉(zhuǎn)換方法二:網(wǎng)上可以搜到很多轉(zhuǎn)換代碼,可根據(jù)自己的情況進(jìn)行適當(dāng)調(diào)整,本文采用的為;python3實(shí)現(xiàn)GPS經(jīng)緯度坐標(biāo)(WGS84)國(guó)測(cè)局火星坐標(biāo)(GCJ02)百度坐標(biāo)(BD09)相互轉(zhuǎn)換_Python_開(kāi)開(kāi)的博客-CSDN博客?blog.csdn.net
2.底圖更換
folium庫(kù)默認(rèn)是基于OpenStreetMap的,但是可能由于信息更新不及時(shí),有時(shí)候OpenStreetMap的數(shù)據(jù)是不準(zhǔn)確的。這就需要更換底圖,如高德地圖,或者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}', # 高德衛(wèi)星圖
tiles='https://mt.google.com/vt/lyrs=s&x={x}&y={y}&z={z}', # google 衛(wèi)星圖
# tiles='https://mt.google.com/vt/lyrs=h&x={x}&y={y}&z={z}', # google 地圖
attr='default'
)
如果需要更換底圖,僅需調(diào)整tiles參數(shù)URL即可。
這里給出google地圖的一些參數(shù)設(shè)置:
''' lyrs可以設(shè)置為不同的參數(shù),分別代表不同形式的地圖,可以嘗試
lyrs=
h = roads only
m = standard roadmap
p = terrain
r = somehow altered roadmap
s = satellite only
t = terrain only
y = hybrid
'''
衛(wèi)星圖效果如下:
高德街道圖:
衛(wèi)星圖效果如果條件允許,建議選擇google地圖,高德和百度在放大到一定程度時(shí),會(huì)沒(méi)有衛(wèi)星圖顯示。
關(guān)于高德地圖瓦片URL的解析可以參見(jiàn):不睡覺(jué)的怪叔叔:OpenLayers教程十二:多源數(shù)據(jù)加載之使用XYZ的方式加載瓦片地圖?zhuanlan.zhihu.comhttps://www.jianshu.com/p/e34f85029fd7?www.jianshu.com
在Stack Overflow上有如下問(wèn)答,可做Mapbox的參考:How do I use mapbox tiles with folium??gis.stackexchange.com
示例代碼(高德):
import numpy as np
import folium
from folium import plugins
def PlotLineOnMap():
# 給出的坐標(biāo)系為GCJ-02,如果需要測(cè)試google地圖,需要進(jìn)行坐標(biāo)轉(zhuǎn)換
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}', # 高德衛(wèi)星圖
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()
總結(jié)
以上是生活随笔為你收集整理的python下载谷歌地图瓦片_Python地图可视化之Folium更换地图瓦片(Map Tiles)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 关于openlaeyrs获取谷歌卫星地图
- 下一篇: Ruby学习-Ruby语言的一些特点