微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决使用“st_transform()”将坐标转换为另一个投影 - 创建制图时

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

我使用了cartogram包并尝试了以下内容

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"))

解决方法

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)

我承认我对具体的包一无所知,所以我不知道生成的内容是否正确,但至少它会变形。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?