該圖像顯示 (1) 一條我稱之為參考線的紅線,以及 (2) 一條黃色多段線。每個線要素由數千個 x,y 坐標對點組成。我想沿著紅色參考線逐步移動,并計算到黃色折線的每個坐標對點的正交距離(相對于紅線)。我在 python 3中工作。以下是紅色參考線的前 25 個坐標對:以下是黃色折線的前 25 個坐標對:我一直在嘗試一些基于here、here和here的方法。我正在測試在最后一個超鏈接中討論的答案以嘗試構建工作流程:import numpy as npfrom shapely.geometry import LineString, Pointx1 = 457508.40746964136x2 = 457508.5456318401y1 = 8872649.617776532y2 = 8872649.773129418dist = np.sqrt((x2 - x1)**2 + (y2 - y1)**2)centerX = (x2 - x1) / 2 + x1centerY = (y2 - y1) / 2 + y1test_x = centerX - dist/4test_y = centerY + distline = LineString([(x1, y1), (x2, y2)]) print(list(line.coords))p = Point(test_x,test_y) print(list(p.coords))print(p.distance(line))p.distance(line) 返回:0.17780 ...這是此特定測試的圖像:黑點是紅色參考線上的兩個連續坐標對。紅點是測試坐標對,用于計算黑點到淡藍色線段的正交距離。在我看來,上面給出的 p.distance 結果對于正交距離來說太短了。如果能幫助我在這個問題上取得進展,我將不勝感激。提前致謝。
1 回答

隔江千里
TA貢獻1906條經驗 獲得超10個贊
從點(test_x,test_y)
到線的正交距離(x1,y1)-(x2,y2)
可以用向量代數計算
orthodistance = abs((y2 - y1)*test_x - (x2 - x1)*test_y + x2*y1 - y2*x1) / dist)
這個表達式給出了0.176
你的數據,所以結果看起來很接近。
請注意,您的圖像比例并不完美 - 圖在 X 方向上被拉伸,這就是您可能會懷疑的原因。
添加回答
舉報
0/150
提交
取消