使用GeoDjango将点垂直投影到线上

时间:2015-07-13 21:58:31

标签: python gis postgis geodjango

我有一个点C和一个线串AB,两者都有SRID 4326。我想找到CB的垂直投影,这将是点D

enter image description here

我目前使用单位向量对此垂直投影进行2D实现。但它不会在世界地图上返回正确的点(因为它是2D)。在此处找到:Perpendicular on a line segment from a given point

我想到了两种使用PostGIS的方法:

1)创建一条从C到点E的行,其中CEAB平行。然后在CE周围旋转C 90度并找到交点,该交点应为D

2)在此处找到与Google地图几何图库类似的方位和距离方法(computeOffset方法:https://developers.google.com/maps/documentation/javascript/geometry

如何使用GeoDjango方法执行此操作。它似乎没有公开ST_AZIMUTHST_ROTATE

GeoDjango中使用原始SQL似乎也是一个反模式。但在这种情况下,我似乎需要比GeoDjango API允许的更精细控制。

任何帮助都将不胜感激。

1 个答案:

答案 0 :(得分:0)

对于LineString PostGIS http://postgis.net/docs/ST_ClosestPoint.html返回的点和ST_ClosestPoint最近点的情况,将是LineString

点的正交投影