Как обрезать изображение с помощью полигонального шейп-файла в R? - PullRequest
0 голосов
/ 20 ноября 2018
library(raster)
library(rgdal)

Изображение

RGBimage <- stack("E:/Amit Haldar/Work/1.0 Projects/RGB/D035_Georef.tif")
stackImage <- stack(RGBimage[[1]], RGBimage[[2]], RGBimage[[3]])
plotRGB(stackImage)

Растровое (RGB) изображение

Шейп-файл

Fiber <- readOGR("E:/Amit Haldar/Work/1.0 Projects/Shp/Landuse2018.shp")
data <- Fiber
data$vb<- paste(data$SECTOR, data$ESTATE, data$COMPNO, sep="")
shp <- subset(data, vb=="D035")
crs(shp) <- "+proj=utm +zone=47 +datum=WGS84 +units=m +no_defs +ellps=WGS84 +towgs84=0,0,0"
shp_simp <- gSimplify(shp, tol = 3, topologyPreserve = TRUE)
plot(shp_simp)

граница формы

print(shp_simp)
class       : SpatialPolygons 
features    : 1 
extent      : 759548.4, 760468.4, -13233.4, -12185.39  (xmin, xmax, ymin, ymax)
coord. ref. : +proj=utm +zone=47 +datum=WGS84 +units=m +no_defs +ellps=WGS84 +towgs84=0,0,0 

print(stackImage)
class       : RasterStack 
dimensions  : 21660, 20544, 444983040, 3  (nrow, ncol, ncell, nlayers)
resolution  : 0.0562666, 0.0562666  (x, y)
extent      : 759433.3, 760589.2, 9986667, 9987886  (xmin, xmax, ymin, ymax)
coord. ref. : +proj=utm +zone=47 +south +datum=WGS84 +units=m +no_defs +ellps=WGS84 +towgs84=0,0,0 
names       : TEW_D035_Georef.1, TEW_D035_Georef.2, TEW_D035_Georef.3 
min values  :                 0,                 0,                 0 
max values  :               255,               255,               255 

Я пытаюсь обрезать изображение с помощью файла формы.Размер файла формы не обязательно совпадает с размером изображения.Многоугольник покрывает часть изображения.Я пробовал несколько методов

proj4string(stackImage) <- proj4string(shp_simp)

Затем

cropImage <- crop(stackImage, extent(shp_simp), snap="out")

Error in .local(x, y, ...) : extents do not overlap

Я пытался преобразовать проекцию

compExtent <- spTransform(shp_simp, CRS(proj4string(stackImage)))

cropImage <- crop(stackImage, extent(compExtent), snap="out")

Все та же ошибка

Error in .local(x, y, ...) : extents do not overlap

Где я иду не так?Я заранее ценю вашу поддержку.

...