临时支持函数¶
ST_IsValidTrajectory¶
ST_IsValidTrajectory — 如果几何体是有效轨迹,则返回true。
返回值¶
返回值为boolean类型。
判断几何体是否编码了有效的轨迹。有效的轨迹编码为LINESTRING,M值从每个顶点到下一个顶点不断增长。
有效的轨迹被期望作为一些时空查询的输入,比如ST_ClosestPointOfApproach。
示例¶
SELECT ST_IsValidTrajectory('LINESTRINGM(0 0 1,1 1 0)'::geometry);
ST_ISVALIDTRAJECTORY(boolean) |
-----------------------------------
false |
总数目:1
SELECT ST_IsValidTrajectory('LINESTRINGM(0 0 0,1 1 1,1 1 2,1 0 1)'::geometry);
ST_ISVALIDTRAJECTORY(boolean) |
-----------------------------------
false |
总数目:1
ST_ClosestPointOfApproach¶
ST_ClosestPointOfApproach — 返回沿两条直线插值的点最接近的度量值。
返回值¶
返回值为float8类型。
返回沿给定直线插值的点位于最小距离处的最小度量值。输入必须是ST_IsValidTrajetroy检查的有效轨迹。如果轨迹在M范围内不重叠,则返回Null。
有关给定测量的实际点,请参见ST_LocateAlong。
示例¶
select ST_ClosestPointOfApproach( 'LINESTRINGZM(0 0 0 0, 10 10 10 10)', 'LINESTRINGZM(0 0 0 1, 10 10 10 10)');
ST_CLOSESTPOINTOFAPPROACH(double precision) |
-------------------------------------------------
10 |
总数目:1
ST_DistanceCPA¶
ST_DistanceCPA — 返回两条轨迹中最近的接近点之间的距离。
示例¶
SELECT ST_DistanceCPA('LINESTRINGM(0 0 0, 1 0 1)'::geometry ,'LINESTRINGM(0 0 0, 1 0 1)'::geometry);
ST_DISTANCECPA(double precision) |
--------------------------------------
0E0 |
总数目:1
SELECT ST_DistanceCPA('LINESTRINGM(0 0, 1 1)'::geometry ,'LINESTRINGM(0 0,1 0)'::geometry);
ERROR, can not mix dimensionality in a geometry "LINESTRINGM(0 0, 1 1)" <-- parse error at position 26 within geometry
ST_CPAWithin¶
ST_CPAWithin — 如果轨迹的最近接近点在指定距离内,则返回true。
返回值¶
返回值为boolean类型。
示例¶
输入必须是ST_IsValidTrajetroy检查的有效轨迹。如果轨迹在M范围内不重叠,则返回False。
drop table t_d;
create table t_d(a float);
insert into t_d values(0.0), (1);
SELECT 'cpaw1', a, ST_CPAWithin(
'LINESTRINGM(0 0 0, 1 0 1)'::geometry
,'LINESTRINGM(0 0 0, 1 0 1)'::geometry, a)
FROM t_d ORDER BY a;
?COLUMN?(varchar) |A(float) |ST_CPAWITHIN(boolean) |
----------------------------------------------------------------
cpaw1 |0 |true |
----------------------------------------------------------------
cpaw1 |1 |true |
总数目:2
drop table t_d;