Verwenden Sie Open Source-Software, um große Shapefiles zusammenzuführen?

8

Einige Hintergrundinformationen: Ich habe 2 Polygonformdateien mit jeweils ca. 500.000 Datensätzen. Die beiden Dateien sind hinsichtlich der Feldstruktur identisch.

Mit ArcGIS 10.0 kann ich diese beiden Dateien nicht mit Geoverarbeitung / Zusammenführen zusammenführen. ArcMap stürzt immer irgendwo in der Mitte des Prozesses ab.

Gibt es Open Source-Software, die diesen Job erledigen kann? QGIS hat die Funktion: Vektor / Formdatei in eine zusammenführen, aber in der aktuellen Version 1.7 wurde ein Fehler mit dieser Funktion gemeldet. Ich weiß, dass GDAL viele Dinge kann und frage mich, ob GDAL oder eine andere OpenSource-Software dies richtig kann.

anh.hv.
quelle
4
Gibt es eine Chance, dass Sie die 2-GB-Grenze für Shapefiles überschreiten?

Antworten:

18

Aus dem GDAL-Handbuch:

Das Zusammenführen der beiden Shapefiles 'file1.shp' und 'file2.shp' zu einer neuen Datei 'file_merged.shp' wird folgendermaßen durchgeführt:

% ogr2ogr file_merged.shp file1.shp
% ogr2ogr -update -append file_merged.shp file2.shp -nln file_merged

Der zweite Befehl öffnet file_merged.shp im Aktualisierungsmodus und versucht, vorhandene Ebenen zu finden und die zu kopierenden Features anzuhängen.

Die Option -nln legt den Namen der Ebene fest, in die kopiert werden soll.

http://www.gdal.org/ogr/drv_shapefile.html

Jay Laura
quelle
2
--skipfailures stellt sicher, dass Sie fortfahren, wenn Sie auch auf eine schlechte Aufzeichnung stoßen. Ich würde es hinzufügen, wenn der Prozess zu lange dauert.
Ragi Yaser Burhum
Danke jzl5325, das ist, wonach ich gesucht habe (neben der Alternative, dies in ArcMap zu tun). Ich denke, es gibt eine gute Nachfrage nach einem aufgabenorientierten Handbuch / Benutzerhandbuch für GDAL anstelle von Syntax. So etwas wie das in Ihrer Antwort, das mit einer Aufgabe beginnt: dh 2 shp-Dateien zusammenführen, von mapinfo tab in esri shp konvertieren. Eine lange Liste von "dies mit GDAL zu tun" wird sehr nützlich sein.
anh.hv
@ anh.hv Einverstanden. Etwas, das ich gerne machen würde, wenn ich etwas mehr Zeit hätte. Ich vermute, dass so etwas erst passieren wird, wenn A) es Teil eines College-Kurses ist oder B) es von einem Sponsor der GDAL finanziert wird.
Jay Laura
Wenn Sie viele Dateien zusammenführen möchten, können Sie ein Skript wie das folgende verwenden: <! - language: lang-bsh -> #! / Bin / bash dest_dir = "output" dest_layer = "shape_file" mkdir -p "$ {dest_dir } "i = 0 für src_file in source / *. shp; Echo "$ {src_file}", wenn [$ i -eq 0]; dann ogr2ogr "$ {dest_dir} / $ {dest_layer} .shp" "$ {src_file}" sonst ogr2ogr -update -append "$ {dest_dir} / $ {dest_layer} .shp" "$ {src_file}" -nln "$ {dest_layer} "fi i = $ ((i + 1)) erledigt
AndrewHarvey
Wenn Sie viele Dateien zusammenführen möchten, können
AndrewHarvey
3

Versuchen Sie, die Shapefiles in eine Datei-Geodatabase zu konvertieren, und führen Sie sie dann in ArcGIS zusammen.

Möglicherweise können Sie sie nach dem Zusammenführen sogar wieder in Form konvertieren (falls Sie versuchen, die Kompatibilität mit anderer Software aufrechtzuerhalten, die auf Shapefiles basiert).


quelle
Danke Kevin und @vadivelan. Das Einfügen von shp in die Geodatabase von Dateien funktioniert wirklich. Es reduziert auch die Größe der zusammengeführten Datei um das 4-fache im Vergleich zu den 2 ursprünglichen Formdateien.
anh.hv
3

Sie könnten Geomerge versuchen . Ich bin nicht sicher, wie viele Datensätze es verarbeiten kann, aber solange die Tabellenstruktur für alle Dateien gleich ist, hatte ich keine Probleme damit.

Der auf derselben Website verfügbare MapBrowser ist auch ein hervorragendes kleines Tool zum schnellen Anzeigen von Shapefiles, ohne ein GIS-Paket öffnen zu müssen.

Ian
quelle
1

Wie Kevin sagte, ist das Konvertieren der Formdateien in fGDB die beste Option. (Es wird sehr schnell im Vergleich zu shp-Dateien sein)

Da Shape-Dateien eine begrenzte Speicherkapazität haben, denke ich, dass Ihre beiden Shapes-Dateien (nach dem Zusammenführen) diese Grenze überschreiten. Pls. prüfe das.

Vadivelan
quelle