R - 如何在 spatialpolygondataframe 对象中显示来自插槽 "coords" 的数据
R - how to display data from the slot "coords" in a spatialpolygondataframe object
我看到了一个与我想到的问题类似的问题,但解决方案对我不起作用,所以想 post 在这里寻求你的帮助。
我正在做一个基于 DataCamp 地理空间数据课程的练习。下面是我作为开始执行的代码:
library(sp)
library(tigris)
nyc_tracts <- tracts(state="NY",county="New York", cb=TRUE)
nyc_tracts 被创建为 "spatialpolygonsdataframe" 对象
我试着查看列表中的第一个多边形,语法如下:
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
接下来,我尝试使用如下命令显示插槽 "area"、插槽 "ID" 和插槽 "plotOrder" 等,它们都有效,例如
nyc_tracts@polygons[[1]]@area
显示:
[1] 9.884812e-06
但是,我无法让插槽 "coord" 使用相同的语法(它似乎是一个 14x2 的矩阵,如上面的输出所示),我尝试了不同的组合,但它们不起作用并且 R 给出错误:
nyc_tracts@polygons[[1]]@coords
nyc_tracts@polygons[[1]]@coords[1,1]
错误:class "Polygons"
的对象没有名称 "coords" 的插槽
我也试过用这个:
coordinates(nyc_tracts)
但这是不正确的,虽然它没有报错;它似乎给出了来自 1nyc_tracts 对象的所有多边形的插槽 "labpt" 的坐标列表,而不仅仅是一个多边形 [[1]] 的坐标(如上所示,有 14行和 2 列)我想在我的屏幕上看到。
我确信有一个非常简单的解决方案,但我找不到。非常感谢您的帮助!!
我对 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
插槽。希望这对您有所帮助!
我看到了一个与我想到的问题类似的问题,但解决方案对我不起作用,所以想 post 在这里寻求你的帮助。
我正在做一个基于 DataCamp 地理空间数据课程的练习。下面是我作为开始执行的代码:
library(sp)
library(tigris)
nyc_tracts <- tracts(state="NY",county="New York", cb=TRUE)
nyc_tracts 被创建为 "spatialpolygonsdataframe" 对象
我试着查看列表中的第一个多边形,语法如下:
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
接下来,我尝试使用如下命令显示插槽 "area"、插槽 "ID" 和插槽 "plotOrder" 等,它们都有效,例如
nyc_tracts@polygons[[1]]@area
显示:
[1] 9.884812e-06
但是,我无法让插槽 "coord" 使用相同的语法(它似乎是一个 14x2 的矩阵,如上面的输出所示),我尝试了不同的组合,但它们不起作用并且 R 给出错误:
nyc_tracts@polygons[[1]]@coords
nyc_tracts@polygons[[1]]@coords[1,1]
错误:class "Polygons"
的对象没有名称 "coords" 的插槽我也试过用这个:
coordinates(nyc_tracts)
但这是不正确的,虽然它没有报错;它似乎给出了来自 1nyc_tracts 对象的所有多边形的插槽 "labpt" 的坐标列表,而不仅仅是一个多边形 [[1]] 的坐标(如上所示,有 14行和 2 列)我想在我的屏幕上看到。
我确信有一个非常简单的解决方案,但我找不到。非常感谢您的帮助!!
我对 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
插槽。希望这对您有所帮助!