Запись данных атрибутов геопакета на 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.