我的shapefile代表一个大陆。它有许多多边形(因为有几个图层)。
我想计算不同变量的表面积/平方公里,并将结果放在一列中,例如:
每个国家的总平方公里数(名称变量):它会给我每个国家多边形的平方公里数。 每个AEZ区域的总平方公里数(AEZ变量):它会给我每个AEZ区域的平方公里数。
等等。
我在Arcmap中做过这件事,但无法弄清楚如何在R中获得相同的结果。
我尝试使用Areapolygons,但它不起作用。
> dput(PRIO[2:6,9,12:14, c(1,2)]) 结构(列表(名称= c(“毛里塔尼亚”,“毛里塔尼亚”,“毛里塔尼亚”,“毛里塔尼亚”,“毛里塔尼亚”),几何结构=结构(列表(结构(列表(结构(c(-8.15539750263898,-8.5,-8.5,-8.20444499999996,-8.15539750263898,27,27,27.1964674367602,27.0274960000002,27),.Dim = c(5L,2L))))) ,类= c(“XY”,“MULTIPOLYGON”,“sfg”)),结构(列表(列表(结构(c(-8.5,-8.66722299999986,-8.66722299999986,-8.66722299999986,-8.66717809129804,-8.5,-8.5,26.5,26.5,26.8330540000001,26.9663889999999,27,27,26.5),.Dim = c(7L,2L)))) ,类= c(“XY”,“MULTIPOLYGON”,“sfg”)),结构(列表(列表(结构(c(-8,-8,-8.5,-8.5,-8.15539750263898,-8.13111099999998,-8,26.9105346374803,26.5,26.5,27,27,26.9863850000001,26.9105346374803),.Dim = c(7L,2L)))) ,类= c(“XY”,“MULTIPOLYGON”,“sfg”)),结构(列表(列表(结构(c(-7.50000000000003,-7.50000000000003,-8,-8,-7.71194499999996,-7.69361099999992,-7.50000000000003,26.6209884313231,26.5,26.5,26.9105346374803,26.7438890000001,26.7341649999999,26.6209884313231),.Dim = c(7L,2L)))) ,类= c(“XY”,“MULTIPOLYGON”,“sfg”)),结构(列表(列表(结构(c(-7.29302525734133,-7.50000000000003,-7.50000000000003,-7.29302525734133,26.5,26.5,26.6209884313231,26.5),.Dim = c(4L,2L)))) ,类= c(“XY”,“MULTIPOLYGON”,“sfg”)),类= c(“sfc_MULTIPOLYGON”,“sfc”),精度= 0,bbox=结构(c(xmin= -8.66722299999986,ymin= 26.5,xmax= -7.29302525734133,ymax= 27.1964674367602),类=“bbox”),crs=结构(列表(输入=“WGS 84”,wkt=“GEOGCRS [ \”WGS 84 \“,\n DATUM [\”World Geodetic System 1984 \“,\n ELLIPSOID [\”WGS 84 \“,6378137,298.257223563,\n LENGTHUNIT [\”metre \“,1]]],\n PRIMEM [\”Greenwich \“,0,\n ANGLEUNIT [\”degree \“,0.0174532925199433]],\n CS [椭球形,2],\n AXIS [\”latitude \“,north,\n ORDER [1],\n ANGLEUNIT [\”degree \“,0.0174532925199433]],\n AXIS [\”longitude \“,east,\n ORDER [2],\n ANGLEUNIT [\”degree \“,0.0174532925199433]],
谢谢!
nc
吗,即数据集中每个国家都是一行吗?没有看到数据,很难给出建议。你能否在问题中使用dput()
共享你的数据(或示例数据)?请参考此答案,了解如何按数据中的某个字段进行分组,并计算每个组的面积 https://dev59.com/gkEEtIcB2Jgan1zneX22。 - Skaqqsmerge()
,只需先从y=
中删除几何图形即可。我在我的答案中添加了另一个编辑。 - Skaqqsdf$area <- st_area(df)
计算数据中每行的面积,这在sf
中对应于不同的空间要素。为了可视化,您可以独立绘制每个要素plot(df[1,"geometry"];plot(df[2,"geometry"];plot(df[3,"geometry"]
... 以此类推。这有帮助吗? - Skaqqs