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

如何从WKT格式的MultiPolygon中获取坐标数据

提取WKT格式MultiPolygon点位坐标的可行方案

方法1:基于Python Shapely库实现(工程场景优先推荐)

  • 首先安装依赖库:pip install shapely
  • 完整实现代码如下:
from shapely.wkt import loads
from shapely.geometry import MultiPolygon

# 替换为你自己的MultiPolygon WKT数据列表
wkt_list = [
    "MULTIPOLYGON(((0 0, 0 1, 1 1, 1 0, 0 0)), ((2 2, 2 3, 3 3, 3 2, 2 2)))",
]

all_points = []
for wkt_item in wkt_list:
    # 解析WKT为几何对象
    geom = loads(wkt_item)
    # 仅处理MultiPolygon类型的几何数据
    if not isinstance(geom, MultiPolygon):
        continue
    # 遍历MultiPolygon下的每个子Polygon
    for poly in geom.geoms:
        # 提取外环所有坐标点
        for coord in poly.exterior.coords:
            all_points.append(coord)
        # 提取所有内环(孔洞)的坐标点
        for interior_ring in poly.interiors:
            for coord in interior_ring.coords:
                all_points.append(coord)

# 如需对坐标去重可执行以下代码
# all_points = list(set(all_points))

print(all_points)

这个方案会自动适配所有合法的WKT格式,无需手动处理嵌套括号、格式兼容等问题,容错率更高。

方法2:无第三方依赖的手动解析方案

如果不方便安装外部库,且你手里的WKT格式高度规范,可以直接用字符串处理逻辑提取坐标:

# 替换为你自己的MultiPolygon WKT数据列表
wkt_list = [
    "MULTIPOLYGON(((0 0, 0 1, 1 1, 1 0, 0 0)), ((2 2, 2 3, 3 3, 3 2, 2 2)))",
]

all_points = []
for wkt_item in wkt_list:
    # 移除WKT头部标识和所有括号
    clean_content = wkt_item.replace("MULTIPOLYGON", "").replace("(", "").replace(")", "").strip()
    # 分割得到所有坐标对
    coord_pairs = clean_content.split(",")
    for pair in coord_pairs:
        pair = pair.strip()
        if not pair:
            continue
        # 拆分x、y坐标并转为浮点型
        x, y = map(float, pair.split())
        all_points.append((x, y))

print(all_points)

注意:该方案仅适合格式标准无特殊字符的WKT数据,遇到不规范格式容易出现解析错误。

内容的提问来源于stack exchange,提问作者Alberto Sanmartin Martinez

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 02:54:03