[使用Fiona模块在Python中编写地理包装属性数据

问题描述 投票:0回答:1

我对fiona模块的经验很少(从今天开始!)我有一个名为building.gpkg的地理包,其中包含一个名为“ id”的字段,该字段在生产时为NULL。

我正在尝试使用fiona模块编写python脚本,以根据SQL Server中存储的另一个表中可用的ID填充其ID。

虽然我已成功导入并通过fiona读取了bldg.gpkg,但我仍在努力将数据写入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

我在fiona模块中的collection.py和drvsupport.py中查找并支持GPKG驱动器我有什么想念的吗?还是写作方法错误?

我正在Windows 10上运行Python 3.8.1。

谢谢

python python-3.x gis fiona geopackage
1个回答
0
投票

也是GIS的新手,但我认为您需要使用具有写入功能的fiona驱动程序。

我相信fiona默认使用OpenFileGDB驱动程序,该驱动程序仅具有读取功能。

运行fiona.supported_drivers以查看您的安装支持哪些驱动程序,以及它们具有哪些读取或写入功能。

尝试一下:

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

您需要提供数据的架构以及crs,作为python字典。

© www.soinside.com 2019 - 2024. All rights reserved.