ogr2ogr не вдається конвертувати файл GeoJson> 200MB


15

Як підсумок моєму попередньому питанню ( Перетворення файлу SimpleGeo Places GeoJSON у shapefile ), я зараз борюся з тим, що, на мою думку, може бути обмеженням "пам'яті" ogr2ogr, але я не можу бути впевненим. Я успішно перетворив звантажувальні файли SimpleGeo в належні файли geojson (перевірені, які можна прочитати безпосередньо в QGIS).

Тепер я хочу перетворити ці дані в SHP або інші формати (SQLite, PostGIS). Я виконую наступну команду з успіхом на менших файлах (де "places_fr.gejson" має розмір файлу ~ 118 Мб):

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

Коли я намагаюся запустити цю саму точну команду з файлом geojson розміром 340 Мб, ogr2ogr виходить з ладу одним із двох способів:

  1. "lh_table_new: calloc не вдалося" ( перша спроба )
  2. Windows кидає "ogr2ogr.exe перестав працювати. Будь ласка, закрийте програму." ( наступні спроби )

Я запускаю команду ogr через FWTools у двоядерному середовищі Windows 7 з 8 ГБ встановленої оперативної пам’яті (доступно 4 ГБ, доступна 12 ГБ віртуальної пам’яті). Чи є обмеження пам'яті на ogr2ogr для перетворення цих наборів даних? Я також спробував конвертувати в SQLite з тими ж результатами, тому я не думаю, що це проблема перетворення SHP. Спасибі.


Ви коли-небудь змушували це працювати? Я також зараз намагаюся конвертувати файл simpleGeo розміщувати файл geojson в shp - я бачив ваш скрипт у оригінальному дописі, але я не впевнений, що таке infile та outfile - з точки зору формату файлу, який можна прочитати та записати?
kflaw

Відповіді:


8

Попередження : враховуючи об’єм пам’яті, про який ви повідомляєте у своїй системі, я думаю, ви використовуєте 64-бітну збірку Windows. Якщо ні, це рішення не застосовується.

Обмеження пам’яті для всіх 32-бітних програм у Windows (незалежно від версії Windows, тому це стосується і 64-бітної Windows) - 2 Гб. Ви можете досягти цього обмеження для підтвердження запуску ogr2ogr та перевірки використання пам'яті за допомогою менеджера завдань.

Якщо проблема справді пов’язана з проблемою пам'яті, ви можете зробити дві речі:

  1. створити собі 64-бітну версію GDAL (я не міг легко знайти бінарні файли)

  2. патч ogr2ogr.exe за допомогою цього інструменту: http://ntcore.com/4gb_patch.php . Після виправлення (зробіть резервну копію курсу) двійковий файл повинен бути доступний для адреси грандіозних 4 Гб


3
Я спостерігав за монітором ресурсів, і як тільки пам'ять досягла 2 ГБ, процес ogr2ogr вийшов з ладу. Це, безумовно, обмеження пам'яті на 2 Гб в ogr2ogr / fwtools, ймовірно, тому, що воно було складено як 32-розрядний додаток. Я зафіксував ogr2ogr.exe інструментом, який ви запропонували, і він спрацював як шарм. Звичайно, досі існує обмеження, коли його неможливо використовувати (як, наприклад, файли розміщення 7 Гб в США), але принаймні є пояснення, чому ogr2ogr не працює. Спасибі!
RyanKDalton

Ви коли-небудь змогли обробити файл 7 Гб в США?
kflaw

3

Якщо є проблема, вона, швидше за все, буде специфічною для драйвера географа OGR, а не самого OGR. Спробуйте скористатися більш новою бінарною версією (на зразок тієї з OSGeo4W ) або ще краще, 64-бітною версією. Вибачте, якщо ви не збираєте його, я не знаю, де ви можете отримати 64- бітовий двійковий файл для Windows - бінарні файли Ubuntu Linux та Mac KyngChaos будуть 64-бітовими.


Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.