@@ -71,24 +71,27 @@ def getEdgesQueryXY(args):
7171 FROM {edge_schema}.{edge_table} {where_clause}
7272 """ .replace ("\\ n" , r"\n" )).format (** args )
7373
74- def getEndPoint (args , vertex_id ):
7574def getEndPoint (args , vertex_id ):
7675 # Prefer source endpoint when available; otherwise fallback to target endpoint
7776 return sql .SQL ("""
7877 SELECT COALESCE(
79- (SELECT ST_StartPoint({geometry}) FROM {edge_schema}.{edge_table} WHERE {source} = {vid} LIMIT 1),
80- (SELECT ST_EndPoint({geometry}) FROM {edge_schema}.{edge_table} WHERE {target} = {vid} LIMIT 1)
78+ (SELECT ST_StartPoint({geometry}) FROM {edge_schema}.{edge_table} WHERE {source} = {vid} ORDER BY {id} LIMIT 1),
79+ (SELECT ST_EndPoint({geometry}) FROM {edge_schema}.{edge_table} WHERE {target} = {vid} ORDER BY {id} LIMIT 1)
8180 )
8281 """ .replace ("\\ n" , r"\n" )).format (** args , vid = vertex_id )
8382
8483def getCostLine (args , departure , arrival ):
8584 return sql .Composed ([
86- sql .SQL ("SELECT ST_asText(ST_makeLine((" ),
87- getEndPoint (args , departure ),
88- sql .SQL ("), (" ),
89- getEndPoint (args , arrival ),
90- sql .SQL ("))) AS line" )
91- ])
85+ sql .SQL ("SELECT ST_AsText(" ),
86+ args ['transform_s' ],
87+ sql .SQL ("ST_MakeLine((" ),
88+ getEndPoint (args , departure ),
89+ sql .SQL ("), (" ),
90+ getEndPoint (args , arrival ),
91+ sql .SQL ("))" ),
92+ args ['transform_e' ],
93+ sql .SQL (") AS line" ),
94+ ])
9295
9396def getMidPoint ():
9497 return sql .SQL ("SELECT ST_asText(ST_LineInterpolatePoint(ST_GeomFromText(%s),0.5))" )
0 commit comments