2013-04-25 2 views
1

У меня возникли проблемы с импортом растра ASCII, который имеет значения, которые идут от Min. :-69826220 до Max. :167780500. Проблема, с которой я сталкиваюсь, заключается в том, что когда я использую растровую функцию для импорта файла ASCII, каждое значение меньше -9999 сообщается как NA, а минимальное значение - -9458.R - значение растровой функции NAs ниже -9999 в файле ASCII

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

здесь есть ссылка на файл ASCII https://dl.dropboxusercontent.com/u/24234831/ps0011yme.asc

Вот информация сессии, я открыл новую сессию только в том случае.

sessionInfo() R версия 3.0.0 (2013-04-03) Платформа: x86_64-W64-mingw32/64 (64-битный)

локали: [1] LC_COLLATE = English_United States.1252 [2] LC_CTYPE = English_United States.1252
[3] LC_MONETARY = English_United States.1252 [4] LC_NUMERIC = С
[5] LC_TIME = English_United States.1252

прикрепленных базовые пакеты: [1] Статистика графика grDevices Utils наборы данные методы базовых

других периферийных пакетов: [1] raster_2.1-16 sp_1.0-8

загружается через пространство имен (а не прилагается): [1] grid_3.0.0 lattice_0.20-15

любой помощь

+0

И если вы запустите 'MinValue (х) и' manValue (х) ', где' x' ваш растр, что вы получаете ? –

+0

Я получаю за тот же результат [1] NA Предупреждающее сообщение: В .local (x, ...): значение min/max неизвестно, используйте setMinMax –

+0

Почему бы вам не дать нам результаты ' summary (scan ("путь/to/myraster.asc", skip = 6)) ' –

ответ

3

Вы можете попробовать использовать setMinMax() на растровый файл, чтобы попытаться выработать минимальное и максимальное значение и хранить их в возвращенном Raster * объект. Попробуйте так:

r <- setMinMax(raster("path/to/myraster.asc")) 

Я не уверен, что происходит, потому что, если я downlaod вам данные и сделать:

r1 <- raster("~/Downloads/test.asc") 
summary(values(r1)) 
    Min. 1st Qu. Median  Mean 3rd Qu.  Max.  NA's 
-69830000 -4789000 737300 16950000 13880000 167800000  71468 

Пожалуйста, добавьте выход sessionInfo()в свой вопрос, то есть не как комментарий.

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

+0

Я просто пытался как и это то, что я получаю> setMinMax (ps0011yme) класс: RasterLayer размеры: 337, 720, 242640 (nrow, Ncol, Ncell) разрешение: 0,5, 0,5 (х, у) , но он не работает. У меня такая же проблема. протяженность: -180, 180, -78,5, 90 (xmin, xmax, ymin, ymax) Координата. ссылка : NA источник данных: C: путь \ ps0011yme.asc имена: уровень значения: -9458.911, 167780500 (мин, макс.) –

+0

Мне все еще интересно, какие конкретные ситуации требуется rgdal, потому что до сих пор я никогда не сталкивался с каким-либо вопрос с данными растрового/шейп-файла. Это потому, что значения в этом ASCII настолько велики? –

+0

@ user4050 возможно - я точно не могу сказать. Я считаю, что всегда лучше устанавливать rgdal, если вы работаете с пространственными данными. –

3

Я не могу воспроизвести вашу ошибку. Вот ручной сборки .asc файл:

NCOLS 3 
NROWS 3 
XLLCORNER 0 
YLLCORNER 0 
CELLSIZE 0.5 
NODATA_value -9999 
1e-6 0.3 -34567891234 
0.2 -1e6 25 
3 68492758321934 20 

Это правильно загружена в raster объекта. Вы увидите здесь NODATA_value, в котором объясняется, откуда взялся ваш -9999. Моя ставка заключается в том, что в вашем исходном файле .asc есть что-то поврежденное.Можете ли вы разместить заголовок и небольшой образец данных?

+0

+1 для запроса данных заголовка –

0

Внутренний драйвер файла ascii в «растровом» предполагает, что допустимых значений ниже значения флага NA нет, если значение флага равно < 0 (и я бы не рекомендовал использовать флаг NA в середине значений) , Очевидно, что такой подход может вызвать проблемы, подобные в этом случае; и я изменю это. Вы можете увидеть разницу между внутренним драйвером и библиотеки GDAL водителя, если вы делаете

library(raster) 
library(rgdal) 
a1 <- raster(filename, native=TRUE) 
a2 <- raster(filename, native=FALSE)