답변:
이 쿼리는 트릭을 수행해야합니다.
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"
에서이 미터 (10m)를 정의 할 수 있습니다 . 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
입니다.