【发布时间】:2013-04-19 19:29:15
【问题描述】:
所以我有多个物种范围,如下所示(例如蓝色)这个范围从东到西横跨非洲:
我可以通过在rgeos 包中使用gArea 来获得总面积。我想知道的是这个文件有多少个单独的多边形 - 即总范围中有多少不同的区域(这可能是岛屿,或者只是分离的人口)以及 这些多边形的范围是。我一直在使用以下代码:
#Load example shapefile
shp <- readShapeSpatial("species1.shp")
#How many polygon slots are there?
length(shp@polygons)
>2
#How many polygons are in each slot
length(shp@polygons[[1]]@Polygons
length(shp@polygons[[2]]@Polygons
并获取特定区域的面积:
shp@polygons[[1]]@Polygons[[1]]@area
这是正确的吗?我担心范围中间的一个湖可能会自己构成一个多边形?我想最终得到一个大致如下的列表:
Species A Species B
Polygon 1 12 11
Polygon 2 13 10
Polygon 2 14 NA
如果我想为每个物种编译一个列表,说明有多少个多边形及其各自的范围,如果上面的代码是正确的,那么传递给一个循环将非常简单。
谢谢
【问题讨论】:
-
你要数洞(湖和类似的洞)吗?
-
不,我不想要湖
-
湖应该是多边形中的一个洞,即它不能单独存在,但这取决于你所拥有的 shapefile 的质量。您可以尝试运行
unlist( sapply( sapply( shp@polygons, slot , "Polygons" ) ,function(x) sapply(x , slot , "hole" ) ) )以查看是否有任何多边形被归类为孔?孔是多边形的一部分,gArea 将减去多边形内孔的面积来计算面积。 -
是的,有些确实被归类为漏洞
标签: r extract polygon area shapefile