オープンソースソフトウェアを使用して大きなシェープファイルをマージしますか?


8

背景:それぞれ約500,000レコードの2つのポリゴンシェイプファイルがあります。2つのファイルのフィールド構造は同じです。

ArcGIS 10.0を使用している場合、ジオプロセシング/マージを使用してこれら2つのファイルをマージすることはできません。ArcMapは常に、プロセスの途中でクラッシュします。

この仕事をすることができるオープンソースソフトウェアはありますか?QGISには次の機能があります。ベクター/シェイプファイルを1つにマージしますが、現在のバージョン1.7ではこの機能にバグが報告されています。私はGDALが多くのことを実行できることを知っており、GDALまたは他のいくつかのオープンソースソフトウェアがこれを適切に実行できるかどうか疑問に思っています。


4
シェープファイルの2 GBの制限を超えている可能性はありますか?

回答:


18

GDALマニュアルから:

2つのシェープファイル「file1.shp」と「file2.shp」を新しいファイル「file_merged.shp」にマージするには、次のようにします。

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

2番目のコマンドは、更新モードでfile_merged.shpを開き、既存のレイヤーを見つけて、コピーされる機能を追加しようとしています。

-nlnオプションは、コピー先のレイヤーの名前を設定します。

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


2
--skipfailuresを使用すると、不正なレコードが発生した場合も続行できます。プロセスに時間がかかりすぎる場合は、追加します。
Ragi Yaser Burhum、2012年

jzl5325に感謝します。これは私が探していたものです(ArcMapでこれを行う代わりに)。構文よりもGDALのタスク指向のマニュアル/ユーザーガイドの需要が高いと思います。タスクで始まる回答のようなもの:つまり、2つのshpファイルをマージし、mapinfoタブからesri shpに変換します。「GDALでこれを行う」の長いリストは非常に役立ちます。
anh.hv

@ anh.hv同意する。もう少し時間があったらやりたいこと。A)それがいくつかの大学の授業の一部であるか、B)スポンサーからGDALへの資金提供を受けるまで、そのようなことは起こらないと思います。
Jay Laura

マージするファイルが多い場合は、次のようなスクリプトを使用できます。<!-language:lang-bsh->#!/ bin / bash dest_dir = "output" dest_layer = "shape_file" mkdir -p "$ {dest_dir } "source / *。shpのsrc_fileのi = 0; 「$ {src_file}」をエコーし​​ますif [$ i -eq 0]; 次にogr2ogr "$ {dest_dir} / $ {dest_layer} .shp" "$ {src_file}" else ogr2ogr -update -append "$ {dest_dir} / $ {dest_layer} .shp" "$ {src_file}" -nln "$ {dest_layer} "fi i = $((i + 1))完了
AndrewHarvey

マージするファイルが多い場合は、次のようなスクリプトを使用できます。gist.github.com
andrewharvey

3

シェープファイルをファイルジオデータベースに変換してから、ArcGISでマージしてみてください。

(シェープファイルに依存する他のソフトウェアとの互換性を維持しようとしている場合に備えて)マージ後にそれらをシェイプに戻すこともできます。


ケビンと@vadivelanに感謝します。shpをファイルジオデータベースに入れると、実際に機能します。また、2つの元のシェイプファイルと比較して、マージされたファイルのサイズが4分の1に縮小されます。
anh.hv

3

Geomergeを試すことができます。それが処理できるレコードの数はわかりませんが、テーブル構造がすべてのファイルで同じである限り、問題はありませんでした。

MapBrowser同じウェブサイト上で利用できるにもGISパッケージを開くことなく、シェープファイルを迅速に表示するための優れた小さなツールです。


1

Kevinが言ったように、シェイプファイルをfGDBに変換するのが最良のオプションです。(shpファイルに比べて非常に高速です)

シェイプファイルにはストレージ容量に制限があるため、2つのシェイプファイル(マージ後)はこの制限を超えていると思います。Pls。それを確認します。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.