路网轨迹流量可视化
交通流量可视化
可视化效果
- 流量:红色>黄色>蓝色>灰色
可视化代码
{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}