Я пытаюсь извлечь данные из файла OSM.PBF, используя модуль python GDAL/OGR.Анализ данных osm.pbf с использованием модуля python GDAL/OGR
В настоящее время мой код выглядит следующим образом:
import gdal, ogr
osm = ogr.Open('file.osm.pbf')
## Select multipolygon from the layer
layer = osm.GetLayer(3)
# Create list to store pubs
pubs = []
for feat in layer:
if feat.GetField('amenity') == 'pub':
pubs.append(feat)
Хотя это немного кода хорошо с small.pbf файлов (15Mb) работает. Однако, при разборе файлов размером более 50 МБ, я получаю следующее сообщение об ошибке:
ERROR 1: Too many features have accumulated in points layer. Use OGR_INTERLEAVED_READING=YES MODE
При включении этого режима с:
gdal.SetConfigOption('OGR_INTERLEAVED_READING', 'YES')
OGR не возвращает никаких функций вообще больше, даже при разборе небольшой файлы.
Кто-нибудь знает, что здесь происходит?
В соответствии с http://gdal.org/1.11/ogr/drv_osm.html чередование также требует специального шаблона чтения. Вот пример python для этого специального шаблона чтения: https://lists.osgeo.org/pipermail/gdal-dev/2014-April/038633.html Я никогда не использовал GDAL/OGR, поэтому не знаю подробностей. Если он работает, не стесняйтесь публиковать более полезный ответ с примером кода. – scai