如何从作为列表数据类型给出的空间多边形在R中创建地图

时间:2015-08-10 15:02:47

标签: r spatial sp maptools

我有一个列表(从Stata dta文件导入),其中包含为地图定义空间多边形的条目,以提供一个想法:

> typeof(aux3)
[1] "list"
> mode(aux3)
[1] "list"
> head(aux3)
  _ID        _X       _Y
1   1        NA       NA
2   1 -22.23933 64.56315
3   1 -22.25667 64.56053
4   1 -22.25026 64.56653
5   1 -22.27167 64.57319
6   1 -22.30311 64.55409
> tail(head(aux3,20000))
      _ID       _X       _Y
19995   2 21.21593 60.24696
19996   2 21.21650 60.24337
19997   2 21.23972 60.24913
19998   2 21.22203 60.23304
19999   2 21.21618 60.23332
20000   2 21.22092 60.23930
> #etc.

我想把它转换成一个数据结构,我可以用来创建一个地图(没有更大的困难而且不需要广泛的专业知识,从来没有在之前做过)。我推断sp的SpacialPolygons类型包是最简单的选择。此外,根据定义,似乎SpacialPolygons方法(在此包中定义,参见package's documentation,第79页)是从列表转换为此数据类型的正确方法。

不幸的是,这种方法不是那么简单,我需要一些帮助。我的(幼稚)尝试产生了一个我不理解的错误,并且在谷歌搜索中没有出现任何有趣的结果:

> library(maptools)
Loading required package: sp
Checking rgeos availability: FALSE
    Note: when rgeos is not available, polygon geometry     computations in maptools depend on gpclib,
    which has a restricted licence. It is disabled by default;
    to enable gpclib, type gpclibPermit()
> SP<-SpatialPolygons(aux3)
Error in SpatialPolygons(aux3) : 
  cannot get a slot ("area") from an object of type "integer"

上面的列表可以转换为SpacialPolygon吗?如果是这样,怎么样?如果没有,我应该选择哪种格式?感谢。

1 个答案:

答案 0 :(得分:1)

如果您只想绘制地图,可以使用ggplot。我无法测试这个,因为我没有你的数据,但是应该可以工作。

ht

以上假设列表library(ggplot2) aux_df <- data.frame(aux3) # as per comment: the list-to-dataframe conversion prepends the column names with X ggplot(aux_df, aes(x=X_X, y=X_Y, group=X_ID) + geom_polygon(color='black', fill=NA) + coord_map() + theme_classic() aux3_X中具有经度和纬度,由_Y定义的多边形。它默认应用墨卡托投影,但您可以使用_ID的不同参数更改此值。

这是一个使用俄亥俄县(任意选择)地图的工作示例。

coord_map()

enter image description here