postgis几何函数汇总

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 相连关系,两个图形只有边界存在公共连接关系。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章