Ich füge einige Shapefiles zusammen und ich hatte einige Probleme damit in QGIS, also verwende ich ogr2ogr direkt. Ich mache das (in einem Batch):
ogr2ogr -overwrite %destination% %n1%
ogr2ogr -update -append %destination% %n2% -nln all_new
ogr2ogr -update -append %destination% %n3% -nln all_new
ogr2ogr -update -append %destination% %n4% -nln all_new
Es funktioniert einwandfrei, aber jetzt muss ich in dem resultierenden Shapefile ein Feld mit den Namen der ursprünglichen Shapefiles haben, die ich zusammengeführt habe. Klingt nicht sehr schwierig, aber ich schaffe es nicht.
Kann jemand helfen? Vielen Dank!
Ich würde die Option -sql verwenden und das Shapefile folgendermaßen importieren:
quelle
Es gibt verschiedene Möglichkeiten, Shapefiles zusammenzuführen.
und das Hinzufügen eines Attributs zu shapefile @dango directon ist gut. Sie können layer.CreateField (field_name) verwenden, um eine neue Spalte zu erstellen, aus der gefüllt wird
ich hoffe es hilft dir ...
quelle
vascobnunes, hier ist, wie ich dieses Problem gelöst habe, indem ich ein Python-Skript verwendet habe, um mehrere ogr2ogr-Anweisungen zu verketten. Sie können es problemlos in ein Stapelskript konvertieren. Im Grunde genommen verknüpfe ich ogr2ogr-Anweisungen (
cmd
) und führe sie dann ausos.system(cmd)
, indem Sie den Befehl ogr2ogr übergeben, den ich verknüpft habe.Die Geheimwaffe ist ( wie capooti demonstriert ), OGR_SQL anzuwenden , um den Dateinamen als konstanten Wert des Quelldatensatzes festzulegen , den Sie in Ihr Zusammenführungsergebnis einfügen .
In meinem Beispiel behandelt das
-sql
Flag dies, im Code sieht es so aus:Das ist jedoch verwirrend zu lesen, da ich in der resultierenden Verkettung einfache und doppelte Anführungszeichen verwenden muss. Um das zu tun, muss ich mich den einfachen Anführungszeichen entziehen , um sie "für echt" zu verwenden. Zur besseren Lesbarkeit ist es daher hilfreich, das Dokument ohne Variablen und Escape-Sequenzen anzuzeigen. Wenn Sie für eine bestimmte Iteration den Dateinamen "roads1" vorgeben, würde die resultierende Verkettung im Satz ogr2ogr folgendermaßen aussehen:
Dieses .py-Skript ist eine Zusammenführung von drei Tricks, die ich Matt Wilkie (einem leeren Klon eines Shapefiles), j03lar50n (Hinzufügen einer Spalte zu einem Shapefile mithilfe von ogrinfo und ogr_sql) und capooti (mithilfe von ogr_sql, um einen festen Spaltenwert festzulegen) gestohlen habe auf allen Datensätzen in einem Shapefile). Also hier ist das vollständige Skript:
quelle
Fügen Sie eine Spalte mit dem Quelldateinamen aus dem Shapefile-Ordner hinzu. Benötigt GDAL 1.10dev, mein Versuch, die Erweiterung .shp zu löschen, funktioniert nicht - aber insgesamt funktioniert es. - Ich stelle mir vor, es könnte zu den Linien hinzugefügt werden, die mit OGR verschmelzen.
quelle
Hallo, vielleicht hilft dieser Link . Es wird gezeigt, wie Sie einem Shapefile mithilfe der Python-GDAL-Bindungen ein Feld hinzufügen.
quelle
In QGIS können Sie das Merge Shapefile-Plugin hinzufügen. Es gibt eine Option zum "Hinzufügen einer Spalte mit einem Dateinamen"
quelle
Eine leicht abgewandelte Version von JaaKLs Antwort. Beachten Sie, dass -append foo.shp und -nln foo übereinstimmen müssen. Beachten Sie auch die Verwendung des SQLite-Dialekts (GDAL akzeptiert anscheinend nicht das Schlüsselwort 'Update', daher muss der SQLite-Dialekt instaiert verwendet werden) und das Fehlen des Schlüsselworts 'TABLE' nach dem Wort 'UPDATE' (nicht erforderlich) oder von SQLite akzeptiert).
quelle
Ein bisschen zu spät zur Diskussion, aber jetzt gibt es auch Ogerge
quelle