You need to enable JavaScript to run this app. 如何将MultiLineString/LineString拆分为含2个点的LineString子集
优惠活动
大模型
产品
解决方案
定价
更多

如何将MultiLineString/LineString拆分为含2个点的LineString子集

LineString/MultiLineString 拆分为两点线段实现方案

核心拆分逻辑

  • 处理LineString对象时:遍历其所有坐标点,依次取第N和第N+1个点,两两拼接为新的两点LineString即可。
  • 处理MultiLineString对象时:先遍历取出其中包含的每一个LineString元素,对每个LineString单独执行上述拆分逻辑,最后汇总所有拆分结果即可。

你提到的输入LINESTRING(0 0, 1 0, 1 1, 0 1)拆分后即可得到示例中的三个两点线段:

  • LINESTRING(0 0, 1 0)
  • LINESTRING(1 0, 1 1)
  • LINESTRING(1 1, 0 1)

常用场景代码示例

Python Shapely 实现

from shapely.geometry import LineString, MultiLineString

def split_to_two_point_linestrings(geometry):
    result = []
    # 处理MultiLineString的情况
    if geometry.geom_type == 'MultiLineString':
        for line in geometry.geoms:
            coords = list(line.coords)
            for i in range(len(coords)-1):
                result.append(LineString([coords[i], coords[i+1]]))
    # 处理LineString的情况
    elif geometry.geom_type == 'LineString':
        coords = list(geometry.coords)
        for i in range(len(coords)-1):
            result.append(LineString([coords[i], coords[i+1]]))
    return result

# 测试LineString
test_line = LineString([(0,0), (1,0), (1,1), (0,1)])
for line in split_to_two_point_linestrings(test_line):
    print(line.wkt)

# 测试MultiLineString
test_multi = MultiLineString([[(0,0), (1,0), (1,1)], [(2,2), (3,2), (3,3)]])
for line in split_to_two_point_linestrings(test_multi):
    print(line.wkt)

PostGIS SQL 实现

-- 拆分单个LineString
SELECT ST_AsText(ST_MakeLine(ST_PointN(geom, n), ST_PointN(geom, n+1))) AS split_line
FROM (SELECT 'LINESTRING(0 0, 1 0, 1 1, 0 1)'::geometry AS geom) AS t
CROSS JOIN generate_series(1, ST_NPoints(geom)-1) AS n;

-- 拆分MultiLineString
SELECT ST_AsText(ST_MakeLine(ST_PointN(line_geom, n), ST_PointN(line_geom, n+1))) AS split_line
FROM (
    SELECT (ST_Dump('MULTILINESTRING((0 0, 1 0, 1 1),(2 2, 3 2, 3 3))'::geometry)).geom AS line_geom
) AS t
CROSS JOIN generate_series(1, ST_NPoints(line_geom)-1) AS n;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.08 14:15:02