通过百度地理编码 + 坐标转换 + Mapbox Isochrone API 生成等时圈 SHP 文件和预览图。
执行 scripts/generate_isochrone.py,分 6 步完成:
text
[Step 1] 百度地理编码 (BD-09)
→ 地址 → 百度AK → BD-09 经纬度
[Step 2] 坐标转换 (BD-09 → WGS84)
→ coord_convert.bd2wgs()
[Step 3] Mapbox 等时圈 API
→ WGS84 坐标 + 出行模式 + 时间 → GeoJSON 等时圈面
[Step 4] 保存 Shapefile
→ point.shp(起点) + isochrone.shp(等时圈面)
[Step 5] 获取 WGS84 底图
→ ESRI 卫星影像瓦片 → rasterio 重投影为 WGS84 GeoTIFF
[Step 6] 生成预览图
→ matplotlib 叠加渲染(alpha=0.38半透明等时圈 + 卫星底图)
脚本成功后将触发自动发送,agent 必须执行以下步骤:
bash
cd <output_dir>
zip <名称>.zip point.shp point.shx point.dbf point.prj point.cpg \
isochrone.shp isochrone.shx isochrone.dbf isochrone.prj isochrone.cpg \
base_map_wgs84.tif isochrone_preview.jpg
text
action: send
channel: feishu
message: 📍 <地址> · <N>分钟<出行模式>等时圈\n\n🗺️ WGS84坐标:<lng>, <lat>\n覆盖范围:<描述>
media: <preview_jpg路径>
text
action: send
channel: feishu
message: 📦 SHP全套文件包(含.shp/.shx/.dbf/.prj/.cpg + 底图TIFF + 高清预览图)
filePath: <zip路径>
序号参数说明示例1地址任意百度地图可识别的地址天津市南楼煎饼2百度 AK百度地图开放平台 AKMEMORY.md 中已存储3Mapbox AKMapbox 访问令牌MEMORY.md 中已存储4出行模式driving / walking / cyclingwalking5时间(分钟)等时圈时长156输出目录可选,默认为 /root/.openclaw/workspace/isochrone_output可省略
生成在 /root/.openclaw/workspace/isochrone_output/ 下:
文件说明CRSpoint.shp起点(经纬度点)EPSG:4326isochrone.shp等时圈面EPSG:4326isochrone_preview.jpg预览图(卫星底图 + 半透明等时圈)—base_map_wgs84.tifWGS84 重投影底图(EPSG:4326 GeoTIFF)EPSG:4326
text
请帮我生成等时圈:
- 地址:天津市南楼煎饼
- 出行模式:walking
- 时间:15分钟
Agent 应执行:
bash
python3 /root/.openclaw/workspace/skills/baidu-mapbox-isochrone/scripts/generate_isochrone.py "天津市南楼煎饼" "<百度AK>" "<MapboxAK>" "walking" 15
然后按"自动发送流程"打包并发送所有文件给用户。
百度AK 字段Mapbox AK 字段错误原因处理百度地理编码失败AK 无效或地址无法识别检查 AK / 换用更精确的地址Mapbox API 认证失败Mapbox AK 错误核对 AKMapbox API 参数错误 (422)坐标超出支持区域确认地址在支持范围内依赖缺失包未安装pip install coord_convert geopandas shapely pyshp matplotlib --break-system-packages
系统需安装中文字体(matplotlib 使用的字体名为 Noto Sans CJK JP,来自 NotoSansCJK-Regular.ttc)。
Python 依赖:
text
coord_convert, geopandas, shapely, pyshp, matplotlib, rasterio, scipy, pykdtree