1. ST_Buffer(geometry, double, [integer])
buffer操作一个很有用函数,
这个函数的第一个参数是要操作的空间几何数据,第二个参数长度(距离),第三个参数为一个整型,
这个函数返回一个空间数据类型,以当前第一个参数空间几何数据为参考点,返回小于等于距离的空间
几何数据点,最后由这些点组成一个多边形空间数据,最后一个参数表示
在组成一个1/4圆的有几个点分隔。也就是说如果最好一个参数为8那么这个最后组成的多边形就是32边
的多边形,如果不指定这个参数,系统默认的是8
注意:第二个参数,距离它的单位为空间数据单位(度),在运算时需要进行单位换算,最后转换成度
,单位的换算关系如下:
1英里= 63360 米
1米=1/1852 海里
1海里= 1/60度
如果要进行具体的运算,需要进行一下单位换算,比如要求一个500米的范围,那么应该是500*1/1852*1/60(度)
2.获取字段类型
QString sql2 = QStringLiteral("select format_type(a.atttypid, a.atttypmod) as fldType, " "a.attname as fldName from pg_attribute a, pg_stat_user_tables b " "where b.relname = '%1' and b.schemaname = '%2' " " and a.attrelid = b.relid and a.attnum > 0" ).arg(tbName, schemaName);
3.获取字段长度精度等
QString sql1 = QStringLiteral("select ordinal_position as fldIndex, column_name as fldName, " " coalesce(character_maximum_length, numeric_precision, -1) as fldLen," " numeric_scale as decimalLen, is_nullable as nullable from information_schema.columns a " " where a.table_schema = '%1' and a.table_name = '%2' " ).arg(schemaName, tbName);
4.更改字段类型
比如说char的值为1.1 想更改为int 那需要强制转换,这时候可以用到using
alter table 表 alter 字段 type int using 字段::int;
5.获取表的tableoid
"SELECT regclass(public."TblName")::oid as clsid";
6.更改表的srid
ALTER TABLE table ALTER COLUMN geom TYPE geometry(Point,4326) UPDATE table SET geom=ST_SetSRID(geom,4326);