こんにちは: 私はしばらく R を勉強してきましたが、今は大きなシェープファイルを扱っています。これらのファイルのサイズは 600 Mb を超えています。私は 200GB の空き容量と 12 GB の RAM を搭載したコンピューターを持っています。誰かこれらのファイルの処理方法を知っているかどうか尋ねたいです。あなたの親切な助けに本当に感謝しています。
2 に答える
64-bitR
の最新バージョンと の最新バージョンを使用して、次のrgdal
ように読み込んでみてください。
library(rgdal)
shpdata <- readOGR("/path/to/shpfolder/", "shpfilename")
「shpfilename」は拡張子を除いたファイル名です。
それが失敗した場合は、あなたが何をしたか、何を見たか、ファイルサイズの詳細 - 各「shpfilename.*」ファイル、Rバージョン、オペレーティングシステム、およびrgdalバージョンの詳細で質問を更新してください。
わかりましたので、質問は、「R でシェープファイルを読み取る方法」ではなく、大きなファイルを処理するための戦略に関するものです。
この投稿では、シェープファイルをサブセット化することにより、分割-適用-再結合アプローチをソリューションとして使用する方法を示します。
現在の回答に基づいて、shpdata と呼ばれる SpatialPolygonsDataFrame があると仮定します。shpdata にはデータ属性 (@data 経由でアクセス) があり、ポリゴンごとに何らかの識別子があります (Tiger シェープファイルの場合、通常は「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()
})