#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()
возвращает все, что было проанализировано в объекте. Этот подход требует большого объема памяти и может привести к ее нехватке. Если вашему приложению необходимо прочитать большой объем данных, я предлагаю вам расширить функцию для постепенного хранения проанализированных данных в базе данных или файле, доступ к которым можно получить, когда функция вернется. Это значительно уменьшило нагрузку на память операционной системы.