PostGIS:空间查询-点线距离、几何中心、周长面积、简化几何、凸包计算等

ST_SHORTESTLINE函数计算点距离线最短的距离:

CREATE VIEW vm_shortestline AS
SELECT b.id as id,
ST_ASTEXT(ST_SHORTESTLINE(a.geom,b.geom)) as text,
ST_SHORTESTLINE(a.geom,b.geom) AS geom
FROM road a, building b
WHERE a.id =5 and b.id=22;

ST_LONGESTLINE函数计算点距离线最长的距离:

CREATE VIEW vm_longestline AS
SELECT b.id as id,
ST_ASTEXT(ST_LONGESTLINE(a.geom,b.geom)) as text,
ST_LONGESTLINE(a.geom,b.geom) AS geom
FROM road a, building b
WHERE a.id =5 and b.id=22;

ST_CENTROID函数计算Saskatchewan的几何中心:

 CREATE VIEW vw_region_centroid AS
 SELECT a.id as id, ST_CENTROID(a.geom) as geom
 FROM region a
 WHERE a.name = 'Saskatchewan';

ST_PERIMETER函数和ST_AREA函数计算Queensland的周长与面积:

SELECT ST_PERIMETER(a.geom)
FROM region a
WHERE a.name='Queensland';
结果
   st_perimeter    
--------------------
 10240.397773417737

SELECT ST_AREA(a.geom)
FROM region a
WHERE a.name='Queensland';
结果
st_area      
-------------------
 5451967.293865168

ST_Simplify函数简化道路的几何,裁弯取直,设置容差为20。

CREATE VIEW vw_simplify AS
SELECT id, ST_Simplify(geom, 20) AS geom
FROM road;

使用ROW_NUMBER()函数、ST_CONVEXHULL函数、ST_COLLECT函数计算几何图形凸包,形成覆盖相同名称建筑物的图斑。其中:ROW_NUMBER() 是一个窗口函数,用于为结果数据中的每一行分配一个唯一的、连续的整数编号;ST_COLLECT 函数将 building 表中 a.geom 列的所有几何对象合并成一个几何集合;ST_CONVEXHULL 函数对合并后的几何集合创建凸包。凸包是包含所有几何对象的最小凸多边形,该结果存储在名为 geom 的列中。

CREATE VIEW vw_convex_hull AS
	SELECT
    	ROW_NUMBER() over (order by a.name) as id,
		a.name as town,
   		ST_CONVEXHULL(ST_COLLECT(a.geom)) AS geom
    FROM building a
    GROUP BY a.name;

其他函数包括:st_startpoint 选择线的第一个顶点;ST_INTERSECT() 裁剪函数;st_isempty 判断几何图形是否是空几何,返回true/false,可以与where not联用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值