GeoDjango:如何计算线串上两点之间的距离?

问题描述 投票:0回答:1

我有 srid 4326 的两个点和 srid 4326 的线串。 我想用 GeoDjango 计算线串上两点之间的距离。

计算距离的SQL查询如下:

u200du200du200du200du200d

 WITH line AS (SELECT ST_GeomFromText(%s) AS line),point1 AS (SELECT ST_GeomFromText(%s) AS p1),point2 AS (SELECT ST_GeomFromText(%s) AS p2)SELECT ST_Length(ST_Transform(ST_SetSRID(ST_LineSubstring(line,LEAST(ST_LineLocatePoint(line, pp1), ST_LineLocatePoint(line, pp2)),GREATEST(ST_LineLocatePoint(line, pp1), ST_LineLocatePoint(line, pp2))),4326),900913))FROM (SELECT ST_Snap(p1, ST_ClosestPoint(line, p1), 0.0005) AS pp1, ST_Snap(p2, ST_ClosestPoint(line, p2), 0.005) AS pp2,lineFROM line, point1, point2) AS foo

如何使用 GeoDjango 中的工具实现相同的目标?

django gis postgis geodjango
1个回答
0
投票

你可以使用Shapely

from shapely.geometry import Point

ppto_a = Point(linestring.coords[0][0], linestring.coords[0][1])
ppto_b = Point(linestring.coords[1][0], linestring.coords[1][1])

dist = ppto_a.distance(ppto_b)
© www.soinside.com 2019 - 2024. All rights reserved.