来源:pythonic生物人
本文介绍deck.gl的Python版本pydeck,基于deck.gl和知名的Mapbox GL;
pydeck支持GPU并行加速,可实现数百万数据点实时高效渲染,在交通流量、大规模空间轨迹分析等领域优势明显
。
![8d8f5efd089daafae21ffe324c16865a.gif](https://img-blog.csdnimg.cn/img_convert/8d8f5efd089daafae21ffe324c16865a.gif)
![f83a914124043a623cbc3436b66bf70a.gif](https://img-blog.csdnimg.cn/img_convert/f83a914124043a623cbc3436b66bf70a.gif)
pydeck安装
pip安装
pip install pydeck
为Jupyter Notebook配置pydeck插件
jupyter nbextension install --sys-prefix --symlink --overwrite --py pydeck
jupyter nbextension enable --sys-prefix --py pydeck
![e8704e0ea4b9e4d0e382c7f6003eb87f.png](https://img-blog.csdnimg.cn/img_convert/e8704e0ea4b9e4d0e382c7f6003eb87f.png)
快速使用
案例1,
icon_layer
使用 (德国啤酒花园的位置)在OpenStreetMap上列出德国啤酒花园的位置,截至2020 年初。
import pydeck as pdk
import pandas as pd
# pydeck数据集准备
DATA_URL = "https://raw.githubusercontent.com/ajduberstein/geo_datasets/master/biergartens.json"
ICON_URL = "https://upload.wikimedia.org/wikipedia/commons/c/c4/Projet_bi%C3%A8re_logo_v2.png"
icon_data = {
"url": ICON_URL,
"width": 242,
"height": 242,
"anchorY": 242,
}
data = pd.read_json(DATA_URL)
data["icon_data"] = None
for i in data.index:
data["icon_data"][i] = icon_data
view_state = pdk.data_utils.compute_view(data[["lon", "lat"]], 0.1)
# pydeck可视化
icon_layer = pdk.Layer(
type="IconLayer",
data=data,
get_icon="icon_data",
get_size=4,
size_scale=15,
get_position=["lon", "lat"],
pickable=True,
)
r = pdk.Deck(layers=[icon_layer],
initial_view_state=view_state,
tooltip={"text": "{tags}"})
# r.to_html("icon_layer.html") #可保存为html格式
r # 直接Jupyter Notebook中渲染
案例2、
hexagon_layer
使用 (1979年以来,英国起发生人身伤害交通事故图)
import pydeck as pdk
# deck.gl中获取数据
UK_ACCIDENTS_DATA = 'https://raw.githubusercontent.com/visgl/deck.gl-data/master/examples/3d-heatmap/heatmap-data.csv'
# 自定义一个HexagonLayer
layer = pdk.Layer('HexagonLayer',
UK_ACCIDENTS_DATA,
get_position=['lng', 'lat'],
auto_highlight=True,
elevation_scale=50,
pickable=True,
elevation_range=[0, 3000],
extruded=True,
coverage=1)
# 设置viewport位置
view_state = pdk.ViewState(longitude=-1.415,
latitude=52.2323,
zoom=6,
min_zoom=5,
max_zoom=15,
pitch=40.5,
bearing=-27.36)
# 渲染
r = pdk.Deck(layers=[layer], initial_view_state=view_state)
r
pydeck也支持
Arc、Grid、Contour、Polygon 等其他常见几何图形
。
![177b1e4b07a8086b1cc84f126f6934a3.png](https://img-blog.csdnimg.cn/img_convert/177b1e4b07a8086b1cc84f126f6934a3.png)
![8004c14b342e861b12c514773b723f8f.png](https://img-blog.csdnimg.cn/img_convert/8004c14b342e861b12c514773b723f8f.png)
![fcc8532c02f699ddbbb261dd926666e6.png](https://img-blog.csdnimg.cn/img_convert/fcc8532c02f699ddbbb261dd926666e6.png)
![285bbd5e47087c91afc499a336cb57a8.png](https://img-blog.csdnimg.cn/img_convert/285bbd5e47087c91afc499a336cb57a8.png)
![ef6213c1494e088515e6731d5a2b05a0.png](https://img-blog.csdnimg.cn/img_convert/ef6213c1494e088515e6731d5a2b05a0.png)
进一步学习:
https://github.com/visgl/deck.gl
https://pydeck.gl/index.html#