PostgreSQL数据库常用的sql语句总结

1.在普通业务表中创建geometry字段

alter table b_code_stats add geom geometry(MultiPoint,3857);

2.将普通经纬度字段转换成web墨卡托3857格式的geometry字段

update b_code_stats set geom = st_multi(st_transform(ST_GeometryFromText('POINT('||f_lng||' '||f_lat||')',4326), 3857)) ;

思路:通过经纬度字段,构建对应的wkt的text文本,然后通过ST_GeometryFromText()函数将其转换成4326坐标系的geometry字段,再用st_transform()函数将其转换成3857投影坐标下的geometry字段,最后通过st_multi()函数将单点类型转换成多点类型。

3.恢复数据库表结构和数据

  • 恢复整库:pg_restore --dbname=CJHD --jobs=4 --verbose  CJHD.backup

  • 恢复单个表及其数据:pg_restore  -t citycode -d testdb citycode.sql

4.修改表中geom字段的srid值

update b_code_stats  set  geom  =  st_setsrid(geom ,3857)

5.常用转换函数

  • st_astext(geom)       实现geometry 到wkt的转换

  • st_geomfromtext(wkt,wkid)       实现wkt到geomrtry的转换

  • st_asgeojson(geometry)       geometry转geojson:

  • st_geomfromgeojson(geojson)       geojson转geometry

  • st_transform(geometry, integer)       坐标转换

6.常用空间关系判断函数

  • st_equals(geometryA, geometryB)       相等(Equals)--几何形状拓扑上相等。

  • st_disjoint(geometryA, geometryB)       脱节(Disjoint)--几何形状没有共有的点。

  • st_intersects(geometryA, geometryB)       相交(Intersects)--几何形状至少有一个共有点(区别于脱节)。

  • st_touches(geometryA, geometryB)       接触(Touches)--几何形状有至少一个公共的边界点,但是没有内部点。

  • st_crosses(geometryA, geometryB)       交叉(Crosses)--几何形状共享一些但不是所有的内部点。

  • st_within(geometryA, geometryB)       内含(Within)--几何形状A的线都在几何形状B内部。

  • st_dwithin(geometry, geometry, double precision)       检测一个对象是否在另一个对象的缓冲区范围内。

  • st_contains(geometryA, geometryB)       包含(Contains)--几何形状B的线都在几何形状A内部(区别于内含)。

  • st_overlaps(geometryA, geometryB)       重叠(Overlaps)--几何形状共享一部分但不是所有的公共点,而且相交处有他们自己相同的区域。

7.常见的空间操作(Geometry Operations)

  • st_buffer(geom,distance)或者st_buffer(wkt,distance)       缓冲区 

  • st_intersection(geom,geom)或者st_intersection(wkt,wkt)       相交计算

  • st_union(geom,geom,…)或者st_union(wkt,wkt,…)       合并计算

  • st_difference(geomA,geomB)或者st_difference(wkt,wkt)       差异计算--AB形状的差异分析就是A里有B里没有的所有点的集合。

  • st_symdifference(geomA,geomB)       对称差异分析--AB形状的对称差异分析就是位于A中或者B中但不同时在AB中的所有点的集合

具体关系如下图所示

8.其他一些常用函数

  • st_isempty(geom)      判断是否为空

  • st_x(geom)/ st_y(geom)      中心点x/y

  • st_distance(geom,geom)      或者st_distance(wkt,wkt)      两点间的距离

  • st_distance_sphere(point a,point b)      根据经纬度,获取两点距离(单位:米)

  • st_geometrytype(geometry A)      得到几何类型

  • st_length(geom)或者st_length(wkt)      线的长度/面的周长

  • st_area(geom)或者st_area(wkt)      面的面积

9.postgresql创建序列,并于自增字段关联

创建序列: CREATE SEQUENCE t_certificate_c_certificateid_seq
    START WITH 1
    INCREMENT BY 1
    NO MINVALUE
    NO MAXVALUE
    CACHE 1;
将表字段与序列相关联    
alter table t_certificate alter column c_certificateid set default nextval('t_certificate_c_certificateid_seq');

发布了36 篇原创文章 · 获赞 3 · 访问量 4万+

猜你喜欢

转载自blog.csdn.net/jinxiumeihappy/article/details/89375476