簡體   English   中英

找出是否已通過GPS航點

[英]Find out if a GPS waypoint has been passed

想想幾個參加馬拉松比賽的選手。 運動員都戴着GPS設備。 賽道本身沒有傳感器,我需要知道每位運動員何時越過一組預定的GPS坐標。 但是,由於軌道/道路可能足夠寬,因此使用了軌道/道路的不同部分,因此每個運動員可能以稍微不同的緯度/經度越過航路點。

確定運動員是否已通過航點的最佳方法是什么?

我正在使用Python,並且願意使用外部庫。 我正在使用預處理的GPS數據,因此每個時間點只有緯度和經度(以及其他一些零碎的信息,例如速度和行進距離)。

您可以嘗試以下方法: 在此處輸入圖片說明 航路點是兩個軌跡(線)段相交的點(圖片中的黑線)。 繪制一條與通過航路點的線段之一正交的線,用於在該航路點相交的兩條線段中的每條線(圖中的紅色和藍色線穿過該航路點)。 當跑步者進入圖片中標記為紅色的區域時,該跑步者被視為在航路點附近(假設跑步者來自右側)。 一段時間后,跑步者可能會進入圖片中標記為藍色的區域-發生這種情況時,跑步者已通過航路點。

如果賽跑者從未出現在標記為藍色的區域中,表明賽跑者偏離了賽道,則說明航路點尚未通過。

恕我直言,有幾種方法可以解決您的問題。 我想到的第一個是:

from shapely.geometry import LineString

line1 = LineString([(i, i) for i in range(5)])
line2 = zip(range(5)[::-1], range(5))

if line1.crosses(line2):
    print 'yeah!'

添加一個循環並迭代每條航路點

其他可能的選擇:

  • 使用兩條海峽線的交點進行簡單的數學計算-高中的東西
  • 使用postgis將數據導入postgres並使用postgis函數,例如ST_Crosses(如果postgres對您來說很重,我可以嘗試一下SpatialLite-sqlite)
  • pyshp,身材勻稱,gdal / geos,geodjango,地球化學
  • 結合上面的一些內容,並寫一些更有趣的算法,例如在一條線/點周圍創建一個緩沖區,並檢查它是否“ ST_Contains” GPS位置,還檢查是否有任何后面的位置不在緩沖區(?)內

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM