Запись данных атрибута геопакета в Python с помощью модуля Fiona - PullRequest
0 голосов
/ 07 мая 2020

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

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

Хотя я успешно импортировал и прочитал 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 Ответ

0 голосов
/ 07 мая 2020

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

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

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

Попробуйте следующее:

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

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

...