如何获得点与多边形最近部分之间的距离和方位?


9

如果这看起来有点简单或显而易见,我对编写SQL和使用PostGIS表示歉意。我有一张保存在postGIS数据库中的面要素表,我需要编写一个SQL查询以选择所有属性,面要素的距离和方向在预定义点的一定距离内。我设法选择了特征并计算了距离(使用ST_Distance),但是无法计算出方位角。

这是我到目前为止使用的脚本:

SELECT *,
  ST_Distance (Geometry, ST_GeomFromText ('POINT(292596 90785)', 27700))
FROM mytable
WHERE
  ST_DWithin(
    Geometry,
    ST_GeomFromText('POINT(292596 90785)', 27700),
    250) 

如何计算特征的方位以及距离?

Answers:


4

您可以使用ST_Azimuth来计算方位角,但是它仅将点几何作为参数,因此您必须确定真正想要的方位角。

您可以按照@Nicklas的建议选择最短的线(这是已经计算出的距离的线),如果您需要最快的“方向”才能到达多边形,这很有意义。对于其他任何事情,我建议您根据多边形质心(ST_Centroid)进行计算,这对于任意形状都应提供更好的结果。


2

采用

ST_Azimuth(ST_Shortestline(geom1,geom2))

编辑

我只是意识到ST_Azimuth不会将线串作为argumetn,因此您需要给它两点。

如果几何之一是点,则可以直接使用该点,并使用ST_ClosestPoint来获取多边形上的点。


1

ST_Azimuth是您想要的功能。它从北顺时针返回弧度角。如ST_Azimuth()页面上的示例所示,degrees()如果需要,只需将其包装在函数中即可为您提供以度为单位的角度。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.