Ошибка драйвера при чтении файловой базы геоданных из S3 с использованием геопанд

Я пытаюсь прочитать файл файловой базы геоданных в фрейм геоданных с помощью библиотеки pythongeopandas. Файл базы геоданных находится на S3, поэтому я использую fssspec чтобы прочитать это, но я получаю сообщение об ошибке:

      import geopandas as gpd
import fsspec

fs = fsspec.filesystem('s3', profile='my-profile', anon=False)

он работает для чтения в файле geojson:

      # this runs w/o error
g_file = fs.open("my-bucket/my-file.geojson")
gdf = gpd.read_file(g_file)

это вызывает ошибку:

      gbd_file = fs.open("my-bucket/my-file.gdb/")
gdf = gpd.read_file(gdb_file, driver="FileGDB")

Вот трассировка ошибки:

      ---------------------------------------------------------------------------
CPLE_OpenFailedError                      Traceback (most recent call last)
fiona/_shim.pyx in fiona._shim.gdal_open_vector()

fiona/_err.pyx in fiona._err.exc_wrap_pointer()

CPLE_OpenFailedError: '/vsimem/83f6a4d8051c449c86c4c608520eb998' not recognized as a supported file format.

During handling of the above exception, another exception occurred:

DriverError                               Traceback (most recent call last)
<ipython-input-33-7245da312526> in <module>
----> 1 gdf = gpd.read_file(file, driver='FileGDB')

~/my-conda-envs/nwm/lib/python3.7/site-packages/geopandas/io/file.py in _read_file(filename, bbox, mask, rows, **kwargs)
    158 
    159     with fiona_env():
--> 160         with reader(path_or_bytes, **kwargs) as features:
    161 
    162             # In a future Fiona release the crs attribute of features will

~/my-conda-envs/nwm/lib/python3.7/site-packages/fiona/collection.py in __init__(self, bytesbuf, **kwds)
    554         # Instantiate the parent class.
    555         super(BytesCollection, self).__init__(self.virtual_file, vsi=filetype,
--> 556                                               encoding='utf-8', **kwds)
    557 
    558     def close(self):

~/my-conda-envs/nwm/lib/python3.7/site-packages/fiona/collection.py in __init__(self, path, mode, driver, schema, crs, encoding, layer, vsi, archive, enabled_drivers, crs_wkt, ignore_fields, ignore_geometry, **kwargs)
    160             if self.mode == 'r':
    161                 self.session = Session()
--> 162                 self.session.start(self, **kwargs)
    163             elif self.mode in ('a', 'w'):
    164                 self.session = WritingSession()

fiona/ogrext.pyx in fiona.ogrext.Session.start()

fiona/_shim.pyx in fiona._shim.gdal_open_vector()

DriverError: '/vsimem/83f6a4d8051c449c86c4c608520eb998' not recognized as a supported file format.

Еще одна потенциальная подсказка: я могу заставить его работать, просто выполнив:

      gdf = gpd.read_file("s3://my-bucket/my-file.gdb/", driver="FileGDB")

НО только на машине, которая является частью политики доступа к корзине. Я хочу получить доступ к данным с любого компьютера, используя учетные данные AWS, хранящиеся в my-profile профиль.

К сожалению, я не могу предоставить способ воспроизвести ошибку, поскольку все делаю в облаке. Работает нормально локально ...

1 ответ

Мы наблюдаем аналогичные проблемы с использованием ключей только для чтения для расположений и шейп-файлов S3 (и, возможно, даже папок NAS с разрешениями только для чтения).

Можете ли вы попробовать как с ключами, имеющими разрешения на чтение и запись, так и с ключами только для чтения? Я предполагаю, что драйверы gdal на задней панели нуждаются в разрешениях на запись / доступе, даже если требуется только чтение.

На проблему с драйвером намекают в последней части трассировки ошибки.

      fiona/_shim.pyx in fiona._shim.gdal_open_vector()
DriverError: ...

Если есть кто-нибудь, кто может подтвердить особенности разрешений, необходимых для драйверов gdal, это было бы здорово!

Другие вопросы по тегам