ogr2ogr не может преобразовать файл GeoJson> 200 МБ

15

В продолжение моего предыдущего вопроса ( Преобразование файла SimpleGeo Places GeoJSON в шейп-файл ) я сейчас борюсь с тем, что, по моему мнению, может быть ограничением памяти ogr2ogr, но я не уверен. Я успешно преобразовал файлы дампа SimpleGeo в правильные файлы geojson (проверено, что они непосредственно читаются в QGIS).

Теперь я хочу преобразовать эти данные в SHP или другие форматы (SQLite, PostGIS). Я успешно запускаю следующую команду для файлов меньшего размера (где "place_fr.gejson" имеет размер файла ~ 118 МБ):

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

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

  1. «lh_table_new: calloc fail» ( первая попытка )
  2. Windows выдает «ogr2ogr.exe перестал работать. Пожалуйста, закройте программу». ( последующие попытки )

Я запускаю команду ogr через FWTools в двухъядерной среде Windows 7 с 8 ГБ установленной ОЗУ (доступно 4 ГБ, доступно 12 ГБ виртуальной памяти). Есть ли предел памяти для преобразования этих наборов данных в ogr2ogr? Я также пытался конвертировать в SQLite с теми же результатами, поэтому я не думаю, что это проблема конвертации SHP. Благодарю.

RyanKDalton
источник
Вы когда-нибудь заставляли это работать? Я также сейчас пытаюсь преобразовать файл геоджона simpleGeo place в shp - я видел ваш скрипт в исходном посте, но я не уверен, что такое infile и outfile - с точки зрения формата файла, который можно прочитать и записать?
KFlaw
несмотря ни на что, я получил эту работу сейчас, я застрял на конвертации в
shp

Ответы:

8

Предупреждение : учитывая объем памяти, который вы сообщаете в своей системе, я полагаю, что вы используете 64-битную сборку Windows. Если нет, то это решение не применяется.

Ограничение памяти для всех 32-разрядных приложений в Windows (независимо от версии Windows, поэтому это справедливо и для 64-разрядных Windows) составляет 2 ГБ. Возможно, вы достигли этого предела, чтобы подтвердить запуск ogr2ogr и проверить использование памяти с помощью диспетчера задач.

Если проблема действительно связана с проблемой памяти, вы можете сделать две вещи:

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

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

unicoletti
источник
3
Я наблюдал за монитором ресурсов, и как только объем памяти достиг 2 ГБ, процесс ogr2ogr завис. Это определенно было ограничение памяти в 2 ГБ в ogr2ogr / fwtools, вероятно потому, что оно было скомпилировано как 32-битное приложение. Я исправил файл ogr2ogr.exe с помощью предложенного вами инструмента, и он заработал как шарм. Конечно, есть предел, по которому его нельзя использовать (как, например, с файлами на 7 Гб в США), но, по крайней мере, есть объяснение, почему ogr2ogr дает сбой. Благодарность!
RyanKDalton
Вам когда-нибудь удавалось обработать файл размером 7 ГБ в США?
KFlaw
3

Если есть проблема, она, скорее всего, будет связана с драйвером OGR geojson, а не с самим OGR. Попробуйте использовать более новый двоичный файл (например, из OSGeo4W ) или, что еще лучше, 64-разрядную версию. Извините, если вы не компилируете его, я не знаю, где можно получить 64-разрядный двоичный файл для Windows - хотя двоичные файлы Ubuntu Linux и Mac KyngChaos будут 64-разрядными.

Раги Язер Бурхум
источник