2014-04-23 17 views
1

我有一些數據由時間標記的經緯度對組成,我使用ggmap將其中的一部分映射到下面。如果我只想選擇沿高速公路行駛的數據,你可以在地圖上看到 - 在綠色山脈和灰色平坦區域之間運行的280-NW-SE & 101通過灰色平面區域(紅色密集的地方) - 我將如何選擇這些數據?如何選擇使用R進行高速公路旅行的緯度/經度數據的子集?

A plot of some time stamped position data

我想最終希望實現的是僅包含高速公路/州際旅行一個數據幀。我見過this question,這是javascript中可能解決方案的簡要草圖,&建議使用Directions API爲任何給定點返回最近的道路。然後我可以過濾這些結果,但我想知道是否有人找到了更清潔的解決方案。

下面是一些示例數據(CSV

這裏的繪製上面的代碼:

require(ggmap) 
map<-get_googlemap(center="Palo Alto", zoom = 10) 
ggmap(map) + geom_point(data = sample, aes(x = lon, y = lat),size = 3, color = "red") 

你並不需要一個API鍵運行以上。

+0

這似乎是在公路上進行反向地址解析點經常給我附近的道路,所以通過反向地理編碼高速公路各點和過濾的策略將無法正常使用。 –

+1

你可以做一個已知高速公路的白名單並使用它來過濾嗎?也許你收到了每個座標的多個條目? – Tyler

回答

1

我剛剛發現這篇文章,並認爲這是一個有趣的問題。我想下載你的示例數據文件。不幸的是,該鏈接不再工作。因此,我無法嘗試我腦海中的整個過程。但是,如果您仍然嘗試完成此任務,我相信以下內容可以讓您繼續前進。

我最近注意到Natural Earth提供道路數據。也就是說,例如,您可以在美國的道路上行駛很長時間。如果您可以比較數據集中的lon/lat和道路數據的lon/lat,並確定數據點中的匹配項,則可以獲取所需的數據。我關心的是你的數據點的準確程度。如果lon/lat完美停留在你感興趣的道路上,那麼你會沒事的。但是如果有一些利潤率,你可能不得不考慮如何過濾你的數據。

我想在這裏留下的證據表明道路數據和googlemap匹配得很好。只要我看到輸出,道路數據就是可靠的。您可以使用道路數據對數據進行分類。這是我的代碼。

### Step 1: shapefile becomes SpatialLinesDataFrame. 

foo <- readShapeLines("ne_10m_roads_north_america.shp") 


### Step 2: If necessary, subset data before I use fortify(). 
### dplyr does not work with SpatialLinesDataFrame at this point. 

CA <- foo %>% 
     subset(.,country == "United States" & state == "California") 


### Step 3: I need to convert foo to data frame so that I can use the data 
### with ggplot2. 

ana <- fortify(CA) 


### Step 4: Get a map using ggmap package 

longitude <- c(-122.50, -121.85) 
latitude <- c(37.15, 37.70) 

map <- get_map(location = c(lon = mean(longitude), lat = mean(latitude)), 
       zoom = 12, source = "google", 
       maptype = "satellite") 


ggmap(map) + 
geom_path(aes(x = long, y = lat, group = group), data = ana) 

enter image description here

+0

這不是一個完整的答案,因爲我仍然必須弄清楚如何過濾我的數據,使其僅包含距離道路座標一定距離內的點(我的數據中的精度約爲50米),但現在我看到了它可以在概念上完成。 –

+0

@WilliamGunn感謝您的評論。您需要的是將您的數據與道路數據合併,並查看過濾後有多少點將保留。 'dplyr'提供了一些合併的方法。你可能想要一試。另外,如果您可以上傳樣本數據,我很樂意嘗試看看會發生什麼。 – jazzurro

+0

合併是一個聰明的想法,但它只能處理精確的匹配,而不是在一定距離內的匹配,是正確的? –