Python+folium繪制精美地圖的示例詳解
1. 準(zhǔn)備工作
有朋友可能沒(méi)用過(guò)folium
,它其實(shí)就是python
的一個(gè)專業(yè)繪制地圖的第三方庫(kù),所以在使用之前需要先安裝它。
pip?install?folium
在安裝完成之后,我們可以在jupyterlab
進(jìn)行演示如下:
import?folium m?=?folium.Map() m
默認(rèn)
對(duì)于上面的輸出,其實(shí)是一個(gè)可交互的地圖,支持放大縮寫(xiě)拖拽等等。
如果你想將輸出存在本地,可以這樣來(lái):
m.save('map.html')
可以看到本地就存了這個(gè)一個(gè)文件,瀏覽器打開(kāi)就可以進(jìn)行交互式操作了。
map文件
以上就是一個(gè)平平淡淡的過(guò)程......
2. 關(guān)于folium.Map()
在上一部分我們可以看到這個(gè)map
玩意直接就是一個(gè)地圖啦,這里我們就介紹一下它常用的幾個(gè)參數(shù)。
folium.Map( ????location=None, ????width='100%', ????height='100%', ????left='0%', ????top='0%', ????position='relative', ????tiles='OpenStreetMap', ????attr=None, ????min_zoom=0, ????max_zoom=18, ????zoom_start=10, ????min_lat=-90, ????max_lat=90, ????min_lon=-180, ????max_lon=180, ????max_bounds=False, ????crs='EPSG3857', ????control_scale=False, ????prefer_canvas=False, ????no_touch=False, ????disable_3d=False, ????png_enabled=False, ????zoom_control=True, ????**kwargs, )
參數(shù)可真多啊?。?/p>
沒(méi)有參數(shù)的folium.Map()
將得到一張世界地圖。
- location:地圖中心,[40.002694, 116.322373]是清華大學(xué)校區(qū);
- zoom_start:比例尺,默認(rèn)為10級(jí),大約是一個(gè)城市的范圍;
其他常用參數(shù)包括:
width
和height
:地圖的長(zhǎng)寬,如果是int則表示像素值,如果是str則表示百分比;max_zoom
:地圖可以手動(dòng)調(diào)節(jié)的最大比例,默認(rèn)為18級(jí);control_scale
:是否在地圖上添加比例尺,默認(rèn)為False;no_touch
:是否禁止手動(dòng)操作,默認(rèn)為False;- tiles:地圖樣式,默認(rèn)為OpenStreetMap
attr
:如果設(shè)置非內(nèi)建地圖樣式,則需要傳入這個(gè)值,可以理解為你選擇的地圖樣式名稱
以上是常用的一些參數(shù),而最常用的莫過(guò)于 location
、zoom_start
和tiles
等。
內(nèi)建地圖樣式還有一下幾種:
-?"OpenStreetMap" -?"Mapbox?Bright"?(Limited?levels?of?zoom?for?free?tiles) -?"Mapbox?Control?Room"?(Limited?levels?of?zoom?for?free?tiles) -?"Stamen"?(Terrain,?Toner,?and?Watercolor) -?"Cloudmade"?(Must?pass?API?key) -?"Mapbox"?(Must?pass?API?key) -?"CartoDB"?(positron?and?dark_matter)
我們簡(jiǎn)單試下location
和zoo_start
參數(shù):
import?folium m?=?folium.Map([40.002694,?116.322373], ???????????????zoom_start=15, ???????????????control_scale=True ??????????????) m
可以看到清華大學(xué)校區(qū)
清華大學(xué)校區(qū)
以上對(duì)Map
的參數(shù)進(jìn)行了簡(jiǎn)單的介紹,接下來(lái),我們就來(lái)看看地圖底圖樣式的選取情況吧~
3. 內(nèi)建地圖底圖樣式
我們看到folium
其實(shí)有好幾種內(nèi)建地圖底圖樣式,其中部分需要去申請(qǐng)key
,由于我這邊沒(méi)有申請(qǐng)成功就不做演示了。
- "OpenStreetMap"
- "Mapbox Bright" (Limited levels of zoom for free tiles)
- "Mapbox Control Room" (Limited levels of zoom for free tiles)
- "Stamen" (Terrain, Toner, and Watercolor)
- "Cloudmade" (Must pass API key)
- "Mapbox" (Must pass API key)
- "CartoDB" (positron and dark_matter)
地勢(shì)地形底圖
m?=?folium.Map([40.002694,?116.322373], ???????????????tiles='Stamen?Terrain', ???????????????zoom_start=15, ???????????????control_scale=True ??????????????) m
黑白無(wú)標(biāo)記底圖
m?=?folium.Map([40.002694,?116.322373], ???????????????tiles='Stamen?Toner', ???????????????zoom_start=15, ???????????????control_scale=True ??????????????) m
水墨畫(huà)底圖
m?=?folium.Map([40.002694,?116.322373], ???????????????tiles='Stamen?Watercolor', ???????????????zoom_start=15, ???????????????control_scale=True ??????????????) m
以上就是內(nèi)建地圖底圖樣式的一些展示,部分需要key的大家可以去這個(gè)網(wǎng)站申請(qǐng):http://openwhatevermap.xyz/
另外,在這里也可以找到一些地圖底圖 http://leaflet-extras.github.io/leaflet-providers/preview/
我后續(xù)也會(huì)去研究這些地圖底圖樣式,試著分享更多有趣的地圖分享給大家。
當(dāng)然了,國(guó)內(nèi)咱們用的較多的地圖是高德、百度和騰訊地圖等,接下來(lái)我們就來(lái)玩玩!
4. 多種第三方地圖底圖樣式
這里我將演示高德地圖、智圖GeoQ和騰訊地圖等
4.1. 高德地圖
高德地圖的 中英文地圖、衛(wèi)星影像圖、街道圖與常規(guī)圖
中英文地圖
folium.Map([40.002694,?116.322373], ???????????tiles='https://webrd02.is.autonavi.com/appmaptile?lang=zh_en&size=1&scale=1&style=8&x={x}&y={y}&z={z}', ???????????attr='高德-中英文對(duì)照', ???????????zoom_start=15, ??????????)
純英文地圖
folium.Map([40.002694,?116.322373], ???????????tiles='https://webrd02.is.autonavi.com/appmaptile?lang=en&size=1&scale=1&style=8&x={x}&y={y}&z={z}', ???????????attr='高德-純英文對(duì)照', ???????????zoom_start=15, ??????????)
衛(wèi)星影像圖
tiles?=?'https://webst02.is.autonavi.com/appmaptile?style=6&x={x}&y={y}&z={z}' folium.Map([40.002694,?116.322373], ???????????tiles=?tiles, ???????????attr='高德-衛(wèi)星影像圖', ???????????zoom_start=15, ??????????)
街道圖
folium.Map([40.002694,?116.322373], ???????????tiles=?'https://wprd01.is.autonavi.com/appmaptile?x={x}&y={y}&z={z}&lang=zh_cn&size=1&scl=1&style=8<ype=11', ???????????attr='高德-街道路網(wǎng)圖', ???????????zoom_start=10, ??????????)
常規(guī)圖
folium.Map([40.002694,?116.322373], ???????????tiles=?'https://wprd01.is.autonavi.com/appmaptile?x={x}&y={y}&z={z}&lang=zh_cn&size=1&scl=1&style=7', ???????????attr='高德-常規(guī)圖', ???????????zoom_start=15, ??????????)
4.2. 智圖GeoQ
反正我覺(jué)得這個(gè)蠻好的,用起來(lái)簡(jiǎn)單
多種風(fēng)格地圖,即拿即用
彩色版
m?=?folium.Map([40.002694,?116.322373], ???????????????tiles='http://map.geoq.cn/ArcGIS/rest/services/ChinaOnlineCommunity/MapServer/tile/{z}/{y}/{x}', ???????????????attr='彩色版', ???????????????zoom_start=15, ??????????????) m
暖色版
m?=?folium.Map([40.002694,?116.322373], ???????????????tiles='http://map.geoq.cn/ArcGIS/rest/services/ChinaOnlineStreetWarm/MapServer/tile/{z}/{y}/{x}', ???????????????attr='暖色版', ???????????????zoom_start=15, ??????????????) m
灰色版
m?=?folium.Map([40.002694,?116.322373], ???????????????tiles='http://map.geoq.cn/ArcGIS/rest/services/ChinaOnlineStreetGray/MapServer/tile/{z}/{y}/{x}', ???????????????attr='灰色版', ???????????????zoom_start=15, ??????????????) m
藍(lán)黑版
m?=?folium.Map([40.002694,?116.322373], ???????????????tiles='http://map.geoq.cn/ArcGIS/rest/services/ChinaOnlineStreetPurplishBlue/MapServer/tile/{z}/{y}/{x}', ???????????????attr='藍(lán)黑版', ???????????????zoom_start=15, ??????????????) m
英文版
m?=?folium.Map([40.002694,?116.322373], ???????????????tiles='http://map.geoq.cn/ArcGIS/rest/services/ChinaOnlineCommunityENG/MapServer/tile/{z}/{y}/{x}', ???????????????attr='英文版', ???????????????zoom_start=15, ??????????????) m
中國(guó)行政區(qū)劃邊界
m?=?folium.Map([40.002694,?116.322373], ???????????????tiles='http://thematic.geoq.cn/arcgis/rest/services/ThematicMaps/administrative_division_boundaryandlabel/MapServer/tile/{z}/{y}/{x}', ???????????????attr='中國(guó)行政區(qū)劃邊界', ??????????????) m
水系專題
m?=?folium.Map([40.002694,?116.322373], ???????????????tiles='http://thematic.geoq.cn/arcgis/rest/services/ThematicMaps/WorldHydroMap/MapServer/tile/{z}/{y}/{x}', ???????????????attr='水系專題', ??????????????) m
街道網(wǎng)圖
m?=?folium.Map([40.002694,?116.322373], ???????????????tiles='http://thematic.geoq.cn/arcgis/rest/services/StreetThematicMaps/Gray_OnlySymbol/MapServer/tile/{z}/{y}/{x}', ???????????????attr='街道網(wǎng)圖', ??????????????) m
暖色街道網(wǎng)圖
m?=?folium.Map([40.002694,?116.322373], ???????????????tiles='http://thematic.geoq.cn/arcgis/rest/services/StreetThematicMaps/Warm_OnlySymbol/MapServer/tile/{z}/{y}/{x}', ???????????????attr='暖色-街道網(wǎng)圖', ??????????????) m
4.3. 騰訊地圖
tiles?=??'https://rt0.map.gtimg.com/tile?z={z}&x={x}&y={-y}' folium.Map([39.904989,?116.405285], ???????????tiles=?tiles, ???????????attr='騰訊地圖'?????????? ??????????)
4.4. 天地圖
需要注冊(cè)一個(gè)key
天地圖影像
m?=?folium.Map([40.002694,?116.322373], ???????????????tiles='http://t7.tianditu.gov.cn/img_w/wmts?SERVICE=WMTS&REQUEST=GetTile&VERSION=1.0.0&LAYER=img&STYLE=default&TILEMATRIXSET=w&FORMAT=tiles&TILEMATRIX={z}&TILEROW={y}&TILECOL={x}&tk=', ???????????????attr='天地圖-影像' ??????????????) m
天地圖影像注記
m?=?folium.Map([40.002694,?116.322373], ???????????????tiles='http://t7.tianditu.gov.cn/cia_w/wmts?SERVICE=WMTS&REQUEST=GetTile&VERSION=1.0.0&LAYER=cia&STYLE=default&TILEMATRIXSET=w&FORMAT=tiles&TILEMATRIX={z}&TILEROW={y}&TILECOL={x}&tk=', ???????????????attr='天地圖-影像標(biāo)注' ??????????????) m
天地圖矢量
m?=?folium.Map([40.002694,?116.322373], ???????????????tiles='http://t7.tianditu.gov.cn/vec_w/wmts?SERVICE=WMTS&REQUEST=GetTile&VERSION=1.0.0&LAYER=vec&STYLE=default&TILEMATRIXSET=w&FORMAT=tiles&TILEMATRIX={z}&TILEROW={y}&TILECOL={x}&tk=', ???????????????attr='天地圖-矢量', ???????????????zoom_start=10, ??????????????) m
天地圖矢量注記
m?=?folium.Map([40.002694,?116.322373], ???????????????tiles='http://t7.tianditu.gov.cn/cva_w/wmts?SERVICE=WMTS&REQUEST=GetTile&VERSION=1.0.0&LAYER=cva&STYLE=default&TILEMATRIXSET=w&FORMAT=tiles&TILEMATRIX={z}&TILEROW={y}&TILECOL={x}&tk=', ???????????????attr='天地圖-矢量注記' ??????????????) m
天地圖地形
m?=?folium.Map([40.002694,?116.322373], ???????????????tiles='http://t7.tianditu.gov.cn/ter_w/wmts?SERVICE=WMTS&REQUEST=GetTile&VERSION=1.0.0&LAYER=ter&STYLE=default&TILEMATRIXSET=w&FORMAT=tiles&TILEMATRIX={z}&TILEROW={y}&TILECOL={x}&tk=', ???????????????attr='天地圖-地形', ???????????????zoom_start=3, ??????????????) m
天地圖地形注記
m?=?folium.Map([40.002694,?116.322373], ???????????????tiles='http://t7.tianditu.gov.cn/cta_w/wmts?SERVICE=WMTS&REQUEST=GetTile&VERSION=1.0.0&LAYER=cta&STYLE=default&TILEMATRIXSET=w&FORMAT=tiles&TILEMATRIX={z}&TILEROW={y}&TILECOL={x}&tk=', ???????????????attr='天地圖-地形標(biāo)記', ???????????????zoom_start=3, ??????????????) m
百度地圖我這邊測(cè)試失敗了,暫時(shí)沒(méi)有找到合適的替換方案。
5. 補(bǔ)充
其實(shí),我們還可以找更多的地圖底圖瓦片URL來(lái)進(jìn)行替換,多樣化我們的地圖繪制。
另外,大家在用經(jīng)緯度坐標(biāo)點(diǎn)進(jìn)行地圖繪制的時(shí)候,比如標(biāo)記點(diǎn)、繪制區(qū)域、熱力圖繪制等等,需要考慮經(jīng)緯度坐標(biāo)是哪個(gè)地圖系下面的,然后再用對(duì)應(yīng)地圖系的相關(guān)底圖進(jìn)行繪制才準(zhǔn)確!
以上就是Python+folium繪制精美地圖的示例詳解的詳細(xì)內(nèi)容,更多關(guān)于Python folium繪制地圖的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Python常用標(biāo)準(zhǔn)庫(kù)詳解(pickle序列化和JSON序列化)
這篇文章主要介紹了Python常用標(biāo)準(zhǔn)庫(kù),主要包括pickle序列化和JSON序列化模塊,通過(guò)使用場(chǎng)景分析給大家介紹的非常詳細(xì),需要的朋友可以參考下2022-05-05超好玩的"隔空操物"通過(guò)Python?MediaPipe庫(kù)實(shí)現(xiàn)
這篇文章主要介紹了python+mediapipe+opencv實(shí)現(xiàn)手部關(guān)鍵點(diǎn)檢測(cè)功能(手勢(shì)識(shí)別),本文僅僅簡(jiǎn)單介紹了mediapipe的使用,而mediapipe提供了大量關(guān)于圖像識(shí)別等的方法,需要的朋友可以參考下2022-01-01Python批量將csv文件編碼方式轉(zhuǎn)換為UTF-8的實(shí)戰(zhàn)記錄
近日在處理數(shù)據(jù)的時(shí)候發(fā)現(xiàn)有的文件為csv文件,Xiam 這篇文章主要給大家介紹了關(guān)于利用Python批量將csv文件編碼方式轉(zhuǎn)換為UTF-8的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-07-07關(guān)于CUDA out of memory的解決方案
這篇文章主要介紹了關(guān)于CUDA out of memory的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-02-02使用Dataframe.info()顯示空值與類(lèi)型信息
這篇文章主要介紹了使用Dataframe.info()顯示空值與類(lèi)型信息,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-02-02