--PG将线等距离切割,line 必须是Polyline类型,不能是mutilLine类型,interval_length间隔距离
CREATE
OR REPLACE FUNCTION GetLinePoints (line geometry,interval_length FLOAT) RETURNS VARCHAR AS $$
DECLARE pointCount integer;
DECLARE ii INTEGER ;
DECLARE num INTEGER ;
DECLARE pointLatLog VARCHAR;
BEGIN
ii := 1 ; num = 1 ; pointLatLog:='';
--获取等距离分割后的点数
pointCount=st_npoints(ST_Segmentize (st_transform (line, 3857),interval_length));
FOR ii IN 1..pointCount LOOP raise notice '%', num;
--将点的坐标进行切分
--120.21668534667,30.2468406908998,120.217042136705,30.2466049913211,120.21739892674,30.2463692911771,120.217755716775,30.2461335904676,120.21811250681,30.2458978891928,120.218469296845,30.2456621873526,120.218557880024,30.2456036676422
pointLatLog=pointLatLog||(SELECT
st_x(
st_transform(ST_PointN (ST_Segmentize (
st_transform (line, 3857),
interval_length
),
num
),4326))||','||st_y(
st_transform(ST_PointN (
ST_Segmentize (
st_transform (line, 3857),
interval_length
),
num
),4326)));
IF( num<pointCount ) THEN
pointLatLog=pointLatLog||',';
end if;
num = num + 1 ;
END loop ; RETURN pointLatLog;
END ; $$ LANGUAGE plpgsql;
--调用方式,按50米进行切分
select GetLinePoints(t.geom,50) from road_segment_copy2 t
PG等距离切分线,返回点串
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 很多活跃在社区贴吧或微博天涯的童鞋都喜欢分享截图,无论是自己看到的奇闻轶事,还是坊间流传的八卦聊天记录,恨不得立马...