Функция writeRaster в R автоматически устанавливает (нежелательное) максимальное значение, могу ли я установить максимальное значение на ноль? - PullRequest
0 голосов
/ 06 октября 2018

У меня проблема с функцией «writeRaster» в пакете растров в R. Я импортирую растр (TIF), который я создал в ArcGIS (расстояние до растрового объекта).

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

Однако, когда я записываю этот растр в файл с помощью функции writeRaster, результирующий растр выглядит как «швейцарский сыр» и имеет пропущенные значения для любого расстояния более 35 км.После долгих чтений я не могу найти какую-либо документацию, чтобы предположить, что есть способ изменить максимальное значение, установленное writeRaster --- или что он должен даже устанавливать максимальное значение.Я включил свой код и основные графики ниже.Большое спасибо всем, кто пытается мне помочь с этим!

#Read in distance to fresh water raster
distFW <- raster("D:/Academia/Arc Data/Grackle/NicaCR_90mlayers/dist_FW.tif")
[plot(distFW)][1]

#Resample this layer to the desired resolution and template
NiCR_DistFW<-as.integer(resample(distFW,NiCRrast.tmpl,method="ngb"))
#essentially the same as the first plot
[plot(NiCR_DistFW)][2]

#Mask the resampled raster to the desired shape
NiCR.DistFW.mask.utm <- mask(NiCR_DistFW,NiCR_Mask) #with CA countries cut out.
[plot(NiCR.DistFW.mask.utm)][3]

#write raster to file (this is where things get weird)
writeRaster(x=NiCR.DistFW.mask.utm, filename='DistFWmask2.tif', format='GTiff', datatype='INT2S') #a way to ensure INT2S

#read the newly written raster file in to R so we can review it
dFW <-raster("DistFWMask2.tif")
[plot(dFW)_writeRaster_result][4]

[1]: https://i.stack.imgur.com/v9RkK.jpg
[2]: https://i.stack.imgur.com/v2DG3.jpg 
[3]: https://i.stack.imgur.com/cCwJe.jpg
[4]: https://i.stack.imgur.com/MjWj7.jpg

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

Заранее благодарен за любой совет.

1 Ответ

0 голосов
/ 06 октября 2018

Ну, друзья, после того, как я потратил час на детализацию моего вопроса, мне удалось самому найти ответ.Это было связано с настройкой типа данных.

INT2S имеет максимальное значение 32 767

, переключив его на INT4S, я фиксирую полный диапазон значений в своем растре.

Проблема решена!

...