POSTGIS包含大量幾何函數,方便我們處理空間數據,本文節選自官方文檔,方便查找
5.3 幾何構造
ST_Collect
—從一組幾何創建一個GeometryCollection或Multi *幾何。
ST_LineFromMultiPoint
—從MultiPoint幾何圖形創建LineString。
ST_MakeEnvelope
—從最小和最大座標創建一個矩形Polygon。
ST_MakeLine
—從Point,MultiPoint或LineString幾何形狀創建線串。
ST_MakePoint
—創建2D,3DZ或4D點。
ST_MakePointM
—從X,Y和M值創建一個點。
ST_MakePolygon
—從殼和孔的可選列表創建多邊形。
ST_Point
—使用給定的座標值創建一個Point。 ST_MakePoint的別名。
ST_Polygon
—從具有指定SRID的LineString創建多邊形。
ST_TileEnvelope
—使用XYZ拼貼系統在Web Mercator(SRID:3857)中創建一個矩形多邊形。
ST_HexagonGrid
—返回一組完全覆蓋幾何參數範圍的六邊形和單元格索引。
ST_SquareGrid
—返回一組完全覆蓋幾何參數範圍的網格正方形和單元格索引。
ST_Hexagon
—使用六邊形網格空間內提供的邊緣大小和像元座標,返回單個六邊形。
ST_Square
—使用六角形網格空間內提供的邊緣大小和像元座標,返回單個正方形。
5.4 幾何訪問
GeometryType
—以文本形式返回幾何的類型。
ST_Boundary
—返回幾何的邊界。
ST_CoordDim
—返回幾何的座標尺寸。
ST_Dimension
—返回幾何的拓撲尺寸。
ST_Dump
—返回用於幾何圖形組件的一組geometry_dump行。
ST_DumpPoints
—返回幾何中的點的一組geometry_dump行。
ST_DumpRings
—返回多邊形的外環和內環的一組geometry_dump行。
ST_EndPoint
—返回LineString或CircularLineString的最後一點。
ST_Envelope
—返回表示幾何圖形邊界框的幾何圖形。
ST_BoundingDiagonal
—返回幾何邊界框的對角線。
ST_ExteriorRing
—返回代表Polygon外環的LineString。
ST_GeometryN
—返回幾何集合的第N個幾何元素。
ST_GeometryType
—以文本形式返回幾何的SQL-MM類型。
ST_HasArc
—測試幾何圖形是否包含圓弧
ST_InteriorRingN
—返回多邊形的第N個內環(孔)。
ST_IsPolygonCCW
—測試多邊形是否具有沿逆時針方向定位的外環和沿順時針方向定位的內環。
ST_IsPolygonCW
—測試多邊形是否具有順時針方向的外環和逆時針方向的內環。
ST_IsClosed
—測試LineStrings的起點和終點是否重合。對於PolyhedralSurface測試,是否封閉(體積)。
ST_IsCollection
—測試幾何是否爲幾何集合類型。
ST_IsEmpty
—測試幾何是否爲空。
ST_IsRing
—測試LineString是否閉合且簡單。
ST_IsSimple
—測試幾何圖形是否沒有自相交或自相切的點。
ST_M
—返回點的M座標。
ST_MemSize
—返回幾何佔用的內存空間量。
ST_NDims
—返回幾何的座標尺寸。
ST_NPoints
—返回幾何中的點(頂點)數。
ST_NRings
—返回多邊形幾何中的環數。
ST_NumGeometries
—返回幾何集合中的元素數。
ST_NumInteriorRings
—返回多邊形的內部環數(孔)。
ST_NumInteriorRing
—返回多邊形的內部環數(孔)。 ST_NumInteriorRings的Aias
ST_NumPatches
—返回多面曲面上的面數。對於非多面體幾何形狀,將返回null。
ST_NumPoints
—返回LineString或CircularString中的點數。
ST_PatchN
—返回多面曲面的第N個幾何(面)。
ST_PointN
—返回幾何圖形中第一個LineString或圓形LineString中的第N個點。
ST_Points
—返回包含幾何圖形所有座標的MultiPoint。
ST_StartPoint
—返回LineString的第一個點。
ST_Summary
—返回幾何內容的文本摘要。
ST_X
—返回點的X座標。
ST_Y
—返回點的Y座標。
ST_Z
—返回點的Z座標。
ST_Zmflag
—返回指示幾何圖形的ZM座標尺寸的代碼。
5.5 幾何編輯
這些函數通過改變類型、結構或頂點來創建修改過的幾何圖形。
ST_AddPoint
—將點添加到LineString。
ST_CollectionExtract
—給定(多)幾何,返回僅由指定類型的元素組成的(多)幾何。
ST_CollectionHomogenize
—給定幾何集合,返回內容的“最簡單”表示形式。
ST_CurveToLine
—將包含曲線的幾何轉換爲線性幾何。
ST_FlipCoordinates
—返回X和Y軸已翻轉的幾何版本。
ST_Force2D
—將幾何強制爲“二維模式”。
ST_Force3D
—將幾何強制爲XYZ模式。這是ST_Force3DZ的別名。
ST_Force3DZ
—將幾何強制爲XYZ模式。
ST_Force3DM
—將幾何強制爲XYM模式。
ST_Force4D
—將幾何強制爲XYZM模式。
ST_ForcePolygonCCW
—逆時針旋轉所有外部環,順時針旋轉所有內部環。
ST_ForceCollection
—將幾何轉換爲GEOMETRYCOLLECTION。
ST_ForcePolygonCW
—順時針定向所有外環,逆時針定向所有內環。
ST_ForceSFS
—強制幾何僅使用SFS 1.1幾何類型。
ST_ForceRHR
—強制多邊形中頂點的方向遵循右手規則。
ST_ForceCurve
—將幾何體轉換爲其彎曲類型(如果適用)。
ST_LineMerge
—返回通過將MULTILINESTRING縫合在一起而形成的(一組)LineString。
ST_LineToCurve
—將線性幾何轉換爲彎曲幾何。
ST_Multi
—將幾何返回爲MULTI *幾何。
ST_Normalize
—以規範形式返回幾何。
ST_QuantizeCoordinates
—將座標的最低有效位設置爲零
ST_RemovePoint
—從線串中刪除點。
ST_RemoveRepeatedPoints
—返回給定幾何的版本,其中刪除了重複的點。
ST_Reverse
—返回頂點順序相反的幾何。
ST_Segmentize
—返回修改後的幾何/地理,其線段的長度不超過給定距離。
ST_SetPoint
—用給定的點替換線串的點。
ST_ShiftLongitude
—在-180..180和0..360之間移動地理座標的幾何。
ST_WrapX
—將幾何圖形環繞X值。
ST_SnapToGrid
—將輸入幾何圖形的所有點捕捉到常規網格。
ST_Snap
—將輸入幾何的線段和頂點與參考幾何的頂點對齊。
ST_SwapOrdinates
—返回交換給定縱座標值的給定幾何的版本。
5.6 幾何驗證
這些函數根據OGC SFS標準測試幾何圖形是否有效。它們還提供有關殘疾的性質和地點的信息。還有一個函數可以從一個無效的幾何圖形中創建一個有效的幾何圖形。
ST_IsValid
—測試幾何是否在2D中格式正確。
ST_IsValidDetail
—返回valid_detail行,該行說明幾何是否有效,如果不是,則說明原因和位置。
ST_IsValidReason
—返回說明幾何是否有效或無效原因的文本。
ST_MakeValid
—嘗試使無效的幾何圖形有效而不丟失頂點。
5.7 空間參考系統功能
這些功能與幾何的空間參考系統一起工作。
ST_SetSRID
—將幾何圖形上的SRID設置爲特定的整數值。
ST_SRID
—返回空間索引表中定義的ST_Geometry的空間參考標識符。
ST_Transform
—返回一個新幾何,其座標已轉換爲其他空間參考系統。
5.11 空間關係
這些函數決定幾何圖形之間的空間關係。
5.11.1 拓撲關係
ST_3DIntersects
—如果兩個幾何在3D中在空間上相交,則返回true-僅用於點,線串,多邊形,多面曲面(區域)。
ST_Contains
—當且僅當B的點不位於A的外部且B的內部的至少一個點位於A的內部時,才返回true。
ST_ContainsProperly
—如果B與A的內部而不是邊界(或外部)相交,則返回true。 A本身不包含自身,但是包含自身。
ST_Covers
—如果B中沒有點在A之外,則返回true
ST_CoveredBy
—如果Geometry / Geography A中沒有點在Geometry / Geography B之外,則返回true
ST_Crosses
—如果兩個幾何具有一些但不是全部內部相同的點,則返回true。
ST_LineCrossingDirection
—返回一個數字,指示兩個LineString的交叉行爲。
ST_Disjoint
—如果兩個幾何在空間上不相交(它們沒有共同點),則返回true。
ST_Equals
—如果兩個幾何在空間中包含相同的點集,則返回true。
ST_Intersects
—如果兩個“幾何” /“地理”在2D空間上相交(至少有一個共同點),則返回true。
ST_OrderingEquals
—如果兩個幾何表示相同的幾何並且具有相同的方向順序的點,則返回true。
ST_Overlaps
—如果兩個幾何相交且具有相同的尺寸,但彼此之間不完全包含,則返回true。
ST_Relate
—測試兩個幾何是否具有與給定“交集矩陣”模式匹配的拓撲關係,或計算它們的“交集矩陣”
ST_RelateMatch
—測試DE-9IM交集矩陣是否與交集矩陣模式匹配
ST_Touches
—如果兩個幾何至少有一個共同點,但它們的內部不相交,則返回true。
ST_Within
—如果幾何A完全在幾何B內,則返回true
5.11.2 距離關係
ST_3DDWithin
—如果兩個3D幾何形狀在給定的3D距離內,則返回true
ST_3DDFullyWithin
—如果兩個3D幾何完全在給定的3D距離內,則返回true
ST_DFullyWithin
—如果兩個幾何完全在給定距離內,則返回true
ST_DWithin
—如果兩個幾何在給定距離內,則返回true
ST_PointInsideCircle
—測試點幾何是否在由中心和半徑定義的圓內。
5.12 測量功能
ST_Area
—返回多邊形幾何的面積。
ST_Azimuth
—返回以北爲基準的方位角,以弧度爲單位,從點A的垂直方向到點B的角度以弧度爲單位。
ST_Angle
—返回3個點之間或2個向量之間的角度(4個點或2條線)。
ST_ClosestPoint
—返回g1上最接近g2的2D點。這是最短線的第一點。
ST_3DClosestPoint
—返回g1上最接近g2的3D點。這是3D最短線的第一點。
ST_Distance
—返回兩個幾何或地理值之間的距離。
ST_3DDistance
—以投影單位返回兩個幾何之間的3D笛卡爾最小距離(基於空間參考)。
ST_DistanceSphere
—使用球形地球模型返回兩個lon / lat幾何之間的最小距離(以米爲單位)。
ST_DistanceSpheroid
—使用球形地球模型返回兩個lon / lat幾何之間的最小距離。
ST_FrechetDistance
—返回兩個幾何之間的Fréchet距離。
ST_HausdorffDistance
—返回兩個幾何之間的Hausdorff距離。
ST_Length
—返回線性幾何的2D長度。
ST_Length2D
—返回線性幾何的2D長度。 ST_Length的別名
ST_3DLength
—返回線性幾何的3D長度。
ST_LengthSpheroid
—返回球體上lon / lat幾何圖形的2D或3D長度/周長。
ST_LongestLine
—返回兩個幾何之間的2D最長線。
ST_3DLongestLine
—返回兩個幾何之間的3D最長線
ST_MaxDistance
—以投影單位返回兩個幾何之間的最大二維距離。
ST_3DMaxDistance
—以投影單位返回兩個幾何之間的3D笛卡爾最大距離(基於空間參考)。
ST_MinimumClearance
—返回幾何圖形的最小間隙,度量幾何圖形的魯棒性。
ST_MinimumClearanceLine
—返回跨越幾何最小間隙的兩點LineString。
ST_Perimeter
—返回多邊形幾何或地理邊界的長度。
ST_Perimeter2D
—返回多邊形幾何的2D周長。 ST_Perimeter的別名。
ST_3DPerimeter
—返回多邊形幾何的3D周長。
ST_Project
—返回從起點投影一個距離和方位角(方位角)的點。
ST_ShortestLine
—返回兩個幾何之間的2D最短線
ST_3DShortestLine
—返回兩個幾何之間的3D最短線
5.13 疊加功能
這些函數計算兩個幾何圖形疊加產生的結果。這些也被稱爲點集理論布爾運算。還提供了一些相關的功能。
ST_ClipByBox2D
—返回屬於矩形的幾何圖形的一部分。
ST_Difference
—返回表示幾何A的不與幾何B相交的部分的幾何。
ST_Intersection
—返回代表幾何A和B共享部分的幾何。
ST_MemUnion
—聚合函數,以內存有效但較慢的方式合併幾何
ST_Node
—結點線的集合。
ST_Split
—返回通過將一個幾何圖形拆分爲另一個幾何圖形而創建的幾何圖形的集合。
ST_Subdivide
—計算幾何的直線細分。
ST_SymDifference
—返回一個幾何,表示不相交的幾何A和B的部分。
ST_Union
—返回代表輸入幾何圖形的點集並集的幾何圖形。
ST_UnaryUnion
—計算單個幾何圖形的組件的並集。
5.14 幾何處理
這些函數計算幾何結構,或改變幾何尺寸或形狀
ST_Buffer —返回一個幾何圖形,該幾何圖形覆蓋距幾何圖形給定距離內的所有點。
ST_BuildArea —創建由幾何的線條構成的多邊形幾何。
ST_Centroid —返回幾何的幾何中心。
ST_ConcaveHull —計算可能包含所有輸入幾何頂點的凹形幾何
ST_ConvexHull —計算幾何的凸包。
ST_DelaunayTriangles —返回幾何頂點的Delaunay三角剖分。
ST_FilterByM
—根據頂點的M值移除頂點
ST_GeneratePoints
—生成多邊形或多多邊形中包含的隨機點。
ST_GeometricMedian
—返回MultiPoint的幾何中間值。
ST_MaximumInscribedCircle
—計算完全包含在幾何圖形內的最大圓。
ST_MinimumBoundingCircle
—返回包含幾何的最小圓形多邊形。
ST_MinimumBoundingRadius
—返回包含幾何的最小圓的中心點和半徑。
ST_OrientedEnvelope
—返回包含幾何的最小面積的矩形。
ST_OffsetCurve
—返回距輸入線給定距離和邊距的偏移線。
ST_PointOnSurface
—返回保證位於多邊形或幾何圖形上的點。
ST_Polygonize
—計算由一組幾何圖形的線條形成的多邊形的集合。
ST_ReducePrecision
—返回一個有效的幾何圖形,所有點均四捨五入到提供的網格公差。
ST_SharedPaths
—返回包含兩個輸入線串/多線串共享的路徑的集合。
ST_Simplify
—使用Douglas-Peucker算法返回幾何的簡化版本。
ST_SimplifyPreserveTopology
—使用Douglas-Peucker算法返回幾何的簡化和有效版本。
ST_SimplifyVW
—使用Visvalingam-Whyatt算法返回幾何的簡化版本
ST_ChaikinSmoothing
—使用Chaikin算法返回幾何的平滑版本
ST_SetEffectiveArea
—使用Visvalingam-Whyatt算法設置每個頂點的有效面積。
ST_VoronoiLines
—返回幾何頂點的Voronoi圖的邊界。
ST_VoronoiPolygons
—返回幾何頂點的Voronoi圖的像元。
5.15 仿射變換
這些函數使用仿射變換改變幾何圖形的位置和形狀.
ST_Affine
—將3D仿射變換應用於幾何圖形。
ST_Rotate
—圍繞原點旋轉幾何。
ST_RotateX
—繞X軸旋轉幾何。
ST_RotateY
—圍繞Y軸旋轉幾何。
ST_RotateZ
—繞Z軸旋轉幾何。
ST_Scale
—按給定因子縮放幾何。
ST_Translate
—按給定的偏移量轉換幾何圖形。
ST_TransScale
—按給定的偏移量和係數平移和縮放幾何。
5.16 聚合功能
這些函數實現了幾何集合的聚類算法。
ST_ClusterDBSCAN
—窗口函數,使用DBSCAN算法爲每個輸入幾何返回聚類ID。
ST_ClusterIntersecting
—聚合函數,用於將輸入幾何形狀聚類爲連接的集合。
ST_ClusterKMeans
—窗口函數,使用K-means算法爲每個輸入幾何返回聚類ID。
ST_ClusterWithin
—聚合函數,用於按分隔距離對輸入幾何圖形進行聚類。
5.17 邊框功能
這些函數產生或操作邊界框。通過使用自動或顯式類型轉換,它們還可以提供和接受幾何值。
Box2D
—返回代表幾何2D範圍的BOX2D。
Box3D
—返回代表幾何圖形3D範圍的BOX3D。
ST_EstimatedExtent
—返回空間表的“估計”範圍。
ST_Expand
—返回從另一個邊界框或幾何圖形擴展的邊界框。
ST_Extent
—一個聚合函數,該函數返回包圍幾何行的邊界框。
ST_3DExtent
—一個聚合函數,該函數返回3D邊界框,該邊界框限制幾何圖形的行。
ST_MakeBox2D
—創建由兩個2D點幾何定義的BOX2D。
ST_3DMakeBox
—創建由兩個3D點幾何定義的BOX3D。
ST_XMax
—返回2D或3D邊界框或幾何圖形的X最大值。
ST_XMin
—返回2D或3D邊界框或幾何的X最小值。
ST_YMax
—返回2D或3D邊界框或幾何的Y最大值。
ST_YMin
—返回2D或3D邊界框或幾何的Y最小值。
ST_ZMax
—返回2D或3D邊界框或幾何的Z最大值。
ST_ZMin
—返回2D或3D邊界框或幾何的Z最小值。
5.18 線性參考
ST_LineInterpolatePoint —返回沿直線插補的點。第二個參數是一個介於0和1之間的float8,代表必須定位該點的線串總長度的一部分。
ST_3DLineInterpolatePoint—返回沿3D線插入的點。第二個參數是一個介於0和1之間的float8,代表必須定位該點的線串總長度的一部分。
ST_LineInterpolatePoints—返回沿一條線插補的一個或多個點。
ST_LineLocatePoint—返回0到1之間的浮點數,表示LineString上與給定Point點最近的點的位置,以總2d線長的一部分表示。
ST_LineSubstring—返回一個線串,該線串是輸入的子串,從總2d長度的給定分數開始和結束。第二個和第三個參數是介於0和1之間的float8值。
ST_LocateAlong—返回具有與指定度量匹配的元素的派生幾何集合值。不支持多邊形元素。
ST_LocateBetween—返回派生的幾何集合值,其元素與指定的範圍(包括範圍在內)相匹配。
ST_LocateBetweenElevations—返回派生的幾何(集合)值,其元素與指定的高程範圍相交。
ST_InterpolatePoint—返回在與提供的點接近的點處的幾何的度量尺寸的值。
ST_AddMeasure` —返回帶有在起點和終點之間線性插值的測量元素的派生幾何。
5.19 軌跡函數
這些函數支持使用軌跡。軌跡是在每個座標上都有一個度量(M值)的線性幾何圖形。測量值必須沿直線增加。時空數據可以通過使用相對時間(如epoch)作爲度量值來建模。
ST_IsValidTrajectory
—如果幾何是有效軌跡,則返回true。
ST_ClosestPointOfApproach
—返回沿兩個軌跡插補的點最接近的度量。
ST_DistanceCPA
—返回兩個軌跡的最接近點之間的距離。
ST_CPAWithin
—如果兩個軌跡的最接近點在指定距離內,則返回true。
5.20 SFCGAL函數
SFCGAL是一個圍繞CGAL的c++包裝庫,提供了高級的2D和3D空間函數。爲了魯棒性,幾何座標具有精確的有理數表示。
這個庫的安裝說明可以在SFCGAL主頁(http://www.sfcgal.org)上找到。要啓用這些函數,請使用create extension postgis_sfcgal。
postgis_sfcgal_version
—返回正在使用的SFCGAL的版本
ST_Extrude
—將曲面拉伸到相關體積
ST_StraightSkeleton
—從幾何圖形計算直線骨架
ST_CloseMedialAxis
—計算平面幾何體的近似中間軸。
ST_IsPlanar
—檢查曲面是否爲平面
ST_Orientation
—確定表面方向
ST_ForceLHR
—強制LHR方向
ST_MinkowskiSum
—執行Minkowski和
ST_ConstrainedDelaunayTriangles
—返回圍繞給定輸入幾何形狀的約束Delaunay三角剖分。
ST_3DIntersection
—執行3D相交
ST_3DDifference
—執行3D差異
ST_3DUnion
—執行3D合併
ST_3DArea
—計算3D表面幾何形狀的面積。對於實體將返回0。
ST_Tesselate
—對多邊形或多面體表面執行表面鑲嵌處理,並以TIN或TINS集合的形式返回
ST_Volume
—計算3D實體的體積。如果應用於表面(甚至閉合)幾何,則將返回0。
ST_MakeSolid
—將幾何體轉換爲實體。不執行檢查。爲了獲得有效的實體,輸入幾何必須是封閉的多面曲面或封閉的TIN。
ST_IsSolid
—測試幾何圖形是否爲實體。不執行有效性檢查。
格式轉換
ST_Force2D(geom)
postgres裏不能預覽三維數據
ST_AsText(geom)
wkb轉wkt
ST_AsGeoJSON(geom)
wkb轉geojson
幾何處理
ST_LineMerge(ST_Union(geoms))
線段連接合並,效率較低,但適合大部分場景
ST_MakeLine(geoms)
線段連接合並效率高,但嚴格要求方向一致
ST_SimplifyPreserveTopology(geometry ,<閾值>)
幾何抽稀
幾何查詢
ST_Numgeometries(geom)
計算mulit類型包含幾何的數量
ST_GeometryN(geom,index)
獲取mulit類型中的第幾個單體幾何
ST_Lenght(geom)
計算長度
拓撲關係
ST_Intersects
相交關係,兩個圖形之間存在公共部分,比如公共點,公共線,公共面
ST_Disjoint
相離關係,兩個圖形無絲毫公共部分,與ST_Intersects完全相反
ST_Contains
包含關係,圖形A包含圖形B:ST_Contains(A,B),如點在面內,線在面內。
ST_Within
被包含關係,圖形A被B包含:ST_Within(A,B),與ST_Contains完全相反。
ST_Covers
覆蓋關係,圖形A完全覆蓋住了圖形B:ST_Covers (A,B),部分關係與ST_Contains
重疊,但不是完全一樣。
ST_Crosses
穿越關係,圖形A與圖形B有一部分公共內點,但不是全部。
ST_Equals
相等關係,兩個圖形完全相等。
ST_Overlaps
壓蓋關係
ST_Touches
相連關係,兩個圖形只有邊界存在公共連接關係。