0

我有一个关于尼日利亚不同行政级别的人口估计的 shapefile,我想从中创建一个制图。

我使用了制图包并尝试了以下

library(cartogram)
admin_lvl2_cartogram <- cartogram(admin_level2_shape, "mean", itermax=5)

但是,这给了我一个错误,指出“错误:使用未投影的地图。此函数没有为经度/纬度数据提供正确的质心和距离:使用“st_transform()”将坐标转换为另一个投影。” 我不确定如何解决这个问题

重新创建初始数据

wopr使用包下载数据

library(wopr)
catalogue <- getCatalogue()
# Select files from the catalogue by subsetting the data frame
selection <- subset(catalogue,
                    country == 'NGA' &
                      category == 'Population' & 
                      version == 'v1.2')
# Download selected files
downloadData(selection)

手动解压下载的zip文件(NGA_population_v1_2_admin.zip)并读入数据

library(rgdal)
library(here)

admin_level2_shape <- readOGR(here::here("wopr/NGA/population/v1.2/NGA_population_v1_2_admin/NGA_population_v1_2_admin_level2_boundaries.shp"))
4

1 回答 1

1

spTransform包中的函数sp可能是最简单的,因为该readOGR调用返回该包中定义的空间多边形。

这是一个完整的示例,可以转换为适合尼日利亚的投影,"+init=epsg:26331". 您可能必须在 Google 上找到适合您需求的确切版本。

#devtools::install_github('wpgp/wopr')
library(wopr)
library(cartogram)
library(rgdal)
library(sp)
library(here)

catalogue <- getCatalogue()
# Select files from the catalogue by subsetting the data frame
selection <- subset(catalogue, country == 'NGA' & category == 'Population' & version == 'v1.2')
# Download selected files
downloadData(selection)
unzip(here::here("wopr/NGA/population/v1.2/NGA_population_v1_2_admin.zip"), 
    overwrite = T, 
    exdir = here::here("wopr/NGA/population/v1.2"))
admin_level2_shape <- readOGR(here::here("wopr/NGA/population/v1.2/NGA_population_v1_2_admin/NGA_population_v1_2_admin_level2_boundaries.shp"))

transformed <- spTransform(admin_level2_shape, CRS("+init=epsg:26331"))
admin_lvl2_cartogram <- cartogram(transformed, "mean", itermax=5)

我承认我对特定的包一无所知,所以我不知道所生产的是否正确,但至少它会发生变化。

于 2021-01-30T21:23:26.587 回答