2013-11-24 8 views
15

Ich versuche derzeit, Informationen aus verschiedenen "ASC" -Dateien in R zu extrahieren, um eine Analyse der Daten durchzuführen.Lesen einer ASC-Datei in R

Das Problem ist, dass ich unsicher bin, wie genau in den Dateien zu lesen. Ich versuchte eine Standard-read.table-Funktionen, aber alle Zahlen waren genau die gleichen (-9999.00). Um die Möglichkeit einer Datenkorruption auszuschließen, lese ich in einer anderen ASC-Datei und erhalte die gleichen Ergebnisse. Das einzige, was ich sicher weiß, ist, dass die Dateigröße zwischen ihnen genau gleich ist.

Gibt es trotzdem, dass ich diese Dateien lesen kann? Irgendwelche R-Pakete, die ich mir anschauen kann?

ich diese gebunden:

x = read.table("Dropbox/MVZ/aet2009sep.asc") 
    y = read.table("Dropbox/MVZ/aet2009oct.asc") 

und meine Ausgänge waren

> 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 
+3

Sie nicht mit uns erwarten können, wissen, welche Art von Fehler aufgetreten ist, wenn Sie keine Paketnamen oder Code bereitstellen –

+3

Sie sollten enthalten. Der Inhalt der Raw-Datei Ich habe keine Ahnung, wie eine .asc-Datei aussieht oder aussieht. " – Thomas

Antwort

15

Update: Es ist möglich, lesen .asc Dateien (aka ESRI ASCII Raster-Dateien) mit der raster Funktion direkt aus dem ‚Raster Paket. Die Hilfe sagt:

Wenn x ein Dateiname ist, werden die folgenden zusätzlichen Variablen erfasst:

nativer: logisch. Der Standardwert ist FALSE, außer wenn das Paket rgdal fehlt. Wenn TRUE, Lesen und Schreiben von ..., und Arc ASCII-Dateien mit nativen (Raster-Paket) Treiber getan, anstatt über rgdal ....

library(raster) 
r = raster("C:\\...\\Dropbox/MVZ/aet2009sep.asc") 
plot(r) 

Edit 2 [veraltet] :

Eine Alternative ist die raster()-Funktion, die das Paket rgdal ordnungsgemäß installiert hat.

library(rgdal) 
r = raster("C:\\...\\Dropbox/MVZ/aet2009sep.asc") 
plot(r) 

Edit 1 [veraltet]:

Das Paket adehabitat ist veraltet. Derzeit gibt es eine Warnung beim Laden:

Es ist gefährlich, es zu verwenden, da Bugs nicht mehr korrigiert werden. Es wird jetzt empfohlen, die Pakete adehabitatMA, adehabitatLT, adehabitatHR und adehabitatHS zu verwenden.
...

Original-Antwort [veraltet]:

Verwenden Sie die import.asc Funktion von R-Paket adehabitat (siehe Seite 92):

library(adehabitat) 
asc = import.asc("C:\\...\\Dropbox/MVZ/aet2009sep.asc") 

#plot asc object. 
library(raster) 
r = raster(asc) 
plot(r) 
+1

Sie können dies direkt mit raster() lesen, wenn rgdal ebenfalls verfügbar ist. – mdsumner

+1

die' raster() '-Funktion ist nicht mehr verfügbar – Stophface

+0

@Stophface, aktualisierte Antwort Vielen Dank für das Feedback. –

1

Paket SDMTools die Funktion read.asc hat, die funktioniert unter R 3.2.4. Aber zumindest in meinem Fall funktioniert die Verwendung von mit allen Standardwerten aus der Box.