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

      

  • 相关阅读:
    cmd常用指令
    python笔记01-05
    python安装过程中的一些问题
    初始化spring容器的一种方式
    切入点范式
    spring的list注入多个值
    Statement和PreparedStatement有什么区别?哪个效率高?
    sql 的四种隔离级别
    简单的spring核心配置文件编写
    spring
  • 原文地址:https://www.cnblogs.com/CityLcf/p/10695621.html
Copyright © 2011-2022 走看看