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

如何从pandas DataFrame的POLYGON_WKT_TEXT列提取经纬度坐标对列表

pandas解析POLYGON WKT列生成坐标列表方案

两种高效实现方案,均无需按坐标数量拆分多列,时间复杂度为O(n),适配任意坐标点数量的行:

方案1:基于shapely的标准解析方案(推荐)

依赖专门处理WKT格式的shapely库,底层为C实现,效率高且兼容所有标准WKT格式,可自动处理换行、多余空格、带内环的多边形等复杂场景:

  1. 先安装依赖:
pip install shapely
  1. 处理代码:
import pandas as pd
from shapely.wkt import loads as wkt_loads

def wkt_to_coord_list(wkt_str):
    # 解析WKT字符串为多边形对象
    polygon = wkt_loads(wkt_str)
    # 提取多边形外边界的所有坐标点
    coord_pairs = list(polygon.exterior.coords)
    # 按需求格式输出,以下二选一:
    # 选项1:输出数值元组列表:[(-105.0188, 39.6233), ...]
    # return coord_pairs
    # 选项2:输出与示例一致的空格分隔字符串元组列表:[(-105.0188 39.6233), ...]
    return [f"({lon} {lat})" for lon, lat in coord_pairs]
    # 若需要输出为字符串格式的列表,外层套str即可:
    # return str([f"({lon} {lat})" for lon, lat in coord_pairs])

# 应用到DataFrame生成新列
df['POLYGON_WKT_TXT'] = df['POLYGON_WKT_TEXT'].apply(wkt_to_coord_list)

方案2:纯正则字符串处理方案(无第三方依赖)

不需要安装额外库,适合简单场景下的快速处理:

import pandas as pd
import re

def wkt_to_coord_list_by_re(wkt_str):
    # 匹配所有经纬度数字对
    coord_matches = re.findall(r'-?\d+\.\d+\s+-?\d+\.\d+', wkt_str)
    # 按需求格式输出
    return [f"({coord})" for coord in coord_matches]
    # 若需要输出为字符串格式的列表,外层套str即可:
    # return str([f"({coord})" for coord in coord_matches])

# 应用到DataFrame生成新列
df['POLYGON_WKT_TXT'] = df['POLYGON_WKT_TEXT'].apply(wkt_to_coord_list_by_re)

注意:正则方案如果遇到带内环的多边形,会同时提取内环坐标,如有复杂WKT格式需求优先使用方案1。

内容的提问来源于stack exchange,提问作者Hayford K Adjavor

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 16:06:08