#python-3.x #shapefile #geopandas #fiona #geopackage
#python-3.x #шейп-файл #геопандас #фиона #геопакет
Вопрос:
Я знаю, что шейп-файл можно прочитать из zip-файла, извлекая его в памяти и затем считывая: https://gis.stackexchange.com/questions/250092/using-pyshp-to-read-a-file-like-object-from-a-zipped-archive
У Фионы также есть способы чтения шейп-файла из памяти:https://pypi.org/project/Fiona/1.5.0
Однако я не смог найти способ чтения в .gpkg (geopackage) таким же образом.
Как мне извлечь геопакет из zip-файла, а затем в geopandas geodataframe?
Комментарии:
1. вы что-нибудь пробовали? шаблон во втором ответе кажется многообещающим gis.stackexchange.com/a/365097/12552
2. @PaulH, я попробовал предложенный ответ мартинфлейса, но он не сработал (пробовал абсолютный и относительный путь), но я не уверен в синтаксисе, используемом в этом ответе. gis.stackexchange.com/a/365097/12552 показывает, как правильно извлечь zip-файл в память. Но мой вопрос заключается в том, как преобразовать извлеченный из памяти файл gpkg в фрейм геоданных gdf. До сих пор я видел, как это делается только с пакетом shapefile.
Ответ №1:
Вы можете прочитать его напрямую, указав путь к gpkg в zip.
df = gpd.read_file('zip:///path/to/file.zip!data.gpkg')
для относительного пути:
df = gpd.read_file('zip://../path/to/file.zip!data.gpkg')
(в случае необходимости возврата в каталог, а затем в ‘path/to /’ и т. Д
Комментарии:
1. что означает префикс ‘zip:’ в начале пути? Я никогда такого не видел. А также ‘!’ между .zip и .gpkg? Предполагаю, что указан файл в zip? Кроме того, я пробовал этот синтаксис, но безуспешно : (
2. Смотрите подробности синтаксиса zip-файла в документации fiona: fiona.readthedocs.io/en/latest/manual.html#virtual-filesystems
3. Спасибо! извините за редактирование ответа, я просто хотел, чтобы он был как можно более конкретным для других!