чтение большого файла .gdb с помощью геопанд

#python #gis #geopandas #shapefile

#питон #гис #геопанды #шейп-файл

Вопрос:

Я пытаюсь прочитать большой (350 тыс. полигонов) файл .gdb в python следующим образом:

 mydata = gpd.read_file(r'Key_Layers.gdb',layer='Hazard')  

Однако он считывает только ~50 тыс. из ~350 тыс. полигонов. И это также занимает около 12 часов.

Я также пытался читать по одной строке за раз, например

 mydata = gpd.read_file(r'Key_Layers.gdb',layer='Hazard',rows=1)  

Но это, похоже, тоже не работает — вместо этого он просто загружает весь набор данных.

РЕДАКТИРОВАТЬ: теперь я также попробовал fiona, но у меня все еще возникают проблемы с чтением файла (он зависает/занимает очень много времени, чтобы что-либо сделать):

 with fiona.open(filename,layer='Hazard') as source: for i in source:  print(i)  

Примечание: В этом файле несколько слоев, и у меня проблема только со слоем под названием «Опасность». Остальные слои импортируются нормально с помощью приведенного выше кода фионы, проходящего через каждый элемент. Может быть, слой «Опасности» слишком велик?

Комментарии:

1. Из исходного кода gpd.read_file() возвращает все, что было проанализировано в объекте. Этот подход требует большого объема памяти и может привести к ее нехватке. Если вашему приложению необходимо прочитать большой объем данных, я предлагаю вам расширить функцию для постепенного хранения проанализированных данных в базе данных или файле, доступ к которым можно получить, когда функция вернется. Это значительно уменьшило нагрузку на память операционной системы.