Bu sorgu hile yapmalıdır:
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
İlk önce çoklu sıralama sütunundan farklı satır dizilerini ST_Dump
Daha sonra ST_AddMeasure
, 0 (linestring başlangıcı) ve linestring sonu (linestring uzunluğuyla aynı) ile başlayan ölçü öğelerini tanımlamanız gerekir . Generate_series
10 adımda bu ölçüm üzerinde bir seri oluşturur. Burada tanımlayabilirsiniz "n metres"
(bu örnekte 10 metre). i
Değeri her LineString için yeniden başlar.
İle ST_LocateAlong
ve ST_GeometryN
bir çok boyutlu nokta geometri oluşturun.
Son olarak, bu geometrinin X ve Y değerlerini çıkarmanız ve ondan bir nokta oluşturmanız gerekir.
Sonuç şöyle görünebilir:
DÜZENLE
Adil olmak gerekirse, bu bilgileri eklemek istiyorum: Fikir ve bu yanıttaki sorgu PostGIS DEM'lerden örtü satırları oluşturmak için kullandığım bir sorgudan ayıklanır. Bunun mükemmel uygulaması Mathieu Leplatre'nin bu makalesinde açıklanmıştır .