R - 如何显示来自插槽的数据" coords"在spatialpolygondataframe对象中

时间:2017-08-01 10:01:01

标签: r spatial

我看到了一个与我想到的问题类似的问题,但解决方案对我不起作用,所以想在这里发帖给你帮助。

我正在根据地理空间数据的DataCamp课程进行练习。以下是我作为开始执行的代码:

library(sp)
library(tigris)
nyc_tracts <- tracts(state="NY",county="New York", cb=TRUE)

nyc_tracts创建为&#34; spatialpolygonsdataframe&#34;对象

我尝试使用以下语法查看列表中的第一个多边形:

nyc_tracts@polygons[[1]], 

显示以下内容:

An object of class "Polygons"
Slot "Polygons":
[[1]]
An object of class "Polygon"
Slot "labpt":
[1] -73.98733  40.71516

Slot "area":
[1] 9.884812e-06

Slot "hole":
[1] FALSE

Slot "ringDir":
[1] 1

Slot "coords":
           [,1]     [,2]
 [1,] -73.98975 40.71555
 [2,] -73.98915 40.71671
 [3,] -73.98837 40.71645
 [4,] -73.98672 40.71595
 [5,] -73.98501 40.71544
 [6,] -73.98426 40.71521
 [7,] -73.98334 40.71493
 [8,] -73.98245 40.71470
 [9,] -73.98471 40.71451
[10,] -73.98534 40.71446
[11,] -73.98716 40.71431
[12,] -73.98934 40.71413
[13,] -73.99022 40.71440
[14,] -73.98975 40.71555



Slot "plotOrder":
[1] 1

Slot "labpt":
[1] -73.98733  40.71516

Slot "ID":
[1] "156"

Slot "area":
[1] 9.884812e-06

接下来,我尝试显示插槽&#34;区域&#34;,插槽&#34; ID&#34;和插槽&#34; plotOrder&#34;等命令如下所示,它们都有效,例如

nyc_tracts@polygons[[1]]@area

显示:

[1] 9.884812e-06

然而,我无法获得插槽&#34; coord&#34;使用相同的语法(它似乎是一个14x2的矩阵,如上面的输出所示),我尝试了不同的组合,但他们不工作,R给出错误:

nyc_tracts@polygons[[1]]@coords
nyc_tracts@polygons[[1]]@coords[1,1]

错误:没有名称的插槽&#34; coords&#34;对于这个对象&#34;多边形&#34;

我也试过用这个:

coordinates(nyc_tracts)

但这不正确,虽然没有出错;它似乎从插槽中提供了一个坐标列表&#34; labpt&#34;来自1nyc_tracts对象的所有多边形,而不仅仅是我想在屏幕上看到的一个多边形[[1]]的坐标(如上所示,有14行和2列)。

我确信有一个非常简单的解决方案,但我找不到它。非常感谢你的帮助!!

1 个答案:

答案 0 :(得分:1)

我对R中的空间类经验很少,所以可能有更好的方法来实现你想要的。但这对我有用:

nyc_tracts@polygons[[1]]@Polygons[[1]]@coords

输出:

       [,1]  [,2]
 [1,] -73.99 40.72
 [2,] -73.99 40.72
 [3,] -73.99 40.72
 [4,] -73.99 40.72
 [5,] -73.99 40.72
 [6,] -73.98 40.72
 [7,] -73.98 40.71
 [8,] -73.98 40.71
 [9,] -73.98 40.71
[10,] -73.99 40.71
[11,] -73.99 40.71
[12,] -73.99 40.71
[13,] -73.99 40.71
[14,] -73.99 40.72

如果你想在将来找到类似的东西:我通过检查你的陈述的输出来得出这个结果:

> nyc_tracts@polygons[[1]]
An object of class "Polygons"
Slot "Polygons":
[[1]] ....

所以nyc_tracts@polygons[[1]]显然包含一个对象Polygons,我们得到它的第一个元素nyc_tracts@polygons[[1]]@Polygon[[1]]。在控制台中打印结果时,您会发现该对象包含您要查找的@coords插槽。希望这有帮助!