Ich muss ein Shapefile aus ArcMap in R öffnen, um es für weitere geostatistische Analysen zu verwenden. Ich habe es in eine ASCII-Textdatei konvertiert, aber in R wird es als data.frame erkannt. Die Koordinatenfunktion funktioniert nicht, sobald x und y als nicht numerisch erkannt werden.
Könnten Sie helfen, damit umzugehen?
Antworten:
Verwenden Sie das Shapefile direkt. Sie können dies einfach mit den Paketen
rgdal
oder tunsf
und die Form in einem Objekt lesen. Für beide Pakete müssen Sie Folgendes angeben:dsn
- die Datenquelle, die im Fall eines Shapefiles das Verzeichnis ist , undlayer
- den Namen des Shapefiles abzüglich der Erweiterung:(In rgdal, OSX oder Linux können Sie die Abkürzung '~' für das Ausgangsverzeichnis nicht als Datenquellenverzeichnis (
dsn
) verwenden. Andernfalls wird die Meldung "Datenquelle kann nicht geöffnet werden" nicht angezeigt. Dassf
Paket funktioniert nicht haben diese Einschränkung neben einigen anderen Vorteilen.)Dadurch erhalten Sie ein Objekt, das ein Spatial * -Datenrahmen (Punkte, Linien oder Polygone) ist. Die Felder der Attributtabelle sind dann für Sie wie für einen normalen Datenrahmen verfügbar, dh
shape$ID
für die ID-Spalte.Wenn Sie die von Ihnen importierte ASCII-Datei verwenden möchten, konvertieren Sie einfach die Textfelder (Zeichen) x und y in Zahlen, z.
Edit 2015-01-18 : beachte, dass rgdal ein bisschen besser ist als maptools (was ich anfangs hier vorgeschlagen habe), hauptsächlich weil es Projektionsinformationen automatisch liest und schreibt.
Anmerkungen:
as.numeric(as.character())
Funktionen - Wenn Ihr ASCII-Text als Faktor gelesen wurde (wahrscheinlich), wird sichergestellt, dass Sie die numerischen Werte anstelle der Faktorstufen erhalten.rgdal
Siesf
haben verwirrende Möglichkeiten, auf verschiedene Datei- und Datenbanktypen zuzugreifen (z. B. bei einer GPX-Datei ist dsn der Dateiname und überlagert die einzelnen Komponenten wie Wegpunkte, Trackpunkte usw.). Sie müssen die Online-Beispiele sorgfältig lesen.quelle
as.character
, um das Problem zu umgehen.dsn="directory where the shapefile, projection file, etc are located"
layer="name of the file without .shp extention"
dsn
Argument keine abschließenden Schrägstriche enthaltendsn = "C:/Users/Downloads/"
sollte --- zB sollte seindsn = "C:/Users/Downloads"
. Hoffe, dies löst jemandes Frustration ...Ich stimme dem Simbamangu zu und bin gespannt, was die Beibehaltung des Shapefiles angeht, aber ich möchte Ihre Aufmerksamkeit speziell auf die rgdal-Bibliothek lenken. Folgen Sie dem von gissolved für das NCEAS vorgeschlagenen Link und folgen Sie den Anweisungen für rgdal. Die Installation auf einigen Computern kann schwierig sein, aber die Ergebnisse bei Projektionen können erheblich verbessert werden.
Die MapTools-Bibliothek ist exzellent und ermöglicht es Ihnen, die Projektion für das eingelesene Shapefile zu definieren. Dazu müssen Sie jedoch wissen, wie Sie diese Projektion im proj4-Format angeben. Ein Beispiel könnte ungefähr so aussehen:
Wenn Sie diesen Weg gehen möchten, empfehle ich http://spatialreference.org als Ausgangspunkt, um herauszufinden, wie Ihre Projektion im proj4-Format aussieht. Wenn Ihnen das mühsam vorkommt, erleichtert Ihnen rgdal das Lesen der .prj-Datei des ESRI-Shapefiles (die Datei, die die ESRI-Projektionsdefinition für das Shapefile enthält). Um rgdal für dieselbe Datei zu verwenden, schreiben Sie einfach:
Wenn Sie nur mit einem einzigen Shapefile arbeiten, können Sie sich wahrscheinlich daran vorbeischleichen. Sobald Sie jedoch mehrere Datenquellen betrachten oder Google Maps überlagern, müssen Sie Ihre Projektionen stets in gutem Zustand halten.
Für einige hilfreiche exemplarische Vorgehensweisen zu räumlichen Daten in R, einschließlich einiger Dinge zum Importieren und Arbeiten mit Punktmustern, habe ich einige alte Kursmaterialien online unter https://csde.washington.edu/workshop/point-patterns-and-raster -surfaces / (weitere Workshops finden Sie hier ), anhand derer Sie sehen können, wie diese Methoden in der Praxis verglichen werden.
quelle
Ich denke, Sie sollten das Shapefile nicht in ein ASCII-Format konvertieren, sondern das Shapefile direkt mit einer der räumlichen Erweiterungen verwenden. Hier finden Sie drei Möglichkeiten, ein Shapefile zu lesen (und zu schreiben): http://www.nceas.ucsb.edu/scicomp/usecases/ReadWriteESRIShapeFiles . Das R-Spatial-Projekt wird Sie wahrscheinlich auch interessieren http://cran.r-project.org/web/packages/sp/index.html .
quelle
Sie können die
sf
Bibliothek verwenden, um Shapefiles direkt in zu öffnenR
. Es ist schneller als diergdal
Bibliothek. Schauen Sie hier nach: Einfache Funktionen für R-Benchmarks . Weitere Informationen zumsf
Paket finden Sie auf der Projekthomepage r-spatial .quelle
Eine einfache Lösung im Jahr 2017 ist die
shapefile()
Funktion in derraster
Bibliothek.UPDATE: Dies ist auch 2019 eine gute Option.
quelle
Eine weitere Alternative ist die Verwendung der FastShp- Bibliothek, die Folgendes bietet:
Hier ist meine Frage zu SE zur Verwendung mit ggplot2:
Wie kann ich Shapefile plotten, das über FastShp in ggplot2 geladen wurde?
quelle