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

如何解析含LINESTRING的字符串提取X/Y坐标用于matplotlib绘图?

解决方法

核心逻辑

你手里的数据是带WKT格式LINESTRING的CSV类结构,不需要复杂的第三方库,用正则匹配筛选+字符串拆分就能完成解析,全程可以结合numpy做数值转换:

  1. 首先从每行里匹配地铁线路标识,筛选出U4对应的所有行
  2. 提取LINESTRING括号内的坐标串,拆分得到所有(x,y)点
  3. 转成numpy数组后直接用matplotlib绘图

可运行代码示例

import re
import numpy as np
import matplotlib.pyplot as plt

# 假设你的3000行原始数据存在raw_lines列表中
raw_lines = [
    'OFFD.271818,271818,"LINESTRING (16.303895355263016 48.18772778239529, 16.304571765172827 48.18758202488568, 16.30482300975865 48.18755484403183, 16.305031079294384 48.187546649202545, 16.30536730486924 48.187533407177206, 16.307523452290432 48.18753396398144, 16.309072536732444 48.18748514596115, 16.312777938045286 48.18734458451529, 16.313426882251083 48.18727411748434, 16.315405366265555 48.186920966444205, 16.316609208646593 48.18670268519608, 16.317260447683868 48.18652861710351, 16.31853471535412 48.186166775088815)",U4,4,U-Bahn,'
]

u4_x = []
u4_y = []

# 正则规则:匹配LINESTRING内容、匹配线路标识
line_re = re.compile(r'LINESTRING \((.*?)\)')
route_re = re.compile(r',(U\d+),\d+,U-Bahn,')

for line in raw_lines:
    # 先筛选U4的行
    route_match = route_re.search(line)
    if not route_match or route_match.group(1) != 'U4':
        continue
    # 提取坐标串
    coord_match = line_re.search(line)
    if not coord_match:
        continue
    coord_str = coord_match.group(1)
    # 拆分每个坐标点
    for point_str in coord_str.split(', '):
        x, y = map(float, point_str.strip().split(' '))
        u4_x.append(x)
        u4_y.append(y)

# 转numpy数组
u4_x = np.array(u4_x)
u4_y = np.array(u4_y)

# 绘图
plt.figure(figsize=(10,6))
plt.plot(u4_x, u4_y, c='#0055aa', linewidth=2, label='U4 Line')
plt.xlabel('Longitude')
plt.ylabel('Latitude')
plt.title('U-Bahn U4 Route')
plt.legend()
plt.axis('equal') # 避免坐标拉伸变形
plt.show()

注意事项

  • 如果你的原始数据是从文件读取的,直接用open()逐行读取替换raw_lines即可
  • 正则已经规避了LINESTRING内部逗号和外层CSV逗号的冲突问题,不需要额外处理双引号
  • 绘图时加plt.axis('equal')可以保证地理坐标的比例不会失真

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 21:54:06