Запись данных атрибутов геопакета на Python с использованием модуля Fiona

У меня очень мало опыта работы с модулем fiona (начат сегодня!). У меня есть геопакет с именем building.gpkg, в котором есть поле с именем id, которое на момент создания имеет значение NULL.

Я пытаюсь написать сценарий python, используя модуль fiona, чтобы заполнить его идентификатор в соответствии с идентификаторами, доступными в другой таблице, хранящейся в SQL Server.

Хотя я успешно импортировал и прочитал bldg.gpkg через fiona, мне не удается записать данные в столбец id:

Вот пример кода:

import fiona
bldg_gpkg = 'building.gpkg'

with fiona.open(bldg_gpkg, 'w') as c:
    for i in range(max_id, len(list(c))+max_id):
        c.next()['properties']['id'] = i

Я получаю вот такую ​​ошибку:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "C:\Program Files\Python3\lib\site-packages\fiona\env.py", line 407, in wrapper
    return f(*args, **kwargs)
  File "C:\Program Files\Python3\lib\site-packages\fiona\__init__.py", line 265, in open
    c = Collection(path, mode, crs=crs, driver=driver, schema=this_schema,
  File "C:\Program Files\Python3\lib\site-packages\fiona\collection.py", line 126, in __init__
    raise DriverError("no driver")
fiona.errors.DriverError: no driver

Я просмотрел collection.py и drvsupport.py в модуле fiona, и GPKG Drived установлен и поддерживается. Что-то мне не хватает? или метод написания неправильный?

Я использую Python 3.8.1 в Windows 10.

Спасибо

1 ответ

Также новичок в ГИС, но я думаю, вам нужно использовать драйвер fiona с возможностью записи.

Я считаю, что fiona по умолчанию использует драйвер OpenFileGDB, который имеет только возможности чтения.

Пробег fiona.supported_drivers чтобы узнать, какие драйверы поддерживаются в вашей установке, и какие у них есть возможности чтения и записи.

Попробуй это:

with fiona.open(bldg_gpkg, 'w',
    driver='GPKG',
    schema=schema,
    crs=crs) as c:

Вам нужно будет предоставить схему ваших данных, а также crs в виде словарей Python.

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