PG库常用函数记录
计算质心点坐标:
ST_X(ST_Centroid(geom)) ST_Y(ST_Centroid(geom))
计算图斑面积:
ST_Area(geom)
计算周长:
ST_Perimeter(geom)
计算长度:
ST_Length(geom)
计算最大最小 X Y:
ST_XMin ST_YMin ST_XMax ST_YMax
截取字符串:
substring(zldwdm,1,6)
PG库 查询某张表字段类型及字段名称:
SELECT column_name,udt_name FROM information_schema.columns where table_name = ‘td_xzdw_2019’
PG库 删除某张表数据,但保留表结构
TRUNCATE TABLE tablename;(适合大量数据) delete from tablename;(适合小量数据)
PG库设置更新表的 srid 值
select UpdateGeometrySRID(‘td_dltb_2019’, ‘geom’, 4490);
查询表的 srid 值
select st_srid(geom) from ‘td_dltb_2019’
PG库 获取表字段默认值:
SELECT column_name, column_default
FROM information_schema.columns
WHERE (table_schema, table_name) = (‘public’, ‘td_dltb_2019’)
ORDER BY ordinal_position
获取某个字段默认值:(比如 xjdm 字段)
SELECT column_name, column_default
FROM information_schema.columns
WHERE (table_schema, table_name) = (‘public’, ‘td_dltb_2019’)
and column_name = ‘xjdm’
ORDER BY ordinal_position;
PG库新建库时:
– 新建数据库需要开启postgis插件
– 扩展PG gis插件
CREATE EXTENSION postgis;
CREATE EXTENSION postgis_raster;
CREATE EXTENSION postgis_sfcgal;
CREATE EXTENSION fuzzystrmatch;
CREATE EXTENSION address_standardizer;
CREATE EXTENSION address_standardizer_data_us;
CREATE EXTENSION postgis_tiger_geocoder;
CREATE EXTENSION postgis_topology;
SET postgis.enable_outdb_rasters = True;
SET postgis.gdal_enabled_drivers = ‘ENABLE_ALL’;
删除表中某一字段:
alter table “tablename” drop column if exists “fieldname”
修改表名:
alter table “old_tablename” rename to “new_tablename”
修改字段名:
alter table “tablename” rename ‘old_fieldname’ to ‘new_fieldname’
添加字段:
alter table “tablename” add column fieldname fieldType
(alter table “xx_xxxx” add column xxxx “numeric”(10,3))
表字段添加注释:
comment on column “strTableName”.“fieldName” is ‘fieldAlias’
获取数据库下所有表名称
SELECT table_name FROM information_schema.tables WHERE table_schema=‘public’ AND table_type=‘BASE TABLE’
Sql语句执行顺序记录
-
From 语句;
-
On condition(表连接条件)
-
根据连接条件连接表 ( Join )
-
Where 语句;
-
Group by 语句;
-
Having 语句;
-
Select 语句(设置好条件之后,开始查询)
-
Distinct 语句(对查询结果做去重处理)
-
Order by 语句(对去重之后的结果进行排序)
-
Limit N offset M (排序之后,按条件及偏移量取数据)
由 srid 值以及 wkt 串 通过 st_geographyfromtext 函数 构造一个二进制表示的 OGRGeometry*;
示例:
select st_geographyfromtext(‘SRID=4490;POLYGON((109.73747356 33.859271242,109.73747356 34.4337923620001,110.671924859 34.4337923620001,110.671924859 33.859271242,109.73747356 33.859271242))’)
在PG库中通过执行以上sql语句可以获取一个OGRGeometry*
由 srid 值以及 wkt 串 通过 st_geomfromtext 函数 构造一个二进制表示的 OGRGeometry*;
示例:
select st_geomfromtext(‘MULTIPOLYGON(((108.804296709 34.0693579360001,108.803768677 34.069352655,108.803663128 34.0693516000001,108.803660684 34.0694176170001,108.803652827 34.0696297740001,108.804246326 34.0696459690001,108.804296709 34.0693579360001)))’, 4490)
在PG库中通过执行以上sql语句可以获取一个OGRGeometry*