如何根据 1830 年的法国盖里地图创建“geofacet”网格?

问题描述 投票:0回答:0

我正在尝试为

geofacet
包创建一个网格 基于 1830 年的法国地图,在
Guerry
包中。

底图,

Guerry::gfrance85
是85个省(不包括科西嘉岛)的
SpatialPolygonsDataFrame
当时

我有两个问题:

  • 根据地图中部门的质心创建合理的网格。我在下面创建的那个有太多漏洞。
  • 获取
    geofacet
    包来识别这个[但我会把它保存为一个单独的查询]

下面是我的工作MRE。我选择使用 17 x 17 网格,因为任何更小的网格都会产生重复的单元格 对于部门。

library(sp)
library(geofacet)
library(ggplot2)
library(dplyr)
#library(tidyr)
library(Guerry)


# scale a variable into n integer bins
bin <- function(x, n=10){
  1 + floor(n * (x - min(x)) / (max(x) - min(x)))
}

data(gfrance85, package = "Guerry")

dept         <- data.frame(gfrance85)[,"dept"]   
dep.names    <- data.frame(gfrance85)[,"Department"]
region.names <- data.frame(gfrance85)[,"Region"]


# extract department centroids
xy <- coordinates(gfrance85) |>
  as.data.frame() |>
  setNames(c("x", "y")) 

# make the grid data.frame
nbin <- 17   # size of grid
gfrance85_grid <- data.frame(code = dept,
                             name = as.character(dep.names),
                             row = bin(xy$x, nbin),
                             col = bin(xy$y, nbin))
head(gfrance85_grid)

我的网格数据集是这样的:

  code         name row col
1    1          Ain  15   8
2    2        Aisne  12  16
3    3       Allier  11   9
4    4 Basses-Alpes  16   4
5    5 Hautes-Alpes  16   5
6    7      Ardeche  13   5

当我绘制这个时,如下图所示,它显示了第一个问题:网格中有太多的孔。 我如何处理这个数据集以关闭一些漏洞(没有重复的单元格)?

gfrance85_grid |>
  mutate(label = paste(code, "\n", name)) |>
  ggplot(aes(x = row, y = col)) +
  geom_tile(color = "black",
            fill = scales::alpha("blue", .3)) +
  geom_text(aes(label = label), size = 2) +
  coord_equal()

r ggplot2 geospatial geofacet
© www.soinside.com 2019 - 2024. All rights reserved.