ogr2ogrがGeoJsonファイルの変換に失敗する> 200MB


15

前の質問(SimpleGeo Places GeoJSONファイルをシェープファイルに変換する)のフォローアップとして、私はogr2ogrの「メモリ」制限と思われるものに苦労していますが、確かではありません。SimpleGeoダンプファイルを適切なgeojsonファイル(QGISで直接読み取れることを確認済み)に正常に変換しました。

次に、このデータをSHPまたはその他の形式(SQLite、PostGIS)に変換します。私は次のコマンドを小さなファイルで実行しています(「places_fr.gejson」のファイルサイズは約118MBです)。

ogr2ogr -f "ESRI Shapefile" places_fr.shp places_fr.geojson

340MBのgeojsonファイルでこの同じコマンドを実行しようとすると、ogr2ogrは次の2つの方法のいずれかでクラッシュします。

  1. "lh_table_new:calloc failed"(最初の試行
  2. Windowsは「ogr2ogr.exeの動作を停止しました。プログラムを閉じてください。」をスローします。(その後の試行

8GBのRAM(4GBが利用可能、12GBの仮想メモリが利用可能)がインストールされたWindows 7環境のデュアルコアで、FWToolsを介してogrコマンドを実行しています。これらのデータセットを変換するogr2ogrにメモリ制限はありますか?また、同じ結果でSQLiteに変換しようとしたので、SHP変換の問題ではないと思います。ありがとう。


これを機能させたことがありますか?また、simpleGeoプレースのgeojsonファイルをshpに変換しようとしています-オリジナルの投稿でスクリプトを見ましたが、infileとoutfileが何であるかはわかりません-読み書きできるファイル形式に関しては?
kflaw

私は今、私がshpに変換することに固執していることを得たことを
決して忘れない-kflaw

回答:


8

注意:システムで報告しているメモリの量を考えると、64ビットビルドのWindowsを使用していると思われます。そうでない場合、この解決策は適用されません。

Windows上のすべての32ビットアプリケーションのメモリ制限は(Windowsバージョンに関係なく、64ビットWindowsにも当てはまります)2GBです。ogr2ogrの実行を確認し、タスクマネージャーでメモリ使用量を確認するために、この制限に達している可能性があります。

問題が実際にメモリの問題が原因である場合、次の2つのことができます。

  1. 自分でGDALの64ビットバージョンをビルドします(バイナリを簡単に見つけることができませんでした)

  2. :このツールでogr2ogr.exeパッチを適用http://ntcore.com/4gb_patch.php。パッチ適用後のバイナリは、(当然のバックアップコピーを作成する)必要があり grandtotal 4ギガバイトに対処するために利用可能です


3
リソースモニターを見て、メモリが2GBに達するとすぐに、ogr2ogrプロセスがクラッシュしました。これはおそらく、32ビットアプリとしてコンパイルされたため、ogr2ogr / fwtools内の2GBのメモリ制限でした。あなたが提案したツールでogr2ogr.exeにパッチを当てたところ、魅力のように機能しました。もちろん、(7GB USプレースファイルのように)使用できない制限はまだありますが、少なくともogr2ogrが失敗する理由については説明があります。ありがとう!
-RyanKDalton

7GBのUSファイルを処理できましたか?
kflaw

3

問題がある場合、OGR自体ではなく、OGR geojsonドライバーに固有である可能性が最も高いでしょう。新しいバイナリ(OSGeo4Wのバイナリなど)、またはそれより優れた64ビットバージョンを使用してみてください。-あなたはそれをコンパイルされていない限り、あなたはWindows用の64ビットのバイナリを入手できる場所申し訳ありませんが、私は知らないのUbuntuのLinuxMacのKyngChaosバイナリが64ビットかかわらなります。


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