zoukankan      html  css  js  c++  java
  • PostGIS之路——杂项功能函数

    1、ST_Accum

            构造几何图形数组。该函数支持3d、圆、曲面、多面体、三角网、TIN数据。

    geometry[]ST_Accum(geometry set geomfield);

    示例SQL:

    SELECT (ST_Accum(the_geom)) As all_em, ST_AsText((ST_Accum(the_geom))[1]) As grabone,
     (ST_Accum(the_geom))[2:4] as grab_rest FROM (SELECT ST_MakePoint(a*CAST(random()*10 As integer),
     a*CAST(random()*10 As integer), a*CAST(random()*10 As integer)) As the_geom
     FROM generate_series(1,4) a) As foo;

    2、Box2D

            返回一个Box2D表示一个二位几何图形的最大范围。该函数支持圆、曲面、多面体、三角网、TIN数据。

    box2dBox2D(geometry geomA);

    示例SQL:

     SELECT Box2D(ST_GeomFromText('LINESTRING(1 2, 3 4, 5 6)'));

     SELECT Box2D(ST_GeomFromText('CIRCULARSTRING(220268 150415,220227 150505,220227 150406)'));

    3、Box3D

          返回一个Box3D表示一个三维几何图形的最大范围。该函数支持3d、圆、曲面、多面体、三角网、TIN数据

    box3dBox3D(geometry geomA);

    示例SQL:

     SELECT Box3D(ST_GeomFromEWKT('LINESTRING(1 2 3, 3 4 5, 5 6 5)'));

     SELECT Box3D(ST_GeomFromEWKT('CIRCULARSTRING(220268 150415 1,220227 150505 1,220227 150406 1)'));

    4、ST_Estimated_Extent

           返回所给的空间表达估计范围。这个估计值来自几何图形数据列的统计。如果没有注明,默认当前模式可用。注意:如果是空表或没有几何类型字段,将返回空。1.5.4以前版本抛出异常刚好相反。小于PostgreSQL8.0时,应该用 update_geometry_stats()替换。

    box2dST_Estimated_Extent(text schema_name, text table_name, text geocolumn_name);
    box2dST_Estimated_Extent(text table_name, text geocolumn_name);

     示例SQL:

     SELECT ST_Estimated_Extent('tproads_project', 'geom');

    5、ST_Expand

          返回几何图形边框范围向各个方向上扩展一定距离的边框范围。类似于缓冲区向所有方向扩展,只是返回矩形范围。使用单位与系统单位SRID一致。该函数据在距离查询中经常使用。

    geometryST_Expand(geometry g1, float units_to_expand);返回 POLYGON类型几何对象,
    box2dST_Expand(box2d g1, float units_to_expand);
    box3dST_Expand(box3d g1, float units_to_expand);

          注意事项:1.5.0版本距离类型用double precision 替换 float4 。二维使用多于三维。PostGIS版本小于1.2中,用ST_DWithin。

    示例SQL:

     SELECT CAST(ST_Expand(ST_GeomFromText('LINESTRING(2312980 110676,2312923 110701,2312892 110714)', 2163),10) As box2d);

     SELECT ST_AsEWKT(ST_Expand(ST_GeomFromEWKT('SRID=2163;POINT(2312980 110676)'),10));

    6、ST_Extent

           一个返回多个几何对象边界范围的聚合函数。这意味着它可以操作列表数据。相同的方法如SUM()和SVG()。单位使用系统参考系单位。这个函数类似于 Oracle Spatial/Locator的SDO_AGGR_MBR。

    box2dST_Extent(geometry set geomfield);

           注意:这个函数只返回X和Y,如果是三维时使用三维函数ST_3DExtent。2.0.0版本支持圆、曲面、三角网、TIN。

    示例:

     SELECT ST_Extent(geom) as bextent FROM tproads_project;

    7、ST_3DExtent

            返回三维几何对象的三维边界。

    box3dST_3DExtent(geometry set geomfield);

    SELECT ST_3DExtent(foo.the_geom) As b3extent
    FROM (SELECT ST_MakePoint(x,y,z) As the_geom
    FROM generate_series(1,3) As x
    CROSS JOIN generate_series(1,2) As y
    CROSS JOIN generate_series(0,2) As Z) As foo;

    8、Find_SRID

           这个函数返回SRID号通过查询几何字段列表中找到SRID的。

    integer Find_SRID(varchar a_schema_name, varchar a_table_name, varchar a_geomfield_name);

    示例SQL:

    SELECT Find_SRID('public', 'tproads_project', 'geom');

    9、ST_Mem_Size

           返回几何对象需要的空间的数量(字节)。

    integer ST_Mem_Size(geometry geomA);

    示例SQL:

     SELECT ST_Mem_Size(ST_GeomFromText('CIRCULARSTRING(220268 150415,220227 150505,220227 150406)'));

    10、ST_Point_Inside_Circle

           返回一个点是否在中心点坐标为_X,_Y,半径radius的圆内。t为在圆内。在圆上为f。

    booleanST_Point_Inside_Circle(geometry a_point, float center_x, float center_y, float radius);

    示例SQL:

     SELECT ST_Point_Inside_Circle(ST_Point(1,2), 0.5, 2, 3);

  • 相关阅读:
    安装ThinkPHP
    PHP数据如何向上取整
    Bootstrap 网格系统
    一篇文章让你详细了解何为JSON
    swan.onPageNotFound
    php长连接和短连接的使用场景
    写php用什么编辑器
    php随机数原理
    php接受post传值的方法
    做网站用php还是python
  • 原文地址:https://www.cnblogs.com/LCGIS/p/2956829.html
Copyright © 2011-2022 走看看