【发布时间】:2018-05-20 09:50:20
【问题描述】:
我正在从事一个结合了数据科学和 GIS 的大学项目。我们需要找到一种能够从海量 GPS 坐标数据集中获取额外信息的开源解决方案。显然,我不能使用任何具有每日请求限制的 API。
数据
您可以在这里找到教授提供给我们的数据集样本:
longitude <- c(10.86361, 10.96062, 10.93032, 10.93103, 10.93212)
latitude <- c(44.53355, 44.63234, 44.63470, 44.63634, 44.64559)
longlat <- data.frame(longitude, latitude)
ID <- seq.int(1, 10)
第一个任务:已经完成!
第一步是使用over() 的rgeos 加入我的SpatialPoints 和SpatialPolygonsDataFrame。 SpatialPolygonsDataFrame是通过getData('GADM', country='ITA', level=3)的rgeos获得的。
对于第一个完成的任务,目标是将它们所属的有关City 和Region 的信息与每个 GPS 坐标相关联。
我能够获得的结果的一个例子是:
require(sp)
require(rgeos)
my_spdf <- SpatialPointsDataFrame(coords = longlat, data = ID, proj4string = CRS(" +proj=longlat +datum=WGS84 +no_defs +ellps=WGS84 +towgs84=0,0,0 "))
italy_administrative_boundaries_level3 <- getData('GADM', country='ITA', level=3)
result <- over(my_spdf, italy_administrative_boundaries_level3)[, c("NAME_0", "NAME_1", "NAME_2", "NAME_3")]
result$ID <- ID
print(result)
第二个任务:我的问题
现在这些东西变得很棘手,因为我需要关联更多更深入的信息,例如 road_name 和 road_type。
此信息包含在 OpenStreetMap 上创建的 shapefile 中,可从以下网址获得:download.geofabrik.de/europe/italy.html。
我在 R 中加载了 shapefile,获得了 SpatialLinesDataFrame:
require(rgdal)
shapefile_roads <- readOGR(dsn = "./road", layer = "roads")
然后,我天真地尝试应用与加入SpatialPoints 和SpatialPolygonsDataFrame 相同的技术:
result <- over(my_spdf, shapefile_roads)
很明显,结果就是NA。我想到的一个可能原因是my_df 的坐标不在shapefile_roads 中Lines 的确切位置,因此,我应该需要某种半径参数。但是,我不确定。
您能否建议我在我的SpatialPoints 和从 OpenStreetMap 的road_shapefile 获得的SpatialLinesDataFrame 的属性之间执行这种空间连接的正确方法?
如果有不清楚的地方,请不要犹豫。
【问题讨论】:
标签: r join spatial lines points