gpt4 book ai didi

R:map2SpatialPolygons 中的 ID

转载 作者:行者123 更新时间:2023-12-02 08:21:10 27 4
gpt4 key购买 nike

我正在尝试使用 map2SpatialPolygons 在显示美国各州子集的 map 中创建核密度图。我不断收到错误消息“ map 和 ID 的长度不同”。

我知道这段代码可以工作(来自map2SpatialPolygons的帮助):

nor_coast_poly <- map("world", "norway", fill=TRUE, col="transparent", plot=FALSE, ylim=c(58,72))
IDs <- sapply(strsplit(nor_coast_poly$names, ":"), function(x) x[1])
nor_coast_poly_sp <- map2SpatialPolygons(nor_coast_poly, IDs=IDs, proj4string=CRS("+proj=longlat +datum=wgs84"))

此代码也适用(在绘制整个美国 map 时):

usmap <- map('usa', fill=TRUE, col="transparent", resolution=0, plot=FALSE)
uspoly <- map2SpatialPolygons(usmap, IDs=usmap$names, proj4string=CRS("+proj=longlat +datum=WGS84"))

但是这段代码没有:

states.to.plot=c("illinois", "indiana", "ohio")
dmap<-map("state", regions=states.to.plot, col="transparent", plot=FALSE)
dpoly <- map2SpatialPolygons(dmap, IDs=dmap$names, proj4string=CRS("+proj=longlat +datum=WGS84"))

它抛出错误:

Error in map2SpatialPolygons(dmap, IDs = dmap$names, proj4string = CRS("+proj=longlat +datum=WGS84")) :
map and IDs differ in length

使用map("state"...)时如何获得正确的ID?

最佳答案

来自? map :

The return value is a list with x, y, range, and names components. ... If fill is FALSE, the x and y vectors are the coordinates of successive polylines, separated by NAs. If fill is TRUE, the x and y vectors have coordinates of successive polygons, again separated by NAs.

因此,使用默认的 fill = FALSE ,您会得到一堆折线,“一堆”比您想要绘制的三个状态多,这就是您收到上述错误的原因。但是,即使 ID 数量正确,您仍然会收到错误,因为 map 返回折线而不是多边形。

使用 fill = TRUE,您将获得所需的多边形:

dmap<-map("state", regions=states.to.plot, col="transparent", plot=FALSE, fill = TRUE)

dpoly <- map2SpatialPolygons(dmap, IDs = dmap$names,
proj4string=CRS("+proj=longlat +datum=WGS84"))

关于R:map2SpatialPolygons 中的 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11104809/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com