PostGIS之路 雜項功能函式

2022-08-01 19:39:12 字數 3421 閱讀 6726

1、st_accum

構造幾何圖形陣列。該函式支援3d、圓、曲面、多面體、三角網、tin資料。

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

POSTGIS常用函式

1,基本操作函式 addgeometrycolumn 給乙個已存在屬性資料表增加乙個幾何字段 geomtry column schema name 指表的模式的名字,srid 必須是乙個整數指對應於 spatial ref sys 表,type必須是乙個大寫的字串,用來描述幾何型別,例如 polyg...

Postgis常用函式

addgeometrycolumn 給乙個已存在屬性資料表增加乙個幾何字段 geomtrycolumn schema name 指表的模式的名字,srid 必須是乙個整數指對應於 spatial ref sys 表,type必須是乙個大寫的字串,用來描述幾何型別,例如 polygon 或者 mult...

postgis常用函式總結 二

原文 st envelope geometry 這個函式可以返回mbr 空間最小外包矩形 傳入引數可以是point line polygon。st extent geometry set 這個函式可以對乙個空間資料集進行操作,返回乙個最小包含矩形 mbr 如 select extent geom f...