2016-12-15 1 views
0

Я работаю с шейп-файлами в R, которые мне нужно преобразовать из полигона в растровый. В то время как векторы выглядят безупречно при построении, когда они преобразуются в растровое растение, используя «растеризовать», они создают ошибочные горизонтальные линии. Вот пример задачи:Ошибка растеризации: преобразование многоугольника в растровое выражение создает горизонтальные линии

Polygon Raster

Вот общий пример кода, который я использую (жаль, что я не могу загрузить себя данные, как это патентованный):

spdf.dat <- readOGR("directory here", "layer here") 

# Plot polygon 
plot(spdf.dat, col = 'dimgrey', border = 'black') 

# Extract boundaries 
ext <- extent(spdf.dat) 

# Set resolution for rasterization 
res <- 1 

# determine no. of columns from extents and resolution 
yrow <- round(([email protected] - [email protected])/res) 
xcol <- round(([email protected] - [email protected])/res) 

# Rasterize base 
rast.base <- raster(ext, yrow, xcol, crs = projection(spdf.dat)) 

# Rasterize substrate polygons 
rast <- rasterize(spdf.dat, rast.base, field = 1, fun = 'min', progress='text') 
plot(rast, col = 'dimgrey') 

Означает ли это, что проблема связана с исходными данными или функцией растеризации? Кто-нибудь видел такую ​​ошибку раньше? Благодарим вас за любой совет, который вы можете предоставить.

+0

Я пробовал свой код с моими данными, и у него хорошее поведение. Ваш код выглядит хорошо для меня. может быть, проблема с вашими данными? Попробуйте использовать другой набор данных. – Bastien

+0

Когда я смотрю на вашу фигуру, мне кажется, что проблематичные появляющиеся линии в растре расположены на одной и той же широте некоторых островов. Попробуйте удалить эти острова из своего набора данных. Если проблема исчезнет, ​​вы поймете, что ваши данные являются проблемой и где в ваших данных проблема. – Bastien

+0

Возможно, вы захотите попробовать пакет gdalUtils, который имеет функцию: 'gdal_rasterize' – Bastien

ответ

1

Чтобы сделать его официальным, так что вопрос считается ответом, я скопирую свои комментарии. Вы можете это принять.

Когда я смотрю на вашу фигуру, мне кажется, что проблематичные появляющиеся линии в растре расположены на одной и той же широте некоторых островов. Попробуйте удалить эти острова из своего набора данных. Если проблема исчезнет, ​​вы поймете, что ваши данные являются проблемой и где в ваших данных проблема.

Другой вариант - попробовать пакет gdalUtils, который имеет функцию: gdal_rasterize. Возможно, gdal менее востребован во входных данных.