PostGreSQL(五)PostGIS-常用函數


PostGIS中的常用函數

圖形和地理位置

  • ST_GeometryType(geometry) —— 返回幾何圖形的類型

  • ST_Transform(geometry, srid)——將幾何圖形投影為地理坐標數據 或 轉換為不同srid坐標系統的坐標數據

  • Geography(geometry)——將基於EPSG:4326(srid=4326)的geometry數據類型轉換為geography數據類型

  • ST_NDims(geometry) —— 返回幾何圖形的維數

  • ST_SRID(geometry) —— 返回幾何圖形的空間參考標識碼 srid

  • ST_SetSRID(geometry,SRID)——設置srid

  • sum(expression) ——返回一個計算式/表達式的和

  • count(expression) ——返回一個表達式中的次數

PS : geometry,是幾何類型的列的列名

srid,不同的srid就是不同標准的坐標系

點空間函數

  • ST_X(geometry) —— 返回X坐標

  • ST_Y(geometry) —— 返回Y坐標

線串空間函數

  • ST_Length(geometry) —— 返回線串的長度

  • ST_StartPoint(geometry) —— 將線串的第一個坐標作為點返回

  • ST_EndPoint(geometry) —— 將線串的最后一個坐標作為點返回

  • ST_NPoints(geometry) —— 返回線串的坐標數量

多邊形空間函數

  • ST_Area(geometry) —— 返回多邊形的面積

  • ST_NRings(geometry) —— 返回多邊形中環的數量(通常為1個,其他是孔)

  • ST_ExteriorRing(geometry) —— 以線串的形式返回多邊形最外面的環

  • ST_InteriorRingN(geometry, n) —— 以線串形式返回指定的內部環

  • ST_Perimeter(geometry) —— 返回所有環的長度

集合空間函數(多點、多線、多面、任意圖形組合):

  • ST_NumGeometries(geometry) —— 返回集合中的組成部分的數量

  • ST_GeometryN(geometry, n) —— 返回集合中指定的組成部分

  • ST_Area(geometry) —— 返回集合中所有多邊形組成部分的總面積

  • ST_Length(geometry) —— 返回所有線段組成部分的總長度

幾何圖形輸入和輸出

在數據庫中,幾何圖形(Geometry)以僅供PostGIS使用的格式存儲在磁盤上。為了讓外部程序插入和檢索有用的幾何圖形信息,需要將它們轉換為其他應用程序可以理解的格式。

①Well-known text(WKT

  • ST_GeomFromText(text, srid) —— 返回geometry,除非指定SRID,否則將得到一個包含未知SRID的幾何圖形

  • ST_GeographyFromText(text)——返回Geography

  • ST_AsText(geometry) —— 返回text

  • ST_AsEWKT(geometry) —— 返回text

②Well-known binary(WKB

  • ST_GeomFromWKB(bytea) —— 返回geometry

  • ST_AsBinary(geometry) —— 返回bytea

  • ST_AsEWKB(geometry) —— 返回bytea

③Geographic Mark-up Language(GML

  • ST_GeomFromGML(text) —— 返回geometry

  • ST_ASGML(geometry) —— 返回text

④Keyhole Mark-up Language(KML

  • ST_GeomFromKML(text) —— 返回geometry

  • ST_ASKML(geometry) —— 返回text

GeoJson

  • ST_AsGeoJSON(geometry) —— 返回text

⑥Scalable Vector Graphics(SVG

  • ST_AsSVG(geometry) —— 返回text

以上函數最常見的用法是將幾何圖形文本(text)表示形式轉換為內部表示形式

請注意,除了具有幾何圖形表示形式的文本參數外,還可以指定一個提供幾何圖形SRID的數字參數。

圖形關系

ST_Equals(geometry A, geometry B)

  • 用於測試兩個圖形的空間相等性。

  • 如果兩個相同類型的幾何圖形具有相同的x、y坐標值,即如果第二個圖形與第一個圖形的坐標信息相等(相同),則ST_Equals()返回TRUE。

ST_Intersects、ST_Disjoint、ST_Crosses和ST_Overlaps

  • ST_IntersectsST_CrossesST_Overlaps測試幾何圖形是否相交。

  • 如果兩個圖形有重合的部分,即如果它們的邊界或內部相交,則ST_Intersects(geometry A, geometry B)返回TRUE

  • ST_Disjoint(geometry A, geometry B),如果兩個幾何圖形沒有重合的部分,則它們不相交,反之亦然。事實上測試"not intersect"通常比測試"disjoint"更有效,因為intersect測試可以使用空間索引

  • 對於multipoint/polygon、multipoint/linestring、linestring/linestring、linestring/polygon和linestring/multipolygon的比較,如果相交生成的幾何圖形的維度小於兩個源幾何圖形的最大維度,且相交集位於兩個源幾何圖形的內部,則ST_Crosses(geometry A, geometry B)將返回TRUE。

  • ST_Overlaps(geometry A, geometry B)比較兩個相同維度的幾何圖形,如果它們的結果集與兩個源幾何圖形都不同但具有相同維度,則返回TRUE。

ST_Touches()

  • 測試兩個幾何圖形是否在它們的邊界上接觸,但在它們的內部不相交

  • 如果兩個幾何圖形的邊界相交,或者只有一個幾何圖形的內部與另一個幾何圖形的邊界相交,則ST_Touches(geometry A, geometry B)將返回TRUE

ST_Within和ST_Contains

  • ST_Within()和ST_Contains()測試一個幾何圖形是否完全位於另一個幾何圖形內

  • 如果第一個幾何圖形完全位於第二個幾何圖形內,則ST_Within(geometry A, geometry B)返回TRUE,ST_Within()測試的結果與ST_Contains()完全相反

  • 如果第二個幾何圖形完全包含在第一個幾何圖形內,則ST_Contains(geometry A, geometry B)返回TRUE

ST_Distance和ST_DWithin

  • ST_Distance(geometry A, geometry B)計算兩個幾何圖形之間的最短距離,並將其作為浮點數返回。這對於實際報告幾何圖形之間的距離非常有用

  • ST_DWithin(),測試兩個幾何圖形之間的距離是否在某個范圍之內,

geography類型

  • ST_AsText(geography) returns text

  • ST_GeographyFromText(text) returns geography

  • ST_AsBinary(geography) returns bytea

  • ST_GeogFromWKB(bytea) returns geography

  • ST_AsSVG(geography) returns text

  • ST_AsGML(geography) returns text

  • ST_AsKML(geography) returns text

  • ST_AsGeoJson(geography) returns text

  • ST_Distance(geography, geography) returns double

  • ST_DWithin(geography, geography, float8) returns boolean

  • ST_Area(geography) returns double

  • ST_Length(geography) returns double

  • ST_Covers(geography, geography) returns boolean

  • ST_CoveredBy(geography, geography) returns boolean

  • ST_Intersects(geography, geography) returns boolean

  • ST_Buffer(geography, float8) returns geography[1]

  • ST_Intersection(geography, geography) returns geography[1]

geography轉換為geometry

PostgreSQL的類型轉換語法是將 ::typename 附加到希望轉換的值的末尾。因此,2::text將數字2轉換為文本字符串"2";'POINT(0 0)' :: geometry將點的文本表示形式轉換為geometry點

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM