Wie kann ich eine Excel-Datei mit XY-Spalten in ein Punkt-Shapefile konvertieren?
Zusätzlich zur korrekten Erstellung eines Shapefiles gibt es einige optionale Anforderungen:
- Spaltentypen (gemäß den Formatangaben in Excel) sollten beibehalten werden (insbesondere Datumstypen)
- Spaltennamen sollten aus der Kopfzeile entnommen werden
- Ich würde gerne diese von der Kommandozeile tun
- Wenn ich heterogene Raumbezüge für die Punkte in eine dritte Spalte aufnehmen kann, würde ich mich sehr freuen :)
Antworten:
Ich würde empfehlen, OGR / GDAL zu verwenden , das Teil der GDAL- Bibliothek ist. OGR unterstützt ein virtuelles Format, das die Spezifikation über eine XML-Datei ermöglicht. Wenn Sie Ihr Excel-Arbeitsblatt in eine CSV-Datei konvertieren, können Sie eine VRT generieren, um auf die Daten zuzugreifen.
Vorausgesetzt, Sie haben so etwas
example.csv
:Sie können eine VRT
example.vrt
wie folgt erstellen :Ab GDAL 1.7 können Sie zusätzlich die Datentypen von Attributfeldern mithilfe des
<Field>
Elements in<OGRVRTLayer>
wie folgt angeben :Beachten Sie, dass Shapefiles Attribute im DBASE IV- Format speichern, das in Bezug auf Datentypen weniger flexibel ist als Excel. Sobald Sie Ihre VRT-Datei angegeben haben, können Sie die Daten mit der normalen OGR-Toolchain in ein Shapefile konvertieren:
Leider ist # 4 nicht möglich - die Shapefile-Spezifikation ermöglicht eine einzelne Projektion (hier
example.prj
nach dem letzten Schritt sichtbar ).quelle
<Field>
Tag zu schreiben . Ich denke, ich werde das selbst herausfinden :)Sie können das in QGIS enthaltene Delimited Text-Plugin (http://qgis.org ) verwenden, um die Textdatei zu laden und sie dann als Shapefile zu speichern.
quelle
Obwohl dies nicht über die Befehlszeile erfolgt, können Sie dies in ArcGIS App tun. Fügen Sie die XLS-Datei seit 9.3.1 direkt in ArcMap hinzu. Erstellen Sie eine XY-Ereignisebene aus dem XLS (dh wählen Sie die XY-Spalten aus und legen Sie Ihren Raumbezug fest). Exportieren Sie dann diese XY-Ereignisebene in eine neue .shp-Datei. Dies kann problemlos mit einem einfachen Python / VBA-Skript oder einem Modell in Modelbuilder automatisiert werden . Gerne helfen wir Ihnen bei diesem grundlegenden Workflow, wenn Sie weitere Informationen benötigen.
quelle
Ich habe nach einer Hilfeseite zum Anzeigen von XY-Daten in der Webhilfe gesucht, konnte sie jedoch nicht finden, aber der Vorgang ist einfach.
Dazu benötigen Sie nur die ArcView (Basic) -Lizenz von ArcGIS (for) Desktop.
quelle
Es gibt immer die abenteuerliche Möglichkeit. Sie können die Formdatei auch selbst schreiben. ESRI veröffentlicht die Spezifikation für Shapefiles, die Sie hier lesen können:
http://www.esri.com/library/whitepapers/pdfs/shapefile.pdf
Sie müssten wahrscheinlich auch eine DBF-Datei schreiben. Über das Format können Sie hier lesen:
http://www.clicketyclick.dk/databases/xbase/format/dbf.html#DBF_STRUCT
Dies ist zweifellos übertrieben, bietet Ihnen jedoch den Vorteil, die Kontrolle über den gesamten Prozess zu haben.
quelle
Ich persönlich bevorzuge die Verwendung von FME von Safe Software (http://www.safe.com), mit der ich nicht nur Punkte aus XY-Werten plotten kann, sondern auch die Möglichkeit habe, die Koordinaten vor dem Plotten von einer Projektion in eine andere zu transformieren Typ des Begrenzers, Anfangszeile (falls die Textdatei Header-Informationen enthält), Attribute anhängen, falls die Textdatei X, Y, Attribut-Informationen für die Punktdaten enthält. Wenn Sie diese Daten in Google Earth visualisieren möchten, können Sie sie in das KML-Format schreiben und gleichzeitig den KML-Punktstil festlegen. ~ SRG
quelle
Wenn Sie die XY-Daten auf andere Weise verarbeiten möchten, können Sie die Daten in Postgres laden, Geomfromtext mit Verkettung verwenden, um einen Geometriedatentyp zu erstellen, und dann mit pgsql2shp exportieren, um sie zu formen. Dieser Ansatz ermöglicht es Ihnen auch, heterogene Daten des räumlichen Bezugssystems in einer anderen Spalte zu speichern, die Sie dann verwenden können, um alle Ihre Punkte in ein gemeinsames Bezugssystem innerhalb der Datenbank zu konvertieren, bevor Sie sie in eine Form exportieren. Mir ist klar, dass dies mehr Schritte erfordert als ogr / gdal, aber es gibt Ihnen viel mehr Flexibilität.
quelle
Was ist mit dem Laden Ihrer CSV-Dateien in Spatiallite und dem anschließenden Export in ein Shapefile mithilfe von OGR oder QGIS?
http://www.gaia-gis.it/spatialite-2.2/index.html
Sie können sogar direkt aus Spatialite in ein Shapefile exportieren.
http://www.gaia-gis.it/spatialite-2.2/spatialite-2.2_tutorial.html#t3.1
quelle
Für eine grundlegendere Transformation können Sie den 2Dpointreplacer-Transformator in FME 2013 verwenden. Sie müssen angeben, in welchen Spalten sich die X- und Y-Werte befinden, und dann wandelt FME diese Werte in beispielsweise eine Formdatei mit Punkten um.
Spaltennamen und -typen können nach Bedarf festgelegt werden
quelle