使用 "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)
我承认我对具体的包一无所知所以我不知道制作的是否正确,但至少它是转换的。
我有一个尼日利亚不同行政级别人口估计的 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)
我承认我对具体的包一无所知所以我不知道制作的是否正确,但至少它是转换的。