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
联用。