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

如何在Python中将MULTIPOLYGON类型列转换为经纬度数据?

提取WKT格式多边形的经纬度坐标

没问题,处理这种WKT格式的地理数据,用Python的shapely和pandas就能轻松搞定。我给你一套完整的解决方案,适配你提供的POLYGON类型数据,也能兼容MULTIPOLYGON情况:

步骤1:安装依赖库

首先确保你安装了必要的工具包,打开终端运行:

pip install pandas shapely

步骤2:完整代码实现

下面的代码会读取你的数据集,解析WKT字符串,然后把每个多边形的顶点拆分成单独的行,对应name、long.和lat.列:

import pandas as pd
from shapely.wkt import loads

# 模拟你的原始数据集(如果是从CSV读取,用pd.read_csv('your_file.csv')即可)
data = {
    'name': ['place_1 McDonald\'s', 'place_2 McDonald\'s'],
    'wkt': [
        'POLYGON ((13.4611920000000005 52.4709870000000009, 13.4610299999999992 52.4706600000000023, 13.4611959999999993 52.4706290000000024, 13.4612090000000002 52.4706550000000007, 13.4613589999999999 52.4709560000000010, 13.4611920000000005 52.4709870000000009))',
        'POLYGON ((13.4683480000000007 52.5471599999999981, 13.4684080000000002 52.5471560000000011, 13.4684589999999993 52.5471360000000018, 13.4684910000000002 52.5471050000000020, 13.4684960000000000 52.5470729999999975, 13.4685500000000005 52.5470740000000021, 13.4685430000000004 52.5470449999999971, 13.4685269999999999 52.5470180000000013, 13.4684939999999997 52.5469920000000030, 13.4684449999999991 52.5469719999999967, 13.4684080000000002 52.5469629999999981, 13.4683630000000001 52.5469599999999986, 13.4683650000000004 52.5469960000000000, 13.4683159999999997 52.5469989999999996, 13.4682650000000006 52.5470189999999988, 13.4682329999999997 52.5470510000000033, 13.4682270000000006 52.5470880000000022, 13.4682469999999999 52.5471220000000017, 13.4682899999999997 52.5471480000000000, 13.4683480000000007 52.5471599999999981))'
    ]
}
df = pd.DataFrame(data)

# 将WKT字符串解析为Shapely几何对象
df['geometry'] = df['wkt'].apply(loads)

# 初始化列表存储结果行
result_rows = []

# 遍历每一行数据,提取所有顶点坐标
for _, row in df.iterrows():
    place_name = row['name']
    geom = row['geometry']
    
    # 处理POLYGON或MULTIPOLYGON类型
    if geom.geom_type == 'MultiPolygon':
        # 如果是多面,遍历每个子多边形
        for polygon in geom.geoms:
            # 获取多边形外边界的所有顶点(包含闭合的最后一个点)
            coords = list(polygon.exterior.coords)
            for lon, lat in coords:
                result_rows.append({
                    'name': place_name,
                    'long.': lon,
                    'lat.': lat
                })
    else:
        # 普通多边形直接提取顶点
        coords = list(geom.exterior.coords)
        for lon, lat in coords:
            result_rows.append({
                'name': place_name,
                'long.': lon,
                'lat.': lat
            })

# 转换为最终的DataFrame
final_df = pd.DataFrame(result_rows)

# 可选:去掉重复的闭合顶点(因为WKT多边形首尾坐标相同)
# final_df = final_df.drop_duplicates(subset=['name', 'long.', 'lat.'])

# 查看结果
print(final_df.head())

代码说明

  • WKT解析:用shapely.wkt.loads把字符串格式的WKT转换成可操作的几何对象,这是处理地理数据的关键一步。
  • 坐标提取:
    • 对于普通POLYGON,通过geom.exterior.coords获取外边界的所有顶点坐标。
    • 对于MULTIPOLYGON,需要先遍历每个子多边形,再提取每个子多边形的顶点。
  • 结果整理:把每个顶点和对应的name存入列表,最后转换成DataFrame,就得到了你想要的name、long.、lat.三列格式。

运行代码后,你会得到每个地点对应的所有经纬度顶点,完全符合你的需求。

内容的提问来源于stack exchange,提问作者Elham Na

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.29 11:08:10