Dissolving polygon shape form files

I am trying to create a diagram for a hexagonal cartogram by dissolving internal polygons using the unionSpatialPolygonsor functions aggregate. I get homeless hexes that don't dissolve ... a dummy example to show the problem:

# 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

With the shapefile that I actually use (not for the UK), I get even more stray hexagons - some complete - some not.

+4
source share
1 answer

Suggested solution from Roger Bivand (via email):

 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)

i.e. avoid assign_polygons()in hexmapr and use 1) spsampleto create the position of the figure and 2) HexPoints2SpatialPolygonsfor the hexagonal grid (as in the package sp).

enter image description here

0
source

Source: https://habr.com/ru/post/1690318/


All Articles