Answers:
这个查询应该可以解决这个问题:
WITH line AS
(SELECT
your_polylinestring_id,
(ST_Dump(geom)).geom AS geom
FROM your_polylinestring_table),
linemeasure AS
(SELECT
ST_AddMeasure(line.geom, 0, ST_Length(line.geom)) AS linem,
generate_series(0, ST_Length(line.geom)::int, 10) AS i
FROM line),
geometries AS (
SELECT
i,
(ST_Dump(ST_GeometryN(ST_LocateAlong(linem, i), 1))).geom AS geom
FROM linemeasure)
SELECT
i,
ST_SetSRID(ST_MakePoint(ST_X(geom), ST_Y(geom)), 31468) AS geom
FROM geometries
首先,您可以使用以下方法从多行字符串列中选择不同的行字符串: ST_Dump
然后,您必须使用定义度量元素ST_AddMeasure
,从0(线串的开始)到线串的结束(与线串的长度相同)开始。Generate_series
会以10的步长在此测量上创建一个序列。您可以"n metres"
在此处进行定义(在本例中为10米)。该i
值对于每个线串都重新开始。
使用ST_LocateAlong
和ST_GeometryN
创建多维点几何。
最后,您必须提取此几何的X和Y值并从中创建一个点。
结果可能如下所示:
编辑
公平地说,我想添加以下信息:此答案中的思想和查询均来自我用于从PostGIS中的DEM创建悬垂线的查询中。Mathieu Leplatre的这篇文章对此进行了很好的解释。
WITH line AS
使用?我在其他地方看不到“线”。
WITH Query
可以将临时表用于较大的查询。以下是一些信息:postgresql.org/docs/8.4/static/queries-with.html。line
在下一个子查询中使用linemeasure
。此子查询中的选定数据基于子查询中的选择line
。他们是相互依存的。希望能有所帮助!
st_locate_along_measure
。