postgresql常用函数

本文详细介绍了在数据库中处理空间几何对象的各种函数,包括距离计算、相交判断、几何对象处理、存取及测量等。这些函数在地理信息系统、地图应用等领域中起到关键作用,例如ST_Distance用于计算两个几何对象的距离,ST_Intersection用于获取相交部分,ST_Simplify用于简化几何形状等。此外,还涵盖了面积、长度量测以及几何对象的编辑与转换方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、集合对象关系函数

	ST_Distance(geometry, geometry): 获取两个几何对象间的距离
	 
	ST_DWithin(geometry, geometry, float): 如果两个几何对象间距离在给定值范围内,则返回TRUE 
	
	ST_Equals(geometry, geometry):判断两个几何对象是否相等(比如LINESTRING(0 0, 2 2)LINESTRING(0 0, 1 1, 2 2)是相同的几何对象)
	
	ST_Disjoint(geometry, geometry):判断两个几何对象是否分离
	
	ST_Intersects(geometry, geometry):判断两个几何对象是否相交
		postgre中:
			ST_Intersects(A,B),如果A,B之间的交集不生成空集,则返回t,否则返回f
		oracle和sqlite中:
			ST_Intersects(A,B),如果A,B之间的交集不生成空集,则返回1,否则返回0
			
	ST_Touches(geometry, geometry):判断两个几何对象的边缘是否接触
	
	ST_Crosses(geometry, geometry): 判断两个几何对象是否互相穿过 
	
	ST_Within(geometry A, geometry B):判断A是否被B包含
	
	ST_Overlaps(geometry, geometry):判断两个几何对象是否是重叠
	
	ST_Contains(geometry A, geometry B):判断A是否包含B
	
	ST_Covers(geometry A, geometry B):判断A是否覆盖 B
	
	ST_CoveredBy(geometry A, geometry B):判断A是否被B所覆盖
	
	ST_Relate(geometry, geometry, intersectionPatternMatrix):通过DE-9IM 矩阵判断两个几何对象的
	关系是否成立
	
	ST_Relate(geometry, geometry):获得两个几何对象的关系(DE-9IM矩阵) 

二、集合对象处理函数

	ST_Centroid(geometry):获取几何对象的中心
	 
	ST_Area(geometry):面积量测 
	
	ST_Length(geometry):长度量测 
	
	ST_PointOnSurface(geometry):返回曲面上的一个点 
	
	ST_Boundary(geometry):获取边界 
	
	ST_Buffer(geometry, double, [integer]):获取缓冲后的几何对象
	 
	ST_ConvexHull(geometry):获取多几何对象的外接对象 
	
	ST_Intersection(geometry, geometry):获取两个几何对象相交的部分 
	
	ST_Shift_Longitude(geometry):将经度小于0的值加360使所有经度值在0-360ST_SymDifference(geometry A, geometry B):获取两个几何对象不相交的部分(A、B可互换) 
	
	ST_Difference(geometry A, geometry B):从A去除和B相交的部分后返回 
	
	ST_Union(geometry, geometry):返回两个几何对象的合并结果 
	
	ST_Union(geometry set):返回一系列几何对象的合并结果 
	
	ST_MemUnion(geometry set):用较少的内存和较长的时间完成合并操作,结果和ST_Union相同 

三、集合对象存取函数

	ST_AsText(geometry):获取几何对象的WKT描述 
	
	ST_AsBinary(geometry):获取几何对象的WKB描述 
	
	ST_SRID(geometry):获取几何对象的空间参考ID 
	
	ST_Dimension(geometry):获取几何对象的维数 
	
	ST_Envelope(geometry):获取几何对象的边界范围 
	
	ST_IsEmpty(geometry):判断几何对象是否为空 
	
	ST_IsSimple(geometry):判断几何对象是否不包含特殊点(比如自相交) 
	
	ST_IsClosed(geometry):判断几何对象是否闭合 
	
	ST_IsRing(geometry):判断曲线是否闭合并且不包含特殊点 
	
	ST_NumGeometries(geometry):获取多几何对象中的对象个数 
	
	ST_GeometryN(geometry,int):获取多几何对象中第N个对象 
	
	ST_NumPoints(geometry):获取几何对象中的点个数 
	
	ST_PointN(geometry,integer):获取几何对象的第N个点 
	
	ST_ExteriorRing(geometry):获取多边形的外边缘 
	
	ST_NumInteriorRings(geometry):获取多边形内边界个数 
	
	ST_NumInteriorRing(geometry):获取多边形内边界个数
	
	ST_InteriorRingN(geometry,integer):获取多边形的第N个内边界 
	
	ST_EndPoint(geometry):获取线的终点 
	
	ST_StartPoint(geometry):获取线的起始点
	 
	GeometryType(geometry):获取几何对象的类型 
	
	ST_GeometryType(geometry):获取几何对象的类型 ,但是不检查M值,即POINTM对象会被判断为point
	
	ST_X(geometry):获取点的X坐标
	 
	ST_Y(geometry):获取点的Y坐标 
	
	ST_Z(geometry):获取点的Z坐标
	 
	ST_M(geometry):获取点的M值 

四、几何测量函数

	ST_Area(geometry): 量测面积 
	
	ST_distance_sphere(point, point):根据经纬度点计算在地球曲面上的距离,单位米,地球半径取值
	6370986ST_distance_spheroid(point, point, spheroid):使用指定的地球椭球参数 
	
	ST_length2d(geometry):量测2D对象长度 
	
	ST_length3d(geometry):量测3D对象长度 
	
	ST_length_spheroid(geometry,spheroid):根据经纬度对象计算在地球曲面上的长度
	ST_length3d_spheroid(geometry,spheroid)
	
	ST_distance(geometry, geometry):量测两个对象间距离 
	
	ST_max_distance(linestring,linestring):量测两条线之间的最大距离 
	
	ST_perimeter(geometry):量测2D对象的周长 
	ST_perimeter2d(geometry)
	
	ST_perimeter3d(geometry):量测3D对象的周长 
	
	ST_azimuth(geometry, geometry):量测两点构成的方位角,单位弧度 

五、几何对象编辑

	ST_AddBBOX(geometry):给几何对象添加一个边界,会使查询速度加快
	 
	ST_DropBBOX(geometry):删除几何对象的边界 
	
	ST_AddPoint(linestring, point, [])
	ST_RemovePoint(linestring, offset)
	ST_SetPoint(linestring, N, point): 添加、删除、设置点 
	
	ST_Force_collection(geometry)
	ST_Force_2d(geometry)
	ST_Force_3dz(geometry), ST_Force_3d(geometry),
	ST_Force_3dm(geometry)
	ST_Force_4d(geometry)
	ST_Multi(geometry):几何对象类型转换 
	
	ST_Transform(geometry,integer):将几何对象转化到指定空间参考 
	
	ST_Affine(geometry, float8, float8, float8, float8, float8, float8, float8, float8,
	 float8, float8, float8, float8):3D几何对象作仿射变化
	 
	ST_Affine(geometry, float8, float8, float8, float8, float8, float8):2D几何对象作仿射变化 
	
	ST_Translate(geometry, float8, float8, float8):对几何对象作偏移 
	
	ST_Scale(geometry, float8, float8, float8):对几何对象作缩放 
	
	ST_RotateZ(geometry, float8)
	ST_RotateX(geometry, float8)
	ST_RotateY(geometry, float8):3D几何对象作旋转 
	
	ST_TransScale(geometry, float8, float8, float8, float8):2D对象作偏移和缩放
	
	ST_Reverse(geometry):反转 
	
	ST_ForceRHR(geometry):转化到右手定则 
	
	参考IsSimple函数
	ST_Simplify(geometry, tolerance)
	ST_SimplifyPreserveTopology(geometry, tolerance):使用Douglas-Peuker算法 
	
	ST_SnapToGrid(geometry, originX, originY, sizeX, sizeY)
	ST_SnapToGrid(geometry, sizeX, sizeY), ST_SnapToGrid(geometry, size):讲几何对象顶点捕捉到
	网格
	
    ST_SnapToGrid(geometry, geometry, sizeX, sizeY, sizeZ, sizeM):第二个参数为点,指定原点坐标
    
	ST_Segmentize(geometry, maxlength):分段 
	
	ST_LineMerge(geometry):合并为线 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值