1. 準(zhǔn)備工作
有朋友可能沒(méi)用過(guò)folium
,它其實(shí)就是python
的一個(gè)專業(yè)繪制地圖的第三方庫(kù)榕暇,所以在使用之前需要先安裝它箱硕。
pip install folium
在安裝完成之后,我們可以在jupyterlab
進(jìn)行演示如下:
import folium
m = folium.Map()
m
對(duì)于上面的輸出掉奄,其實(shí)是一個(gè)可交互
的地圖,支持放大縮寫拖拽等等凤薛。
如果你想將輸出存在本地姓建,可以這樣來(lái):
m.save('map.html')
可以看到本地就存了這個(gè)一個(gè)文件,瀏覽器打開就可以進(jìn)行交互式操作了缤苫。
以上就是一個(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ù)可真多盎盍帷;凉贰!
沒(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ū)
以上對(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
水墨畫底圖
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/(可惜我上不去)
另外,在這里也可以找到一些地圖底圖
我后續(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)確!
文末
您的點(diǎn)贊收藏就是對(duì)我最大的鼓勵(lì)钢颂!
歡迎關(guān)注我钞它,分享Python干貨,交流Python技術(shù)殊鞭。
對(duì)文章有何見解遭垛,或者有何技術(shù)問(wèn)題,歡迎在評(píng)論區(qū)一起留言討論操灿!