首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用spplot()合并多边形和绘图

使用spplot()合并多边形和绘图
EN

Stack Overflow用户
提问于 2013-03-04 20:43:00
回答 1查看 4.8K关注 0票数 0

我想合并gadm数据中的一些区域,然后绘制地图。到目前为止,我有以下几点:

代码语言:javascript
复制
#install.packages("sp",dependencies=TRUE)
#install.packages("RColorBrewer",dependencies=TRUE)
#install.packages("maptools",dependencies=TRUE)
library(sp)
library(maptools)
#library(RColorBrewer)

# get spatial data
con <- url("http://gadm.org/data/rda/CZE_adm2.RData")
print(load(con))
close(con)

IDs <- gadm$ID_2
IDs[IDs %in% c(11500:11521)] <- "11500"
gadm_new <- unionSpatialPolygons(gadm, IDs)

# plot map
spplot(gadm_new, "NAME_2", col.regions=col, main="Test",colorkey = FALSE, lwd=.4, col="white")

但是,这会导致错误:

代码语言:javascript
复制
Error in function (classes, fdef, mtable)  : 
  unable to find an inherited method for function "spplot", for signature "SpatialPolygons"

现在我不知道有什么方法可以修复这个错误。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-03-04 21:18:16

我不知道你在这里想做什么。

该错误是由于spplot用于绘制具有属性的空间对象,即具有关联数据。您的gadm对象属于SpatialPolygonsDataFrame类,因此它定义了可以通过插槽gadm@data访问的多边形和关联数据。使用UnionSpatialPolygons时,您只能获得一个SpatialPolygons类对象,该对象可以用plot绘制,但不能用spplot绘制:

代码语言:javascript
复制
IDs <- gadm$ID_2
IDs[IDs %in% c(11500:11521)] <- "11500"
gadm_new <- unionSpatialPolygons(gadm, IDs)
plot(gadm_new)

如果要使用spplot,则必须手动合并关联的数据,就像合并多边形一样,然后重新构建SpatialPolygonsDataFrame。其中一种方法是:

代码语言:javascript
复制
gadm_new <- gadm
## Change IDs
gadm_new$ID_2[gadm_new$ID_2 %in% c(11500:11521)] <- "11500"
## Merge Polygons
gadm_new.sp <- unionSpatialPolygons(gadm_new, gadm_new$ID_2)
## Merge data
gadm_new.data <- unique(gadm_new@data[,c("ID_2", "ENGTYPE_2")])
## Rownames of the associated data frame must be the same as polygons IDs
rownames(gadm_new.data) <- gadm_new.data$ID_2
## Build the new SpatialPolygonsDataFrame
gadm_new <- SpatialPolygonsDataFrame(gadm_new.sp, gadm_new.data) 

然后,您可以使用spplot工具绘制具有关联属性的地图:

代码语言:javascript
复制
spplot(gadm_new, "ENGTYPE_2", main="Test", lwd=.4, col="white")

注意,这里我只使用了数据的ENGTYPE_2变量,而不是NAME_2变量,因为我看不出表示一个变量的意义,因为对于每个多边形,每个值似乎都是唯一的。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15201875

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档