You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在go.Scattermapbox上绘制多边形及提取经纬度方法咨询

解决方案:在Scattermapbox上添加多边形凸包

1. 解析POLYGON格式数据

你的多边形数据是WKT格式(Well-Known Text),核心是提取括号内的经纬度对,注意WKT里的坐标顺序是经度在前,纬度在后。可以用正则表达式快速解析:

import re
import pandas as pd

# 假设多边形数据存储在DataFrame的`geometry`列中
polygons_df = pd.DataFrame({
    'geometry': [
        'POLYGON ((13.77168 45.55315, 13.76797 45.55402, 13.76898 45.55429, 13.77202 45.55397, 13.77309 45.55315))',
        'POLYGON ((11.99333 51.47548, 11.98722 51.48514, 11.98768 51.48617, 11.98827 51.48736, 11.98868 51.48823, 11.99333 51.47548))'
    ]
})

# 定义解析函数
def parse_wkt_polygon(wkt_str):
    # 提取括号内的坐标字符串
    coords_part = re.findall(r'\(\((.*?)\)\)', wkt_str)[0]
    # 分割每个坐标点
    points = coords_part.split(', ')
    # 拆分经纬度并转换为浮点数
    lon_lat_pairs = [tuple(map(float, point.split())) for point in points]
    # 分离经度和纬度列表
    lons = [pair[0] for pair in lon_lat_pairs]
    lats = [pair[1] for pair in lon_lat_pairs]
    # 确保多边形闭合(最后一个点与第一个点重合)
    if lons[-1] != lons[0] or lats[-1] != lats[0]:
        lons.append(lons[0])
        lats.append(lats[0])
    return lons, lats

# 应用解析函数,生成经纬度列
polygons_df[['lon', 'lat']] = polygons_df['geometry'].apply(
    lambda x: pd.Series(parse_wkt_polygon(x))
)

2. 批量添加多边形轨迹到地图

不需要把所有多边形的经纬度合并到同一列,逐个多边形添加独立轨迹是更灵活的方案——可以分别设置每个多边形的样式(颜色、透明度等),也便于后续维护:

# 遍历每个多边形,添加到地图
for _, row in polygons_df.iterrows():
    fig.add_trace(
        go.Scattermapbox(
            mode="lines",
            fill="toself",
            lon=row['lon'],
            lat=row['lat'],
            # 自定义样式示例
            fillcolor='rgba(0, 128, 255, 0.2)',  # 填充色+透明度
            line=dict(color='darkblue', width=2),  # 边框样式
            name='Cluster Convex Hull'  # 轨迹名称,会显示在图例中
        )
    )

关键细节说明

  • 坐标顺序:WKT格式的POLYGON是经度 纬度,提取时不要搞反,否则多边形会出现在错误位置。
  • 闭合要求:必须保证多边形的最后一个点与第一个点坐标一致,否则fill="toself"无法正确填充区域。
  • 性能考量:如果多边形数量超过1000个,可以考虑将所有多边形的经纬度打包为列表的列表,合并成单个轨迹添加,但独立轨迹的可读性和可定制性更强。

内容的提问来源于stack exchange,提问作者Florida Man

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.25 11:18:21