使用 "st_transform()" 将坐标转换为另一个投影 - 创建制图时

Use "st_transform()" to transform coordinates to another projection - when creating cartogram

我有一个尼日利亚不同行政级别人口估计的 shapefile,我想用它创建一个地图。

我使用了 cartogram 包并尝试了以下方法

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

然而,这给了我一个错误,指出“错误:使用未投影的地图。此函数没有为 longitude/latitude 数据提供正确的质心和距离: 使用“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"))

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

这是一个完整的示例,可以转换为适合尼日利亚 "+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)

我承认我对具体的包一无所知所以我不知道制作的是否正确,但至少它是转换的。