GeoDjango: Как вычислить расстояние между двумя точками на строке?
У меня есть две точки с srid 4326 и строка с srid 4326. Я хочу вычислить расстояние между двумя точками на строке с помощью django geo
У меня есть его sql код, но я хочу рассчитать с помощью инструментов в goe django
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
Вы можете использовать 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)