如何在 R 中编辑单元格 Shapefile?
How to edit cells Shapefile in R?
我从 gadm 下载了一个世界地图的 shapefile,但是,导入 shape 文件时出现了拼写错误。例如,“Aland”在 shapefile 中显示为“Ã…land”。我想更改几个国家/地区。
world map shapefile,上面写着“您还可以将此版本下载为六个单独的图层(subdivision/aggregation 的每个级别一个),作为地理包数据库或 shapefile”:https://gadm.org/download_world.html
我使用以下方法导入了 shapefile:
worldmap <- readOGR("file/gadm36_0.shp")
我尝试使用以下代码:
levels(wordlmap$NAME_0)[5] <- "Aland"
但是我收到了这条消息:
Error in `levels<-`(`*tmp*`, value = c(NA, NA, NA, NA, "Aland")) :
factor level [2] is duplicated
您能否建议如何改进此代码或提前 alternative.Thanks
由于您没有提供 shapefile,我只使用 Indian states 公开可用的 shapefile。总之就是使用 sf
包。它将 shapefile 作为(准)数据帧加载——经度和纬度存储在几何变量中。然后,你应该在熟悉的领域。这是一些更改状态名称变量的代码:
# clear environment
rm(list=ls(all=TRUE))
# let's take admin 1 (states)
# note: already in WGS84 format
library(sf)
india_shape <- st_read("india_shape/gadm36_IND_1.shp", stringsAsFactors=FALSE)
# Let's pick something to change (state name)
> india_shape$NAME_1[1]
[1] "Andaman and Nicobar"
# Now change it
> india_shape$NAME_1[1] <- "New State Name"
> india_shape$NAME_1[1]
[1] "New State Name"
我可以告诉您一些关于我如何管理从 www.gadm.org 网站下载的形状文件的事情。
首先,一个形状文件有几个其他没有.shp 扩展名的相关文件。这些文件必须一起保存在同一个文件夹中。所有这些文件都包含在 gadm 网站的形状 zip 文件中。
rgdal 包提供了 readOGR() 函数。此函数通常采用以下形式:readOGR(dsn = " ", layer = " " )
- dsn是“数据源名称”。使用引号。
- 层是没有.shp 扩展名的形状文件的名称。使用引号。
需要适当的文件管理才能使事情正常进行并保持良好的文件管理。我的数据集文件夹中已有一个 USA 文件夹。
我刚刚下载了 gadm USA 形状文件。所以首先,我将在 USA 文件夹中添加一个名为 USA_map 的新文件夹。并在这个新 USA_map 文件夹中创建一个名为 data 的新文件夹。
C:/python/datasets/usa/usa_map/data # usa_map/data are new
从“下载”文件夹中复制下载的 gadm36_USA_shp.zip 并粘贴到新的“USA_map”文件夹中。然后,打开 GADM zip 文件夹并将 zip 文件夹的全部内容解压缩到新的“数据”文件夹中。然后可以删除 zip 文件,因为所有文件都已复制到“数据”文件夹中。一切就绪。
现在使用 readOGR() 函数读取形状文件并分配给名为 usmap 的新变量
usmap <- readOGR(dsn = "c:/python/datasets/USA/USA_map/data", layer = "gadm36_USA_1")
诀窍是遵循正确的文件管理,以便 readOGR() 函数按设计工作。
接下来,您需要了解如何浏览此类数据。
如果有多个多边形同名错误,你可以这样做:
w <- length(wordlmap)
for (i in 1:w){
if (wordlmap$NAME_0[i] == "Ã…land") {
wordlmap$NAME_0[i] <- "Aland"
}}
我从 gadm 下载了一个世界地图的 shapefile,但是,导入 shape 文件时出现了拼写错误。例如,“Aland”在 shapefile 中显示为“Ã…land”。我想更改几个国家/地区。
world map shapefile,上面写着“您还可以将此版本下载为六个单独的图层(subdivision/aggregation 的每个级别一个),作为地理包数据库或 shapefile”:https://gadm.org/download_world.html
我使用以下方法导入了 shapefile:
worldmap <- readOGR("file/gadm36_0.shp")
我尝试使用以下代码:
levels(wordlmap$NAME_0)[5] <- "Aland"
但是我收到了这条消息:
Error in `levels<-`(`*tmp*`, value = c(NA, NA, NA, NA, "Aland")) :
factor level [2] is duplicated
您能否建议如何改进此代码或提前 alternative.Thanks
由于您没有提供 shapefile,我只使用 Indian states 公开可用的 shapefile。总之就是使用 sf
包。它将 shapefile 作为(准)数据帧加载——经度和纬度存储在几何变量中。然后,你应该在熟悉的领域。这是一些更改状态名称变量的代码:
# clear environment
rm(list=ls(all=TRUE))
# let's take admin 1 (states)
# note: already in WGS84 format
library(sf)
india_shape <- st_read("india_shape/gadm36_IND_1.shp", stringsAsFactors=FALSE)
# Let's pick something to change (state name)
> india_shape$NAME_1[1]
[1] "Andaman and Nicobar"
# Now change it
> india_shape$NAME_1[1] <- "New State Name"
> india_shape$NAME_1[1]
[1] "New State Name"
我可以告诉您一些关于我如何管理从 www.gadm.org 网站下载的形状文件的事情。
首先,一个形状文件有几个其他没有.shp 扩展名的相关文件。这些文件必须一起保存在同一个文件夹中。所有这些文件都包含在 gadm 网站的形状 zip 文件中。
rgdal 包提供了 readOGR() 函数。此函数通常采用以下形式:readOGR(dsn = " ", layer = " " )
- dsn是“数据源名称”。使用引号。
- 层是没有.shp 扩展名的形状文件的名称。使用引号。
需要适当的文件管理才能使事情正常进行并保持良好的文件管理。我的数据集文件夹中已有一个 USA 文件夹。
我刚刚下载了 gadm USA 形状文件。所以首先,我将在 USA 文件夹中添加一个名为 USA_map 的新文件夹。并在这个新 USA_map 文件夹中创建一个名为 data 的新文件夹。
C:/python/datasets/usa/usa_map/data # usa_map/data are new
从“下载”文件夹中复制下载的 gadm36_USA_shp.zip 并粘贴到新的“USA_map”文件夹中。然后,打开 GADM zip 文件夹并将 zip 文件夹的全部内容解压缩到新的“数据”文件夹中。然后可以删除 zip 文件,因为所有文件都已复制到“数据”文件夹中。一切就绪。
现在使用 readOGR() 函数读取形状文件并分配给名为 usmap 的新变量
usmap <- readOGR(dsn = "c:/python/datasets/USA/USA_map/data", layer = "gadm36_USA_1")
诀窍是遵循正确的文件管理,以便 readOGR() 函数按设计工作。
接下来,您需要了解如何浏览此类数据。
如果有多个多边形同名错误,你可以这样做:
w <- length(wordlmap)
for (i in 1:w){
if (wordlmap$NAME_0[i] == "Ã…land") {
wordlmap$NAME_0[i] <- "Aland"
}}