0
라인 세그먼트에 선 스트링을 어떻게 분할 할 수 있습니까? 예를 들어 SAP HANA DB세그먼트에 hana 선 스트링 보내기
를 사용하여 :
'LINESTRING(0 0, 2 2, 0 2, 0 5)'
이 될 것입니다 :
'LINESTRING(0 0, 2 2) LINESTRING(2 2, 0 2) LINESTRING(0 2, 0 5)'
라인 세그먼트에 선 스트링을 어떻게 분할 할 수 있습니까? 예를 들어 SAP HANA DB세그먼트에 hana 선 스트링 보내기
를 사용하여 :
'LINESTRING(0 0, 2 2, 0 2, 0 5)'
이 될 것입니다 :
'LINESTRING(0 0, 2 2) LINESTRING(2 2, 0 2) LINESTRING(0 2, 0 5)'
당신은 함수 ST_PointN 개별 포인트를 추출 할 수 있습니다().
CREATE TABLE TMP (NUM INT);
select TOP 100 ROW_NUMBER() OVER() from PUBLIC.M_TABLES ;
가 그럼 난 카운터 테이블을 사용하여 모든 지점에 대한 ST_PointN을 적용 포인트 1, 2, 3을 호출하려면 ... N 나는 카운터 값을 저장하는 것 TMP라는 임시 테이블을 사용합니다.
select ST_UnionAggr(CUR_POINT).ST_AsWKT()
from(
select NUM, LS.ST_PointN(NUM) as CUR_POINT
from(
select NEW ST_LineString('LINESTRING(0 0, 2 2, 0 2, 0 5)') as LS, NUM
from TMP
)nested1
where NUM<=LS.ST_NumPoints()
)nested2
이
MULTIPOINT ((0 0),(2 2),(0 2),(0 5))
주를 반환
select NUM, LS.ST_PointN(NUM).ST_WKT() as CUR_POINT
from(
select NEW ST_LineString('LINESTRING(0 0, 2 2, 0 2, 0 5)') as LS, NUM
from TMP
)nested1
where NUM<=LS.ST_NumPoints()
이
NUM| CUR_POINT
1 |POINT (0 0)
2 |POINT (2 2)
3 |POINT (0 2)
4 |POINT (0 5)
당신은 쉽게 ST_UnionAggr를 사용하여 집계()와 ST_MultiPoint를 형상으로 사람들을 연결할 수 있습니다 반환 : 우리는 cou 카운터 테이블을 사용하는 대신 루프를 수행하십시오.
이제 정확한 질문을 위해 창 함수를 사용하여 3 점의 ST_LineString()을 작성하여 현재 점과 다음 점을 결합합니다. 이러한 쿼리를 작성하는 여러 가지 방법이 여기 하나가 있습니다 :
select NEW ST_LineString('LineString ('||START_POINT.ST_X()||' '||START_POINT.ST_Y()||','||END_POINT.ST_X()||' '||END_POINT.ST_Y()||')').ST_AsWKT() as LS
from(
select CUR_POINT as START_POINT,
NEW ST_Point(FIRST_VALUE(CUR_POINT) OVER(order by NUM asc rows BETWEEN 1 following and 1 following))as END_POINT
from(
select NUM, LS.ST_PointN(NUM) as CUR_POINT, LS.ST_NumPoints() as NB_POINTS
from(
select NEW ST_LineString('LINESTRING(0 0, 2 2, 0 2, 0 5)') as LS, NUM
from TMP
)nested1
where NUM<=LS.ST_NumPoints()
)nested2
)nested3
where END_POINT is not null
타다 :
LS
LINESTRING (0 0,2 2)
LINESTRING (2 2,0 2)
LINESTRING (0 2,0 5)