I am trying to produce an outline for a hexagonal cartogram by dissolving the inner polygons via the unionSpatialPolygons
or aggregate
functions. I am getting stray hexs that do not 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)
# 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)
With the shapefile I am actually using (not for the UK) I get even more stray hexagons - some complete - some not.
Suggested solution from Roger Bivand (via an email exchange):
i.e. avoid
assign_polygons()
in hexmapr and utilize 1)spsample
to generate shape positions and 2)HexPoints2SpatialPolygons
for the hexagonal grid (both insp
package).