イギリス諸島の地図を作成しようとしていて、非常に奇妙なメモリの問題に遭遇しました。私のワークフローでは、ggplot のレイヤーを利用して、ベース マップに新しい詳細を追加しています。
ベース マップ自体は GADM から英国とアイルランドのシェープ ファイルを取得し、MapToolsを使用してジオメトリを簡略化すると、次のthinnedSpatialPoly
マップになります。
次に、後続のレイヤーについても同じことを行います。SHP ファイルを読み込み、ジオメトリを単純化し、ベース マップに追加します。次のようにします。
# new_data is a SpatialPolygonsDataFrame
base_map + geom(data=new_data, color="black", fill=my_fill)
ほとんどのマップでは、これで問題なく動作しています。ただし、特定のレイヤーを 1 つ追加しようとすると、R がフリーズし、最終的に次のエラーが表示されます。
Error: cannot allocate vector of size 86.9 Mb
In addition: Warning messages:
1: In data.frame(x = x, y = y, aes_df) :
Reached total allocation of 3953Mb: see help(memory.size)
2: In data.frame(x = x, y = y, aes_df) :
Reached total allocation of 3953Mb: see help(memory.size)
3: In as.data.frame.numeric(x[[i]], optional = TRUE) :
Reached total allocation of 3953Mb: see help(memory.size)
4: In as.data.frame.numeric(x[[i]], optional = TRUE) :
Reached total allocation of 3953Mb: see help(memory.size)
5: In as.data.frame.numeric(x[[i]], optional = TRUE) :
Reached total allocation of 3953Mb: see help(memory.size)
6: In as.data.frame.numeric(x[[i]], optional = TRUE) :
Reached total allocation of 3953Mb: see help(memory.size)
このプロットを生成するコードは、上記とまったく同じです。新しいレイヤーを単独でプロットすると、たとえば
ggplot(new_data, aes(x=long, y=lat, group=group)) + geom_polygon
その後、問題はなく、マップは非常に高速に描画されます。ディスク上の参照用に、シェープ ファイルは 769 KB であるのに対し、他のレイヤーは 248 KB です。
これをデバッグして修正する方法について、ここで途方に暮れています。どんなポインタでも素晴らしいでしょう-ありがとう!