【问题标题】:ST_ApproximateMedialAxis leaving skeleton lines on final approximationST_ApproximateMedialAxis 在最终近似值上留下骨架线
【发布时间】:2018-12-21 05:53:04
【问题描述】:

我想近似一个封闭的多边形,但 PostGIS 给我的不是一个干净的线串,而是带有 3 个线串的多线串。都是因为直骨架上留下的那条小尾巴。 有没有合适或好的方法来处理这个问题?

【问题讨论】:

  • 这条尾巴是一两行吗(从折线到无处再回来)?
  • 另外,您能否以 wkt 的形式向我们提供此类多行字符串的样本,最好是
  • 我只需要一个线串并获得带有 3 个线串的多线串。我正在寻找的主弦被这个小尾线串分成2个线串。另外,我有许多多边形形状,我想得到一个线串,所以我在寻找一些银弹算法。现在我用正好 2 个点过滤掉 1 个最小的线串,然后尝试合并线并在合并失败的情况下重复。

标签: postgresql postgis computational-geometry medial-axis


【解决方案1】:

您可以对st_approximatemedialaxis() 输出进行后处理,以通过某些标准(例如点数)过滤掉这些尾部:

select st_astext(geom)
from (select (st_dump(x.geom)).geom
    from (values (st_geomfromtext('MULTILINESTRING( (27 80, 18 68, 29 48, 55 58, 53 76, 27 80), (55 58, 58 57))')),
    (st_geomfromtext('MULTILINESTRING( (46 34, 32 21, 44 7, 67 9, 67 29, 46 34), (46 34, 46 36))')),
    (st_geomfromtext('MULTILINESTRING( (69 66, 61 48, 75 40, 94 54, 88 68, 69 66), (61 48, 58 47))'))) as x(geom)) y
where st_npoints(geom)>2

返回

LINESTRING(27 80,18 68,29 48,55 58,53 76,27 80)
LINESTRING(46 34,32 21,44 7,67 9,67 29,46 34)
LINESTRING(69 66,61 48,75 40,94 54,88 68,69 66)

【讨论】:

  • 这就是我现在正在做的事情。我只是想知道 ST_ApproximateMedialAxis 是否有一些注意事项以及一些正确的近似方法
猜你喜欢
  • 2016-06-12
  • 1970-01-01
  • 1970-01-01
  • 2020-08-23
  • 2021-12-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-11-12
相关资源
最近更新 更多