zoukankan      html  css  js  c++  java
  • postgresql 空间函数 随笔

    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);
    

      

  • 相关阅读:
    Java实现 蓝桥杯VIP 算法训练 校门外的树
    Java实现 蓝桥杯VIP 算法训练 统计单词个数
    Java实现 蓝桥杯VIP 算法训练 统计单词个数
    Java实现 蓝桥杯VIP 算法训练 开心的金明
    Java实现 蓝桥杯VIP 算法训练 开心的金明
    Java实现 蓝桥杯 算法训练 纪念品分组
    Java实现 蓝桥杯 算法训练 纪念品分组
    Java实现 蓝桥杯VIP 算法训练 校门外的树
    Java实现 蓝桥杯VIP 算法训练 统计单词个数
    Java实现 蓝桥杯VIP 算法训练 开心的金明
  • 原文地址:https://www.cnblogs.com/CityLcf/p/10695621.html
Copyright © 2011-2022 走看看