ogr2ogr gagal mengonversi file GeoJson> 200MB

15

Sebagai tindak lanjut dari pertanyaan saya sebelumnya ( Konversi file GeoJSON Places SimpleGeo Places ke shapefile ), saya sekarang bergumul dengan apa yang saya anggap sebagai batasan "memori" ogr2ogr, tetapi saya tidak yakin. Saya telah berhasil mengkonversi file dump SimpleGeo menjadi file geojson yang tepat (diverifikasi yang langsung dapat dibaca di QGIS).

Sekarang saya ingin mengonversi data ini ke SHP atau format lain (SQLite, PostGIS). Saya menjalankan perintah berikut ini dengan sukses pada file yang lebih kecil (di mana "places_fr.gejson" memiliki ukuran file ~ 118MB):

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

Ketika saya mencoba menjalankan perintah yang sama persis ini dengan file geojson yang 340MB, ogr2ogr lumpuh dalam salah satu dari dua cara:

  1. "lh_table_new: calloc gagal" ( upaya pertama )
  2. Windows melempar "ogr2ogr.exe telah berhenti berfungsi. Tutup program ini." ( upaya selanjutnya )

Saya menjalankan perintah ogr melalui FWTools di lingkungan dual core Windows 7 dengan 8GB RAM terpasang (tersedia 4GB, tersedia memori virtual 12GB). Apakah ada batas memori untuk ogr2ogr mengonversi kumpulan data ini? Saya juga telah mencoba mengonversikannya ke dalam SQLite dengan hasil yang sama, jadi saya rasa ini bukan masalah konversi SHP. Terima kasih.

RyanKDalton
sumber
Apakah Anda pernah berhasil ini? Saya juga sekarang mencoba untuk mengkonversi file geojson tempat simpleGeo ke shp - saya melihat skrip Anda di posting asli tapi saya tidak yakin apa infile dan outfile - dalam hal format file yang dapat dibaca dan ditulis?
kflaw
Nevermind saya dapat bekerja sekarang saya terjebak untuk mengkonversi ke shp
kflaw

Jawaban:

8

Peringatan : mengingat besarnya memori yang Anda laporkan pada sistem Anda, saya kira Anda menggunakan build Windows 64 bit. Jika tidak, solusi ini tidak berlaku.

Batas memori untuk semua aplikasi 32 bit pada Windows (terlepas dari versi Windows, jadi memang benar juga untuk Windows 64 bit) adalah 2GB. Anda mungkin mencapai batas itu, untuk mengonfirmasi menjalankan ogr2ogr dan memeriksa penggunaan memori dengan pengelola tugas.

Jika masalahnya memang karena masalah memori, Anda dapat melakukan dua hal:

  1. buat sendiri versi 64 bit GDAL (saya tidak bisa menemukan binari yang siap pakai)

  2. menambal ogr2ogr.exe dengan alat ini: http://ntcore.com/4gb_patch.php . Setelah menambal (membuat salinan cadangan tentu saja) biner harus tersedia untuk mengatasi 4GB grandtotal

unicoletti
sumber
3
Saya menonton monitor sumber daya, dan begitu memori mencapai 2GB, proses ogr2ogr macet. Itu pasti keterbatasan memori 2GB dalam ogr2ogr / fwtools, kemungkinan karena itu dikompilasi sebagai aplikasi 32-bit. Saya menambal ogr2ogr.exe dengan alat yang Anda sarankan dan itu berfungsi seperti pesona. Tentu saja, masih ada batas di mana itu tidak dapat digunakan (seperti dengan file tempat 7GB AS), tetapi setidaknya ada penjelasan mengapa ogr2ogr gagal. Terima kasih!
RyanKDalton
apakah Anda pernah dapat memproses file US 7GB?
kflaw
3

Jika ada masalah, kemungkinan besar akan spesifik untuk driver geojson OGR dan bukan OGR itu sendiri. Coba gunakan biner yang lebih baru (seperti yang dari OSGeo4W ) atau bahkan lebih baik, versi 64 bit. Maaf, kecuali Anda mengompilasinya, saya tidak tahu di mana Anda bisa mendapatkan biner 64bit untuk Windows - binari Linux Linux dan Mac KyngChaos akan menjadi 64 bit.

Ragi Yaser Burhum
sumber