gpt4 book ai didi

r - 神秘的多边形问题导致错误的光栅化

转载 作者:行者123 更新时间:2023-12-02 06:00:41 25 4
gpt4 key购买 nike

我有许多正在光栅化的空间多边形,使用 sfraster包。它的效果很好,除了这一种情况,我已经没有关于如何解决问题的想法了:

我有一个多边形作为简单的要素多边形和一个栅格模板。两者都已转换为等面积贝尔曼投影。多边形存在几何有效性问题,我用 st_make_valid 修复了该问题。来自lwgeom包裹。

library(sf)
library(lwgeom)
library(raster)

spfile <- 'sp.rds'
rasterfile <- 'rasterTemplate_150km.tif'

sp <- readRDS(spfile)
rasterTemplate <- raster(rasterfile)

# are there any geometry validity issues? yes!
st_is_valid(sp)
[1] FALSE
Warning message:
In evalq((function (..., call. = TRUE, immediate. = FALSE, noBreaks. = FALSE, :
Ring Self-intersection at or near point 9947244.3466675151 1450099.5373749144


sp2 <- st_make_valid(sp)

st_is_valid(sp2)
[1] TRUE

plot(sp2, col='blue')

enter image description here从视觉上看,多边形看起来不错。

现在我对其进行栅格化(我需要转换为 SpatialPolygon 以与栅格兼容):

sp3 <- as(sp2, 'Spatial')

cover <- rasterize(sp3, rasterTemplate, getCover=TRUE)

plot(cover, box=F, axes=F)

enter image description here

问题是有一家酒吧穿越澳大利亚。

这是否意味着该多边形仍然存在 st_is_valid 未检测到的几何有效性问题?如果是这样,那么这种类型的问题就很难处理,因为除了视觉之外,它不容易被发现......

回过头来,我可以确认 as(sp, 'Spatial) 发生了光栅化问题。 ,所以st_make_valid不会造成这个问题。

如何解决这个问题?

更新

以下建议使用 st_cast 。我试过sp4 <- as(st_cast(sp, "POLYGON"), 'Spatial') 。同样的光栅化问题仍然存在。

我还尝试使用 sp5 <- as(st_buffer(sp, dist = 0), 'Spatial') 按 0 进行缓冲,但这也并不能解决问题。

多边形可以作为.rds文件下载here 。光栅可以下载here

最佳答案

来自fasterize的fasterize函数包显然不会导致同样的错误。 Fasterize 也将并入 stars(see this issue) ,应该很快就会出现在 CRAN 上。

也不需要 st_cast 或 st_make_valid。

library(sf)
library(fasterize)

df <- readRDS('sp.rds') %>% st_sf(field = 1)
template <- raster('rasterTemplate_150km.tif')
r <- fasterize(df, template, field = 'field')
plot(r)

enter image description here

关于r - 神秘的多边形问题导致错误的光栅化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49326586/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com