2014-04-23 16 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

合并是一个聪明的想法,但它只能处理精确的匹配,而不是在一定距离内的匹配,是正确的? –