postgis常用函数

postgis常用函数
SELECT * FROM china LIMIT 5;
--基本的查询语句
--SELECT geom FROM china WHERE china."name"='东城区';
--SELECT geom FROM china WHERE china."name"='西城区';
--SELECT * FROM china WHERE china."name"='朝阳区';
--SELECT geom FROM china WHERE china."name"='石景山区';
--SELECT * FROM china WHERE china."name"='通州区';
--SELECT geom FROM china WHERE china."name"='海淀区';
--SELECT geom FROM china WHERE china."name"='丰台区';
--SELECT geom FROM china WHERE china."name"='大兴区';
--SELECT geom FROM china WHERE china."name"='房山区';
--SELECT geom FROM china WHERE china."name"='门头沟区';

--空间关系查询
--SELECT st_disjoint(a.geom, b.geom) from china a, china b where a.name='石景山区'  and b."name"='丰台区';--是否相连
--SELECT st_intersects(a.geom, b.geom) FROM china a,china b where a.name='海淀区'  and b."name"='丰台区';--是否相交
--SELECT st_distance(a.geom, b.geom) FROM china a,china b where a.name='海淀区'  and b."name"='朝阳区';--求距离
--SELECT st_dwithin(a.geom, b.geom,2) FROM china a,china b where a.name='海淀区'  and b."name"='朝阳区';--是否距离包含
--SELECT st_touches(a.geom, b.geom) FROM china a,china b where a.name='海淀区'  and b."name"='石景山区';--是否接触
--SELECT st_overlaps(a.geom, b.geom) FROM china a,china b where a.name='丰台区'  and b."name"='海淀区';--是否重叠

--Geometry Accessors查询
--SELECT st_area(geom) FROM china where china.name='丰台区' ;--求面积
--SELECT st_length(geom) FROM china WHERE china.name='海淀区';--求长度
--SELECT st_numpoints(geom) FROM china where china.name='海淀区';--求线上的点数
--SELECT st_geometrytype(geom) FROM china where china.name='漠河县';--判断几个类型
--SELECT st_astext(geom) FROM china WHERE china.name='海淀区';--几何空间数据转换成空间数据文本格式
--SELECT st_srid(geom) FROM china WHERE china.name='海淀区';--返回当前几何空间数据的SRID值
--SELECT st_isclosed(geom) FROM china where china.name='海淀区';--判断是否闭合
--SELECT st_isempty(geom) FROM china where china.name='海淀区';--判断是否为空
--SELECT st_isring(geom) FROM china where china.name='海淀区';--判断起始点和终点坐标是否相同
--SELECT st_isvalid(geom) FROM china where china.name='海淀区';--判断是否可用
--SELECT st_issimple(geom) FROM china where china.name='海淀区';
### PostGIS 空间函数概述 PostGIS 提供了大量的空间函数来支持地理空间数据分析和操作。这些函数可以分为几大类,包括但不限于几何构造、几何测量、几何关系判断、转换和其他辅助功能。 #### 几何构造函数 用于创建新的几何对象或修改现有几何对象: - `ST_Buffer(geometry geomA, float width)`:返回给定宽度的缓冲区多边形[^1]。 ```sql SELECT ST_Buffer(ST_GeomFromText('POINT(0 0)'), 5); ``` - `ST_ConvexHull(geometry geomA)`:返回输入几何体的凸包。 ```sql SELECT ST_ConvexHull(ST_Collect( ARRAY[ ST_GeometryFromText('POLYGON((0 0,4 0,4 4,0 4,0 0))'), ST_GeometryFromText('POLYGON((5 5,7 5,7 7,5 7,5 5))') ] )); ``` #### 几何测量函数 提供关于几何属性的信息,如长度、面积等: - `ST_Length(geometry a_geom)`:返回线串或多线串的总长度。 ```sql SELECT ST_Length(ST_GeomFromText('LINESTRING(0 0, 1 1, 2 2)')); ``` - `ST_Area(geometry g)`:计算并返回多边形或多面体表面区域大小。 ```sql SELECT ST_Area(ST_Polygon(ST_MakeLine( ARRAY[ ST_Point(0, 0), ST_Point(0, 5), ST_Point(5, 5), ST_Point(5, 0), ST_Point(0, 0) ]), 0)); ``` #### 关系判断函数 评估两个几何图形之间的拓扑关系: - `ST_Intersects(geometry A, geometry B)`:如果两个几何形状相交则返回 true;否则 false。 ```sql SELECT ST_Intersects( ST_GeomFromText('LINESTRING (0 0 , 1 1)'), ST_GeomFromText('POINT (0.5 0.5)') ); ``` - `ST_Contains(geometry A, geometry B)`:测试集合论上的包含关系,即B完全位于A内部时返回true[^4]。 ```sql SELECT ST_Contains( ST_Polygon(ST_MakeLine( ARRAY[ ST_Point(0, 0), ST_Point(0, 5), ST_Point(5, 5), ST_Point(5, 0), ST_Point(0, 0) ]), 0), ST_Point(2, 2) ); ``` #### 投影变换及其他实用工具 允许用户在不同坐标参照系统之间转换数据,并执行其他常见任务: - `ST_Transform(geometry geomA, integer srid)`:将几何体从一种SRID转换到另一种指定的SRID。 ```sql SELECT ST_AsEWKT(ST_Transform( ST_SetSrid(ST_MakePoint(-71.060316, 48.432044), 4326), 900913 )); ``` 以上仅列举了一部分常用的空间函数,在实际开发过程中可能还会涉及到更多特定场景下的高级用法。对于更详尽的学习资料推荐查阅官方文档或者《PostGIS中文手册》以获取最新最全的知识体系[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值