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

如何将含POLYGON的DataFrame转换为GeoJSON用于choropleth_mapbox?

解决Pandas DataFrame转GeoJSON用于choropleth_mapbox的方法

要把带WKT格式多边形的DataFrame转换成GeoJSON,核心是先把字符串格式的WKT转为空间几何对象,再导出。以下是具体步骤:

步骤1:安装依赖库

首先确保安装了geopandas(处理空间数据的扩展库):

pip install geopandas

步骤2:转换WKT为几何对象并创建GeoDataFrame

利用geopandas把DataFrame中的boundaries列(WKT格式)转为几何对象,再构建GeoDataFrame:

import pandas as pd
import geopandas as gpd

# 你的原始DataFrame
df = pd.DataFrame({
    "zone":["A","B"],
    "boundaries":["POLYGON ((10.90973 43.67753, 10.90903 43.68038, ..., 10.90973 43.67753))","POLYGON ((10.93576 43.72298, 10.93573 43.72162, ..., 10.93576 43.72298))"]
})

# 将WKT字符串转为几何对象
df['geometry'] = gpd.GeoSeries.from_wkt(df['boundaries'])

# 创建GeoDataFrame,指定坐标系(Mapbox适配WGS84,即EPSG:4326)
gdf = gpd.GeoDataFrame(df, geometry='geometry', crs="EPSG:4326")

# 可选:删除原始的boundaries列,精简数据
gdf = gdf.drop('boundaries', axis=1)

步骤3:导出为GeoJSON

直接用GeoDataFrame的to_file方法导出到本地文件,或者用to_json获取字符串格式:

# 导出到本地GeoJSON文件
gdf.to_file("zones.geojson", driver='GeoJSON')

# 如果需要直接获取GeoJSON字符串(用于直接传入plotly)
geojson_str = gdf.to_json()

用于plotly choropleth_mapbox的示例

导出后可直接在plotly中调用该GeoJSON生成可视化:

import plotly.express as px

# 为每个区域添加数值数据(示例)
gdf['value'] = [15, 25]

fig = px.choropleth_mapbox(gdf,
                           geojson=gdf.geometry,
                           locations=gdf.index,
                           color='value',
                           mapbox_style="carto-positron",
                           center={"lat": 43.7, "lon": 10.92},
                           zoom=12)
fig.show()

常见问题排查

  • 若转换报错,检查WKT格式是否合规:确保多边形首尾坐标一致(闭合),无语法错误。
  • 必须设置坐标系为EPSG:4326,否则Mapbox无法正确识别空间位置。

内容的提问来源于stack exchange,提问作者arrabattapp man

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 06:25:19