pydeck助数百万数据点高效可视化渲染

来源:pythonic生物人

  • 本文介绍deck.gl的Python版本pydeck,基于deck.gl和知名的Mapbox GL;

  • pydeck支持GPU并行加速,可实现数百万数据点实时高效渲染,在交通流量、大规模空间轨迹分析等领域优势明显

8d8f5efd089daafae21ffe324c16865a.gif
某一时刻,世界空中交通情况
f83a914124043a623cbc3436b66bf70a.gif
近距离展示月球表面的LROC WAC Mosaic

c041f0c6961bb50fafbf325d5a62973d.gif

hexagon

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

快速使用

  • 案例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中渲染

935f1214b78a682a4f94ece7d71cea29.gif

  • 案例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

4973fa0f5cfa7125ba7196f9503412e8.gifpydeck也支持Arc、Grid、Contour、Polygon 等其他常见几何图形

177b1e4b07a8086b1cc84f126f6934a3.png
Arc
8004c14b342e861b12c514773b723f8f.png
Grid
fcc8532c02f699ddbbb261dd926666e6.png
Contour
285bbd5e47087c91afc499a336cb57a8.png
Paths
ef6213c1494e088515e6731d5a2b05a0.png
more......

  • 进一步学习:
    https://github.com/visgl/deck.gl
    https://pydeck.gl/index.html#

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值