2017-12-06 47 views
4

unionSpatialPolygonsまたはaggregate関数で内部ポリゴンを解消して、六角形の図形のアウトラインを作成しようとしています。私が実際に使用していますシェープファイルでヘキサマップポリゴンシェイプファイルを解読する

# grab a dummy example shape file 
library(raster) 
g <- getData(name = "GADM", country = "GBR", level = 2) 
# par(mar = rep(0,4)) 
# plot(g) 

# create a hexagonal cartogram 
# library(devtools) 
# install_github("sassalley/hexmapr")  
library(hexmapr) 
h <- calculate_cell_size(shape = g, seed = 1, 
         shape_details = get_shape_details(g), 
         learning_rate = 0.03, grid_type = 'hexagonal') 
i <- assign_polygons(shape = g, new_polygons = h) 
par(mar = rep(0,4)) 
plot(i) 

enter image description here

# dissolve the polygons to get coastline 
library(maptools) 
j <- unionSpatialPolygons(SpP = i, IDs = rep(1, length(i))) 
par(mar = rep(0,4)) 
plot(j) 

# same result with aggregate in the raster package 
k <- aggregate(x = i) 
par(mar = rep(0,4)) 
plot(k) 

enter image description here

(ないために:私は、問題を示すために、溶解しない...ダミーの例を浮遊hexsを取得していますイギリス)私はより多くの迷いのある六角形を得る - いくつかの完全 - 一部ではない。

+0

2つの浮遊ポリゴンは南部ブリストルチャンネルであること、2つの海の入口の内陸四肢、アイリッシュ海という北部のものと一致します。だから、海岸線のこれらの地域に関連するいくつかの不具合かもしれません。私は 'hexmapr'に精通していません - それは六角形のサイズを縮小し、結果を比較することは可能ですか? –

+0

@StuartAllenあなたが正しいと思います。どちらも 'j'の穴です。 – gjabel

答えて

0

ロジャーBivand(メール交換を介して)から提案された解決策を:

g1 <- spTransform(x = g, CRSobj = CRS("+init=epsg:27700")) 
# cellsize from calculate_cell_size() above 
h1 <- spsample(x = g1, type="hexagonal", cellsize=38309) 
i2 <- HexPoints2SpatialPolygons(hex = h1) 
j2 <- unionSpatialPolygons(SpP = i2, IDs = rep(1, length(i2))) 
plot(j2) 

すなわちhexmaprでassign_polygons()を回避し、形状位置および2を生成するために、1)spsampleを利用)HexPoints2SpatialPolygons六角形グリッドの(両方spパッケージで)。

enter image description here