GeoServer 学习(四)存储过程示例
选择下面任何一个存储过程进行测试。
先创建这个存储过程,然后 导入 road_ld数据 即可测试。
/* 存储过程 路段长度*/
create or replace function getLengthRoadLD(Curgid int)
returns varchar as
$$
begin
return( select ST_Length(geom) from road_ld where gid=Curgid );
end;
$$
language plpgsql;
/* 存储过程 线路长度*/
create or replace function getLengthRoadXL(name “text”)
returns varchar as
$$
begin
return(select ST_Length(ST_Union(array(SELECT geom FROM public.road_ld where 名称=name)))) ;
end;
$$
language plpgsql;
/* 存储过程 线路起点 位置*/
create or replace function getStartPointFromRoad(name “text”)
returns varchar as
$$
begin
return(select st_astext( _pgr_endpoint(ST_Union(array(SELECT geom FROM public.road_ld where 名称=name)))) );
end;
$$
language plpgsql;
/* 存储过程 线路终点 位置*/
create or replace function getEndPointFromRoad(name “text”)
returns varchar as
$$
begin
return(select st_astext( _pgr_endpoint(ST_Union(array(SELECT geom FROM public.road_ld where 名称=name)))) );
end;
$$
language plpgsql;
/* 存储过程 路段起点 位置*/
create or replace function getStartPointFromSection(Curgid int)
returns varchar as
$$
begin
–return (select st_asText((select geom from road_ld where gid=myname limit 1)));–没有select top 1 from tablename ….
return(select st_astext(_pgr_startpoint(geom)) as qidian FROM road_ld where gid=Curgid);
end;
$$
language plpgsql;
/* 存储过程 路段终点 位置*/
create or replace function getEndPointFromSection(Curgid int)
returns varchar as
$$
begin
return(select st_astext(_pgr_endpoint(geom)) as qidian FROM road_ld where gid=Curgid);
end;
$$
language plpgsql;
select ST_Area(geom) from bou2_4p where name=’安徽省’ –计算面积
select ST_Length((select geom from bou2_4l where name=’湖南省’)) –计算面积
select * from getStartPointFromSection(2);–路段起点 位置
select * from getEndPointFromSection(2);–路段终点 位置
select * from getStartPointFromRoad(‘西南路’);–线路起点 位置
select * from getEndPointFromRoad(‘西南路’);–线路终点 位置 ST_Length
select getLengthRoadLD(3);
select * from getLengthRoadXL(‘西南路’);–线路终点 位置 ST_Length
select getLengthRoadXL(‘西南路’);
转载自:https://blog.csdn.net/qq_35170213/article/details/80006356