Чтение ASC файла в R
В настоящее время я пытаюсь извлечь информацию из различных файлов "ASC" в R, чтобы выполнить анализ данных.
Проблема в том, что я не уверен, как именно читать файлы. Я попытался использовать стандартные функции read.table, но все числа были точно такими же (-9999.00). Чтобы исключить возможность повреждения данных, я прочитал в другом ASC файле и получил те же результаты. Единственное, что я знаю наверняка, это то, что размер файла между ними точно такой же.
В любом случае, я могу прочитать эти файлы? Любой пакет R, на который я могу смотреть?
Я связал это:
x = read.table("Dropbox/MVZ/aet2009sep.asc")
y = read.table("Dropbox/MVZ/aet2009oct.asc")
и мои выходы были
> head(x, n =20)
V1 V2
1 ncols 3486.0
2 nrows 4477.0
3 xllcorner -374495.8
4 yllcorner -616153.3
5 cellsize 270.0
6 NODATA_value -9999.0
7 -9999.00 -9999.0
8 -9999.00 -9999.0
9 -9999.00 -9999.0
10 -9999.00 -9999.0
11 -9999.00 -9999.0
12 -9999.00 -9999.0
13 -9999.00 -9999.0
14 -9999.00 -9999.0
15 -9999.00 -9999.0
16 -9999.00 -9999.0
17 -9999.00 -9999.0
18 -9999.00 -9999.0
19 -9999.00 -9999.0
20 -9999.00 -9999.0
head(y, n =20)
V1 V2
1 ncols 3486.0
2 nrows 4477.0
3 xllcorner -374495.8
4 yllcorner -616153.3
5 cellsize 270.0
6 NODATA_value -9999.0
7 -9999.00 -9999.0
8 -9999.00 -9999.0
9 -9999.00 -9999.0
10 -9999.00 -9999.0
11 -9999.00 -9999.0
12 -9999.00 -9999.0
13 -9999.00 -9999.0
14 -9999.00 -9999.0
15 -9999.00 -9999.0
16 -9999.00 -9999.0
17 -9999.00 -9999.0
18 -9999.00 -9999.0
19 -9999.00 -9999.0
20 -9999.00 -9999.0
Ответы
Ответ 1
Обновление: можно читать файлы .asc (также называемые растровыми файлами ESRI ASCII) с помощью raster
функции непосредственно из пакета 'растр'. Помощь говорит:
Если x является именем файла, распознаются следующие дополнительные переменные:
родной: логичный. По умолчанию FALSE, за исключением случаев, когда пакет rgdal отсутствует. Если TRUE, чтение и запись... и файлов Arc ASCII выполняется с помощью собственных драйверов (растрового пакета), а не с помощью rgdal....
library(raster)
r = raster("C:\\...\\Dropbox/MVZ/aet2009sep.asc")
plot(r)
Редактировать 2 [устарело]:
Альтернативой является функция raster()
с правильно установленным пакетом rgdal
.
library(rgdal)
r = raster("C:\\...\\Dropbox/MVZ/aet2009sep.asc")
plot(r)
Редактировать 1 [устарело]:
Пакет adehabitat
теперь устарел. В настоящее время выдает предупреждение при загрузке:
Использовать его опасно, так как ошибки больше не будут исправляться. В настоящее время рекомендуется использовать пакеты adehabitatMA, adehabitatLT, adehabitatHR и adehabitatHS.
...
Оригинальный ответ [устарел]:
Используйте функцию import.asc
из пакета R adehabitat (см. Стр. 92):
library(adehabitat)
asc = import.asc("C:\\...\\Dropbox/MVZ/aet2009sep.asc")
#plot asc object.
library(raster)
r = raster(asc)
plot(r)
Ответ 2
Пакет SDMTools
имеет функцию read.asc
, которая работает под R 3.2.4. Однако, по крайней мере, в моем случае, используя read.table
со всеми значениями по умолчанию, выполненными из коробки.
Ответ 3
Используйте пакет Laf, это безумно быстро.
Ответ 4
Я использовал команду x = read.csv
( "C: \...\Dropbox/MVZ//aet2009sep.asc", sep = ";" )
Я нашел это после использования импорта вручную с кнопкой импорта в окне Environment.
Ответ 5
Вы выяснили проблему? У меня та же проблема, и я попробовал все, что выложили здесь, но пока есть только -9999. Спасибо.