91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何在Python中使用folium繪制地圖

發布時間:2021-05-24 15:43:59 來源:億速云 閱讀:274 作者:Leah 欄目:開發技術

這期內容當中小編將會給大家帶來有關如何在Python中使用folium繪制地圖,文章內容豐富且以專業的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。

一、簡介

folium 建立在 Python 生態系統的數據應用能力和 Leaflet.js 庫的映射能力之上,在Python中操作數據,然后通過 folium 在 Leaflet 地圖中可視化。

folium 相比較于國內百度的 pyecharts 靈活性更強,能夠自定義繪制區域,并且展現形式更加多樣化。

附:官方文檔,官方示例,本文 notebook ,完整代碼及數據。

二、安裝方法

按照官方的教程即可,如果安裝了 conda ,可以直接

conda install -c conda-forge folium

沒有安裝的話就使用

python3 -m pip install folium

三、主要功能

3.1 各級別地圖

folium 顯示地圖的類為 folium.Map,類的聲明如下

class folium.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)

講幾個重要的參數

  • location 經緯度,list 或者 tuple 格式,順序為 latitude, longitude

  • zoom_start 縮放值,默認為 10,值越大比例尺越小,地圖放大級別越大

  • tiles 顯示樣式,默認*‘OpenStreetMap'*,也就是開啟街道顯示

  • crs 地理坐標參考系統,默認為"EPSG3857"

 3.1.1 世界地圖
import folium

print(folium.__version__)

# define the world map
world_map = folium.Map()
# display world map
world_map

如何在Python中使用folium繪制地圖

3.1.2 國家地圖

# define the national map
national_map = folium.Map(location=[35.3, 100.6], zoom_start=4)
# display national map
national_map

如何在Python中使用folium繪制地圖

3.1.3 市級地圖

其實改變地圖顯示就是改變顯示的經緯度和縮放比例,省級、市級、縣級用法雷同,這里舉一個市級的例子為例,如北京市:

# define the city map
city_map = folium.Map(location=[39.93, 116.40], zoom_start=10)
# display city map
city_map

如何在Python中使用folium繪制地圖

顯示效果確實是不如百度的?。

3.2 地圖形式

除了上述正常的地圖顯示外,folium 還提供了非常豐富的多樣化顯示,控制顯示效果的變量是tiles,樣式有OpenStreetMap, Stamen Terrain, Stamen Toner, Mapbox Bright, Mapbox Control Room等等,這里挑選幾個比較常見的

# define the city map,tiles='Stamen Toner'
city_map = folium.Map(location=[39.93, 116.40], zoom_start=10, tiles='Stamen Toner')
# display city map
city_map
# define the city map, tiles='Stamen Terrain'
city_map = folium.Map(location=[39.93, 116.40], zoom_start=10, tiles='Stamen Terrain')
# display city map
city_map

如何在Python中使用folium繪制地圖

3.3 在地圖上標記

3.3.1 普通標記

添加普通標記用 Marker

這里可以選擇標記的圖案。

bj_map = folium.Map(location=[39.93, 115.40], zoom_start=12, tiles='Stamen Terrain')

folium.Marker(
    location=[39.95, 115.33],
    popup='Mt. Hood Meadows',
    icon=folium.Icon(icon='cloud')
).add_to(bj_map)

folium.Marker(
    location=[39.96, 115.32],
    popup='Timberline Lodge',
    icon=folium.Icon(color='green')
).add_to(bj_map)

folium.Marker(
    location=[39.93, 115.34],
    popup='Some Other Location',
    icon=folium.Icon(color='red', icon='info-sign')
).add_to(bj_map)

bj_map

如何在Python中使用folium繪制地圖

添加圓形標記用 Circle 以及 CircleMarker

bj_map = folium.Map(location=[39.93, 116.40], zoom_start=12, tiles='Stamen Toner')

folium.Circle(
    radius=200,
    location=[39.92, 116.43],
    popup='The Waterfront',
    color='crimson',
    fill=False,
).add_to(bj_map)

folium.CircleMarker(
    location=[39.93, 116.38],
    radius=50,
    popup='Laurelhurst Park',
    color='#3186cc',
    fill=True,
    fill_color='#3186cc'
).add_to(bj_map)

bj_map

如何在Python中使用folium繪制地圖

3.3.2 點擊獲取經緯度
m = folium.Map(location=[46.1991, -122.1889],tiles='Stamen Terrain',zoom_start=13)

m.add_child(folium.LatLngPopup())

m

通過點擊鼠標便可以獲取點擊出的經緯度。

如何在Python中使用folium繪制地圖

3.3.3 動態放置標記
m = folium.Map(
    location=[46.8527, -121.7649],
    tiles='Stamen Terrain',
    zoom_start=13
)

folium.Marker(
    [46.8354, -121.7325],
    popup='Camp Muir'
).add_to(m)

m.add_child(folium.ClickForMarker(popup='Waypoint'))

m

如何在Python中使用folium繪制地圖

3.4 熱力圖繪制

因為沒有實際的經緯度坐標數據,所以這里只能模擬一些位置出來,另外每個位置還需要一個數值作為熱力值。

# generated data
import numpy as np
data = (
    np.random.normal(size=(100, 3)) *
    np.array([[0.1, 0.1, 0.1]]) +
    np.array([[40, 116.5, 1]])
).tolist()
data[:3]

數據分布

[[40.04666663299843, 116.59569796477264, 0.9667425547098781],
 [39.86836537517533, 116.28201445195315, 0.8708549157348728],
 [40.08123232852134, 116.56884585184197, 0.9104952244371285]]

繪制熱力圖

# HeatMap
from folium.plugins import HeatMap
m = folium.Map([39.93, 116.38], tiles='stamentoner', zoom_start=6)
HeatMap(data).add_to(m)
# m.save(os.path.join('results', 'Heatmap.html'))
m

如何在Python中使用folium繪制地圖

3.5 密度地圖繪制

folium 不僅可以繪制熱力圖,還可以繪制密度地圖,按照經緯度進行舉例聚類,然后在地圖中顯示。

from folium.plugins import MarkerCluster

m = folium.Map([39.93, 116.38], tiles='stamentoner', zoom_start=10)

# create a mark cluster object
marker_cluster = MarkerCluster().add_to(m)

# add data point to the mark cluster
for lat, lng, label in data:
    folium.Marker(
        location=[lat, lng],
        icon=None,
        popup=label,
    ).add_to(marker_cluster)

# add marker_cluster to map
m.add_child(marker_cluster)

如何在Python中使用folium繪制地圖

3.6 自定義地圖區域

folium 一個非常有優勢的功能就是自定義區域的繪制了,只要有區域的邊界數據,就可以在地圖中以多種多樣的形式展現出來,這里以 folium 官方的美國地圖為例,源數據是一個 .json 文件,里面包含了各個地區(美國各州)的特征(包括邊界經緯度列表、簡稱等),源數據傳送門,其數據格式如下:

如何在Python中使用folium繪制地圖

3.6.1 只繪制邊界,不添加數據

如果只要求繪制邊界,而不顯示邊界區域的相關信息,那么這個是比較容易的,代碼如下

import json
import requests

# read us-states border 
with open("us-states.json") as f:
    us_states = json.load(f)

us_map = folium.Map(location=[35.3, -97.6], zoom_start=4)
folium.GeoJson(
    us_states,
    style_function=lambda feature: {
        'fillColor': '#ffff00',
        'color': 'black',
        'weight': 2,
        'dashArray': '5, 5'
    }
).add_to(us_map)

#display map
us_map

如何在Python中使用folium繪制地圖

3.6.2 繪制邊界,添加數據

當需要在各個區域填充數據的時候,這個稍微麻煩點,不僅需要各個區域的邊界數據,還需要各個區域的顯示信息,這里同樣也使用官方的美國各州的邊界數據為例:

import geopandas as gpd
import pandas as pd
import folium, branca

states = gpd.GeoDataFrame.from_features(us_states, crs=fiona.crs.from_epsg(4326))
states.head()

如何在Python中使用folium繪制地圖

我們再把收入等數據連接到上表中

abbrs = pd.read_json(open("abbrs.json"))
statesmerge = states.merge(abbrs,how='left', left_on='name', right_on='name')
statesmerge['geometry']=statesmerge.geometry.simplify(.05)
income = pd.read_csv("income.csv", dtype={"fips":str})
income['income-2015']=pd.to_numeric(income['income-2015'], errors='coerce')
income.groupby(by="state")[['state','income-2015']].median().head()
statesmerge['medianincome']=statesmerge.merge(income.groupby(by="state")[['state','income-2015']].median(), how='left', left_on='alpha-2', right_on='state')['income-2015']
statesmerge['change']=statesmerge.merge(income.groupby(by="state")[['state','change']].median(), how='left', left_on='alpha-2', right_on='state')['change']
statesmerge.head()

如何在Python中使用folium繪制地圖

最終繪制出的來的地圖如下:

如何在Python中使用folium繪制地圖

除此之外,還有很多非常有趣的功能,這里就不一一列舉了,感興趣的可以參考官方的文檔。

四、競品對比與優劣勢

國內的競品為百度的 pyecharts,和 folium 一樣都可以實現普通的地圖繪制功能,但是具體使用還有較大的區別,具體如下表

功能pyechartsfolium備注
世界地圖可以可以
中文顯示可以部分可以folium地圖中標尺、文字不能正常顯示,但是嵌入地圖中的中文可以正常顯示
交互性
區(縣)級地圖可以可以folium需要區(縣)邊界數據
市級地圖可以可以folium需要市邊界數據
收費自定義區域需要購買百度ak自定義區域功能免費
靈活性
省級地圖可以可以folium需要省邊界數據
美觀度較好
自定義區域部分可以可以pyecharts需要百度 ak,folium免費

python有哪些常用庫

python常用的庫:1.requesuts;2.scrapy;3.pillow;4.twisted;5.numpy;6.matplotlib;7.pygama;8.ipyhton等。

上述就是小編為大家分享的如何在Python中使用folium繪制地圖了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關知識,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

哈巴河县| 会理县| 武功县| 门头沟区| 荔浦县| 涿州市| 正安县| 邯郸县| 禹州市| 招远市| 桑植县| 威信县| 边坝县| 晴隆县| 新乡县| 太康县| 抚松县| 涞水县| 海原县| 石泉县| 大足县| 芜湖市| 高台县| 岑溪市| 吉安县| 甘南县| 凤翔县| 凉城县| 自治县| 内黄县| 普格县| 视频| 柘城县| 峨眉山市| 营口市| 尉氏县| 洛浦县| 徐水县| 盘山县| 庄河市| 舒城县|