--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等距离切分线,返回点串
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
推荐阅读更多精彩内容
- 很多活跃在社区贴吧或微博天涯的童鞋都喜欢分享截图,无论是自己看到的奇闻轶事,还是坊间流传的八卦聊天记录,恨不得立马...