【问题标题】:Automatically reclassify small SpatialPolygons inserted into large SpatialPolygons using R使用 R 自动重新分类插入到大 SpatialPolygons 中的小 SpatialPolygons
【发布时间】:2020-04-08 16:54:36
【问题描述】:

我想为嵌套在较大多边形中的小多边形分配与较大多边形相同的值。 在图 1 中,您可以看到 raster 格式的小多边形:

在图 2 中的 SpatialPolygons 中作为单独的多边形:

这些多边形是通过 k-means 排序、生成栅格和使用rasterFromXYZ 函数(代码如下)的结果:

mydata.26.raster <- rasterFromXYZ(as.data.frame(mydata.26.coord[,c("x", "y",       "cls_26.cluster")]),res=5, crs=crs)

然后rasterToPolygons 函数我能够分离多边形(代码如下):

zona.26.pol<- rasterToPolygons(zona.26.raster$cls_26.cluster,dissolve=TRUE)
zona.26.pol <- disaggregate(zona.26.pol)

这里是zona.26.pol如果你想帮助它是.shp格式的。

然后我手动重新分类多边形,最后使用相同的类添加它们。 我手动赋值后,我想自动实现的结果(创建规则)如图3:

欢迎任何帮助!

【问题讨论】:

  • 你能分享zona.26.poldisaggregate的结果)来测试答案吗?
  • @ThetaFC 我编辑了问题,并以 .shp 格式放置了文件的链接如果您喜欢其他格式或更多文件,请随时提问。谢谢。
  • 谢谢,仍然需要.prj 文件。或者你可以分享投影是什么。看起来像一个 UTM 坐标系。
  • @ThetaFC 我更新了文件,现在它正在投影:+ proj = utm + zone = 22 + south + datum = WGS84 + units = m + no_defs + ellps = WGS84 + towgs84 = 0,0 ,0 我在 QGis 中打开,一切正常,我希望现在你可以操作。最佳

标签: r k-means spatial raster sp


【解决方案1】:

这将仅根据它们的大小移除小的嵌套多边形,然后移除留在较大的剩余多边形中的孔。这适用于您的示例,但如果您要删除较大的嵌套多边形,则可能会失败。在这种情况下,我们必须弄清楚如何识别“嵌套”的几何图形

library(sf)
library(units)
library(nngeo)
min_polygon_area  <- 10000 #set minimum size of a nested polygon you would like to remove
units(min_polygon_area) <- as_units('m^2') #as defined below by st_area
zona.26.pol <- st_read(file.path(workDir, 'zona.26.pol.shp'))
st_crs(zona.26.pol) <-  '+proj=utm +zone=22 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs' #define crs
zona.26.pol$area <- st_area(zona.26.pol)
zona.26.pol$area #note area is in m^2
plot(zona.26.pol[,'cls_26_']) #as-is plot

zona.26.pol <- zona.26.pol[zona.26.pol$area>min_polygon_area, ]
plot(zona.26.pol[,'cls_26_']) #small polygons removed; holes remaining

zona.26.pol_no_holes <- st_remove_holes(zona.26.pol)
plot(zona.26.pol_no_holes[,'cls_26_']) #holes removed

请注意,我使用 sf 包来读入 shapefile,以便利用 nngeo 包中的 st_remove_holes 函数,但我通常使用 rastersp 包。

【讨论】:

    猜你喜欢
    • 2018-04-04
    • 1970-01-01
    • 1970-01-01
    • 2014-03-12
    • 1970-01-01
    • 2016-08-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多