Почему rasterToPolygons создает горизонтальные линии? - PullRequest
0 голосов
/ 13 мая 2019

Я пытаюсь преобразовать растровый слой в полигоны на основе его значений.Мой растр выглядит так:

enter image description here

> labels_rast
class       : RasterLayer 
dimensions  : 26, 64, 1664  (nrow, ncol, ncell)
resolution  : 0.03000146, 0.02999809  (x, y)
extent      : 352032, 352033.9, 8551454, 8551455  (xmin, xmax, ymin, ymax)
coord. ref. : +proj=utm +zone=18 +south +datum=WGS84 +units=m +no_defs+ellps=WGS84 +towgs84=0,0,0 
data source : in memory
names       : layer 
values      : 1, 3  (min, max)

Когда я применяю функцию rasterToPolygons (dissolve = TRUE), я получаю дополнительные полигоны (определенныепо горизонтальным линиям):

enter image description here

Как можно избежать создания многоугольников, определяемых горизонтальными линиями?

1 Ответ

1 голос
/ 13 мая 2019

Это работает для этого очень похожего случая:

library(raster)
r <- raster(nrow=26, ncol=64, xmn=352032, xmx=352033.9, ymn=8551454, ymx=8551455, crs="+proj=utm +zone=18 +south +datum=WGS84 +units=m", vals=3)
r[, 20:40] <- 2
r[1:3, 1:60] <- 1
r[24:26, 5:64] <- 1
x <- rasterToPolygons(r, dissolve=TRUE)
plot(r)
lines(x)

Я предполагаю, что он не работает для вас из-за неточности с плавающей запятой.Нужно было бы увидеть ваш файл, чтобы быть уверенным.Но, если это так, возможно, вы можете немного округлить экстент (или разрешение).

Например

res(labels_rast) <- 0.03 
y <- rasterToPolygons(labels_rast, dissolve=TRUE)
...