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

posted @ 2013-03-12 23:52  清灵阁主  阅读(2119)  评论(0编辑  收藏  举报