是否可以找到中Point
(經度和緯度)與Polygon
之間最長的straight
距離?我讀到可以找到最近的路徑,但我不確定最長的路線。找到點與多邊形之間最長的「直線」路徑
回答
嘗試Hausdorff distance,這是由g1.hausdorff_distance(g2)
機能的研究返回:
from shapely.geometry import Polygon, Point
poly = Polygon([(-1, -1), (-2, 2), (4, 4), (4, -1), (-1, -1)])
p = Point(0, 0)
poly.hausdorff_distance(p) # 5.656854249492381
請記住,身材勻稱只適用於笛卡爾空間。你的問題詢問「經度和緯度」,所以這些距離單位是度數。您需要將其投影到合適的座標參考系統(CRS)中以獲得更多常規單位長度。此外,「直路徑」的定義根據CRS的選擇而變化。
一種方法是離散多邊形的外觀爲點的集合,並計算在這組點的點和每個點之間的距離:
def longest(poly, p, num):
lr = LinearRing(poly.exterior.coords)
dist = 0
for i in np.linspace(0, lr.length, num):
d = p.distance(lr.interpolate(i))
if d > dist:
dist = d
return dist
poly = Polygon([(-1, -1), (-2,2), (4,4), (4, -1), (-1, -1)])
p = Point(0,0)
longest(poly, p, 20)
# out: 5.428886519426354
longest(poly, p, 100)
# out: 5.622291976018042
當然是不準確的,但它可以對許多情況來說是一個合理的近似值。
備註:你不應該使用lon/lat來調整距離。勻稱基於笛卡爾座標系。一般來說,您應該首先投影您的幾何圖形(使用pyproj),以便能夠使用勻稱來測量距離。
兩個意見。 1)很容易看出,最大距離實際上是在多邊形頂點實現的,所以方法是精確的。 2)在一個數組中存儲距離,然後對它進行排序以獲得最大值的效率相比將最大值存儲在變量中並在計算距離時進行比較效率非常低。在處理內存使用情況。 – eguaio
@eguaio感謝您的提示,我更新了答案。關於你的第一點:最長距離是'math.sqrt((4 ** 2)+(4 ** 2))= 5.656854249492381',而函數返回的內容稍有不同。增加'num'參數可以提高準確性(正如我在示例中試圖說明的那樣)。 –
- 1. 找到頂點之間給定路線的最短路徑python
- 2. 找到任意兩個節點之間最長的路徑
- 3. 兩點之間最長的路徑
- 4. 找到所有點與多邊形邊界之間的最小距離
- 5. 查找樹中一組節點之間的最長路徑
- 6. 如何找到兩個節點之間的循環圖中最長的路徑?
- 7. 如何找到兩個形狀之間的最短路徑?
- 8. 基於多邊形的路徑查找
- 9. 如何找到Lisp中兩個節點之間最長的路徑?
- 10. 直線與三角形邊的交點
- 11. Neo4j - 如何找到兩個節點之間的最短路徑
- 12. 找到兩個凸多邊形之間的接觸點
- 13. 要找到直線與我們在matlab中的圖形之間的交點
- 14. 多邊形與半徑的折線?
- 15. ITextShape可點擊多邊形或路徑
- 16. 兩個圖形節點之間的固定長度路徑
- 17. 在特定點之間找到三維空間中最短(最快)的路徑
- 18. 兩個頂點之間的最長路徑
- 19. 點之間最簡單的路徑
- 20. 計算多個多邊形之間共享邊界的長度
- 21. 直線多邊形交集
- 22. 如何查找直線和矩形之間的交點?
- 23. 查找樹中多條路徑之間的常見最短邊界
- 24. 帶曲線邊緣的剪輯路徑多邊形
- 25. 找到點與曲線之間最小距離的Python代碼
- 26. 查找圖中每個節點最多有兩個輸入邊和兩個輸出邊的最長路徑
- 27. 圖中不應該是邊的邊的頂點之間的最短路徑
- 28. 點與線之間的垂直距離
- 29. 兩點之間的最佳路線
- 30. 在Python中最小化以找到兩點之間的最短路徑
有什麼方法可以在Python中用CRS實現? –
你可以使用[pyproj](https://github.com/jswhit/pyproj)([這種方式](https://gis.stackexchange.com/q/127427/1872))來投影幾何圖形,並找到來自[此地圖預測列表](https://en.wikipedia.org/wiki/List_of_map_projections)的良好預測 –
不涉及選擇投影的另一種策略是找到反測地距離's12'從[geographiclib](https://geographiclib.sourceforge.io/html/python/)的每一對經緯度點開始。 –