处理R上的大型shapefile

时间:2011-06-08 09:29:09

标签: r large-files shapefile

下午好: 我一直在研究R,但是现在我正在使用大型shapefile,这些文件的大小超过600 Mb。我有一台200GB可用的计算机和12GB的RAM,我想问一下是否有人知道如何处理这些文件?非常感谢你的帮助。

2 个答案:

答案 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()
})