1. 程式人生 > >postgis常用函式總結(一)

postgis常用函式總結(一)

1,基本操作函式
AddGeometryColumn(<schema_name>, <table_name>, <column_name>, <srid>, <type>, <dimension>)
給一個已存在屬性資料表增加一個幾何欄位(geomtry column)。schema_name 指表的模式的名字,srid 必須是一個整數指對應於 SPATIAL_REF_SYS 表,type必須是一個大寫的字串,用來描述幾何型別,例如:'POLYGON' 或者 'MULTILINESTRING'。
DropGeometryColumn(<schema_name>, <table_name>, <column_name>)
從一個空間資料表中刪除一個幾何欄位。
ST_SetSRID(geometry, integer)
給一個幾何物件(geometry)設定一個整型的SRID,對於在一個範圍內的查詢非常有用。

2. Geometry Relationship Functions
   幾何空間資料關係函式
ST_Distance(geometry, geometry)
返回兩個幾何物件的距離(笛卡兒距離),不使用索引。

ST_DWithid(geometry, geometry, float)
如果一個幾何物件(geometry)在另一個幾何物件描述的距離(float)內,返回TRUE。如果有索引,會用到索引。

ST_Equals(geometry, geometry)
如果兩個空間物件相等,則返回TRUE。用這個函式比用“=”更好,例如:
equals('LINESTRING(0 0, 10 10)','LINESTRING(0 0, 5 5, 10 10)') 返回 TRUE。
ST_Disjoint(geometry, geometry)
如果兩個物件不相連,則返回TRUE。不要使用GeometryCollection作為引數。

ST_Intersects(geometry, geometry)
判斷兩個幾何空間資料是否相交,如果相交返回true,不要使用GeometryCollection作為引數。
Intersects(g1, g2 ) --> Not (Disjoint(g1, g2 ))
不使用索引可以用_ST_Intersects.
ST_Touches(geometry, geometry)
如果兩個幾何空間物件存在接觸,則返回TRUE。不要使用GeometryCollection作為引數。
a.Touches(b) -> (I(a) intersection I(b) = {empty set} ) and (a intersection b) not empty
不使用索引可以用_ST_Touches.
ST_Crosses(geometry, geometry)
如果兩個幾何空間物件存在交叉,則返回TRUE。不要使用GeometryCollection作為引數。
不使用索引可以用_ST_Crosses.
ST_Within(geometry A, geometry B)
如果幾何空間物件A存在空間物件B中,則返回TRUE,不要使用GeometryCollection作為引數。
不使用索引可以用_ST_Within
ST_Overlaps(geometry, geometry)
如果兩個幾何空間資料存在交迭,則返回 TRUE,不要使用GeometryCollection作為引數。
不使用索引可以用_ST_Overlaps.
ST_Contains(geometry A, geometry B)
如果幾何空間物件A包含空間物件B,則返回 TRUE,不要使用GeometryCollection作為引數。
這個函式類似於ST_Within(geometry B, geometry A)
不使用索引可以用_ST_Contains.
ST_Covers(geometry A, geometry B)
如果幾何空間物件B中的所有點都在空間物件A中,則返回 TRUE。
不要使用GeometryCollection作為引數。
不使用索引可以用_ST_Covers.
ST_CoveredBy(geometry A, geometry B)
如果幾何空間物件A中的所有點都在空間物件B中,則返回 TRUE。
3,Geometry Processing Functions
幾何空間資料處理函式
ST_Centroid(geometry)
返回質心點,就是根據幾何空間資料,活動該幾何空間資料的中心點,返回一個空間點資料.
ST_Area(geometry)
如果幾何空間資料為多邊形,或者多多邊形,則返回空間資料的外圍(返回型別double precision) ;
ST_Length(geometry)
這個曲線在其相關的空間參考長度(返回型別double precision) ;
ST_PointOnSurface(geometry)
一定在幾何空間線資料上的點,返回一個數據點
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(度)