ogr2ogr, GeoJson dosyasını> 200MB'ye dönüştüremiyor


15

Önceki sorumun ( SimpleGeo Places GeoJSON dosyasını şekil dosyasına dönüştürme) bir takip olarak , şimdi bir ogr2ogr "bellek" sınırlaması olabileceğini düşündüğüm ile mücadele ediyorum, ama emin olamıyorum. Başarıyla SimpleGeo döküm dosyalarını uygun geojson dosyalarına dönüştürdüm (QGIS'te doğrudan okunabilir).

Şimdi bu verileri SHP veya diğer formatlara (SQLite, PostGIS) dönüştürmek istiyorum. Aşağıdaki komutu daha küçük dosyalar üzerinde başarıyla çalıştırıyorum ("places_fr.gejson" ~ 118MB dosya boyutuna sahiptir):

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

340MB olan bir geojson dosyasıyla aynı komutu çalıştırmayı denediğimde, ogr2ogr iki yoldan biriyle çöker:

  1. "lh_table_new: calloc başarısız oldu" ( ilk deneme )
  2. Windows "atar" ogr2ogr.exe çalışmıyor. Lütfen programı kapatın. " ( sonraki denemeler )

8 GB yüklü RAM (4 GB kullanılabilir, 12 GB sanal bellek) ile Windows 7 ortam çift çekirdekli FWTools üzerinden ogr komutunu çalıştırıyorum. Bu veri kümelerini dönüştürmek için ogr2ogr için bir bellek sınırı var mı? Ben de aynı sonuçları ile SQLite dönüştürmeyi denedim, bu yüzden bir SHP dönüşüm sorunu olduğunu sanmıyorum. Teşekkürler.


Hiç işe yaradın mı? Ayrıca şimdi simplegeo yerlerde geojson dosyasını shp'ye dönüştürmeye çalışıyorum - betiğinizi orijinal yazıda gördüm, ancak dosya ve outfile'ın ne olduğundan emin değilim - okunabilen ve yazılabilen dosya formatı açısından?
kflaw

nevermind ben şimdi bu çalışma var shp dönüştürme
kuck var

Yanıtlar:


8

Önsöz : Sisteminizde bildirdiğiniz bellek miktarı göz önüne alındığında, 64 bit Windows sürümü kullandığınızı düşünüyorum. Aksi takdirde bu çözüm geçerli değildir.

Windows'taki tüm 32 bit uygulamalar için bellek sınırı (Windows sürümüne bakılmaksızın, 64 bit Windows için de geçerlidir) 2GB'dir. Ogr2ogr komutunu çalıştırmayı onaylamak ve görev yöneticisi ile bellek kullanımını kontrol etmek için bu sınıra çarpıyor olabilirsiniz.

Sorun gerçekten bir bellek sorunu nedeniyle ise iki şey yapabilirsiniz:

  1. Kendinize GDAL'ın 64 bit sürümünü oluşturun (kolayca boş ikili dosyaları bulamadım)

  2. yama ogr2ogr.exe bu araçla: http://ntcore.com/4gb_patch.php . Yama sonra ikili (tabii bir yedek kopyasını yapmak) olmalıdır bir GrandTotal 4GB ele kullanılabilir olması


3
Kaynak izleyicisini izledim ve bellek 2GB'a ulaşır ulaşmaz ogr2ogr işlemi çöktü. Muhtemelen 32 bit bir uygulama olarak derlendiğinden, ogr2ogr / fwtools içinde 2GB'lık bir bellek sınırlamasıydı. Ben önerilen araç ile ogr2ogr.exe yamalı ve bir cazibe gibi çalıştı. Tabii ki, hala kullanılamadığı bir sınır var (7GB ABD yer dosyalarında olduğu gibi), ancak en azından ogr2ogr'un neden başarısız olduğuna dair bir açıklama var. Teşekkürler!
RyanKDalton

7GB ABD dosyasını işleyebildiniz mi?
kflaw


Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.