python - 使用 Fiona 模块在 Python 中编写地理包属性数据
问题描述
我在 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。
谢谢
解决方案
GIS 也是新手,但我认为您需要使用具有写入功能的 fiona 驱动程序。
我相信fiona默认使用OpenFileGDB驱动,它只有读取能力。
运行fiona.supported_drivers
以查看您的安装支持哪些驱动程序,以及它们具有哪些读取或写入功能。
尝试这个:
with fiona.open(bldg_gpkg, 'w',
driver='GPKG',
schema=schema,
crs=crs) as c:
您需要提供数据架构以及 crs 作为 python 字典。
推荐阅读
- hadoop - 配置单元列检查字符串“null”和真正的 NULL
- python - 从文件名中取出除数字之外的所有内容
- eyeshot - 加入简单的多边形并在 Eyeshot 中绘制生成的轮廓
- python - conda 更新中的语法错误(Anaconda 提示)
- sql - MMDDYY 到 YYYYMMDD SQL
- python-3.x - 熊猫:为什么'in'坏系列?
- azure-devops - Run Cypress.io on Azure Pipelines Hosted Linux Agent
- rest - 从 Powershell 如何调用 IBM Urbancode AddVersionStatus API?
- python-2.7 - 为什么我们得到的“客户”对象没有 Google BigQuery 的“get_dataset”属性?
- javascript - 地理编码器失败,原因是:REQUEST_DENIED google maps