/www/wwwroot/blog/usr/plugins/AMP/templates/MIPpage.php on line 31
">

路网轨迹流量可视化

2024-09-29T22:12:12

交通流量可视化

可视化效果

  • 流量:红色>黄色>蓝色>灰色

可视化代码

{hide}

import json

import pydeck as pdk
from jenkspy import jenks_breaks

center_longitude, center_latitude = 113.481, 22.619  # 默认值
# 读取 GeoJSON 文件
with open('data/road_14.geojson', 'r', encoding='utf-8') as file:
    geojson_data = json.load(file)

# 提取 m_h_flow 数据
m_h_flow_values = [feature['properties'].get('m_h_flow', 0) for feature in geojson_data['features']]

# 计算 Jenks 间断点
breaks = jenks_breaks(m_h_flow_values, 5)

# 定义颜色列表,根据需要调整颜色
colors = [
    [230,230,230],    # 浅灰
    [23,162,255],  # 蓝色
    [255,227,43],  # 黄色
    [253,152,97],  # 橙色
    [255, 0, 0]     # 深红色
]

# 为每个 feature 计算颜色并添加到属性中
for feature in geojson_data['features']:
    flow_value = feature['properties'].get('m_h_flow', 0)
    # 根据 Jenks 间断点确定颜色
    color_index = next(i for i, v in enumerate(breaks) if flow_value <= v) - 1
    color_index = max(0, min(color_index, len(colors) - 1))  # 确保索引在范围内
    feature['properties']['line_color'] = colors[color_index]

# 创建 GeoJsonLayer
layer = pdk.Layer(
    "GeoJsonLayer",
    data=geojson_data,
    pickable=True,
    stroked=True,
    filled=False,  # 线条通常不需要填充
    lineWidthMinPixels=1,
    get_line_color="properties.line_color",  # 使用预计算的颜色
    get_elevation=[0],
    elevation_scale=50,
    get_tooltip={"html": "<div style='color: white; background: black; padding: 8px;'>Flow: {m_h_flow}</div>"}
)

# 定义初始视角
view_state = pdk.ViewState(
    longitude=center_longitude,
    latitude=center_latitude,
    zoom=10,  # 根据实际情况调整缩放级别
    min_zoom=3,
    max_zoom=15,
    pitch=30,
    bearing=0
)

# 创建地图
r = pdk.Deck(layers=[layer], initial_view_state=view_state)

# 保存为 HTML 文件
r.to_html("result/geojson.html")

{/hide}

当前页面是本站的「Baidu MIP」版。发表评论请点击:完整版 »