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

使用不同类型输入创建Shapely Polygon的实现方法咨询

问题1:经纬度字典列表生成Polygon的优化方案

你当前的硬编码下标写法仅能适配固定3个点的输入,列表长度变化时就会报错,更通用的实现方式如下:

x = [{'lat':90.87898, 'lon': -67.7897878}, {'lat':93.87898, 'lon': -77.7897878}, {'lat':33.87898, 'lon': -47.7897878}]
# 列表推导式批量提取所有坐标对,适配任意长度的输入列表
coords = [(point['lat'], point['lon']) for point in x]
poly = Polygon(coords)

注意:生成Polygon需要至少3个不共线的坐标点,生成后可调用poly.is_valid检查几何对象的有效性。

问题2:特殊格式字符串转Polygon对象

你给出的输入字符串用(和]作为每组坐标的包裹符,可以通过正则提取坐标内容后转换,实现代码如下:

import re
from shapely import Polygon

# 示例输入已补充第3个坐标点,否则不足3个点无法生成有效面
y = '(90.87898,-67.7897878](93.87898, -77.7897878](33.87898, -47.7897878]'
# 提取所有括号包裹的坐标文本
coord_strs = re.findall(r'\((.*?)\]', y)
# 转换为浮点型坐标对
coords = []
for item in coord_strs:
    lat, lon = map(float, [i.strip() for i in item.split(',')])
    coords.append((lat, lon))
poly = Polygon(coords)

注意:如果后续数据库返回的包裹符规则有调整,修改正则匹配规则即可适配。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 03:15:04