下午好: 我一直在研究R,但是现在我正在使用大型shapefile,这些文件的大小超过600 Mb。我有一台200GB可用的计算机和12GB的RAM,我想问一下是否有人知道如何处理这些文件?非常感谢你的帮助。
答案 0 :(得分:2)
使用最新版本的64位R
和最新版本的rgdal
,只需尝试阅读:
library(rgdal)
shpdata <- readOGR("/path/to/shpfolder/", "shpfilename")
其中“shpfilename”是没有扩展名的文件名。
如果失败,请更新您的问题,详细说明您的工作,所看到的内容,文件大小的详细信息 - 每个“shpfilename。*”文件,R版本的详细信息,操作系统和rgdal版本。
答案 1 :(得分:1)
好的,问题更多是关于处理大文件的策略,而不是“如何读取R中的shapefile。”
This帖子展示了如何使用divide-apply-recombine方法作为分组shapefile的解决方案。
根据当前的答案,假设您有一个名为shpdata的SpatialPolygonsDataFrame。 shpdata将有一个数据属性(通过@data访问),每个多边形都有一些标识符(对于Tiger shapefile,它通常类似于'GEOID')。然后,您可以在组中循环遍历这些标识符,并为每个小批量的多边形子集/处理/导出shpdata。我建议将中间文件写为.csv或将它们插入到像sqlite这样的数据库中。
一些示例代码
library(rgdal)
shpdata <- readOGR("/path/to/shpfolder/", "shpfilename")
# assuming the geo id var is 'geo_id'
lapply(unique(shpdata@data$geo_id), function(id_var){
shp_sub = subset(shpdata, geo_id == id_var)
### do something to the shapefile subset here ###
### output results here ###
### clean up memory !!! ###
rm(shp_sub)
gc()
})