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

如何将DataFrame坐标行合并为单行并生成POLYGON/LINESTRING WKT

解决方案:DataFrame转WKT格式

问题1:生成闭合POLYGON WKT

需求是将包含Easting、Northing列的DataFrame,转换为闭合多边形的WKT字符串,点数不固定。

实现步骤:

  1. 先生成每行的坐标对字符串(你已完成这一步):
df['WKT'] = df[['Easting', 'Northing']].agg(' '.join, axis=1)
  1. 收集所有坐标对,添加第一个点实现闭合,再拼接成标准POLYGON格式:
# 获取所有坐标对列表
coords_list = df['WKT'].tolist()
# 闭合多边形:追加第一个坐标点到列表末尾
coords_list.append(coords_list[0])
# 拼接成最终WKT
polygon_wkt = f"POLYGON(({', '.join(coords_list)}))"

注意:POLYGON的WKT格式要求双层括号,且必须是闭合的(首尾坐标一致)。

问题2:每行生成LINESTRING WKT

需求是为仅含SOLE、SOLN、EOLE、EOLN列的DataFrame,每行生成LINESTRING(SOLE SOLN, EOLE EOLN)格式的WKT。

简洁实现方式:

方式一:矢量化字符串格式化(高效,适合大数据集)

df['LINESTRING_WKT'] = "LINESTRING({} {}, {} {})".format(
    df['SOLE'], df['SOLN'], df['EOLE'], df['EOLN']
)

方式二:apply结合f-string(直观易读)

df['LINESTRING_WKT'] = df.apply(
    lambda row: f"LINESTRING({row['SOLE']} {row['SOLN']}, {row['EOLE']} {row['EOLN']})",
    axis=1
)

这两种方式都避免了冗余操作,比你尝试的.join、Pivot方法更直接,能精准生成所需格式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 13:27:17