0

我有 OGR 虚拟格式作为 test.vrt 文件,并尝试使用 Python Fionalib 读取它。

>>> import fiona
>>> src = fiona.open('abs_path_to_vrt_file.vrt')

之后我收到一个错误:

fiona.errors.DriverError: unsupported driver: 'OGR_VRT'

这是我的 test.vrt 文件:

<?xml version="1.0" encoding="UTF-8"?>
<OGRVRTDataSource>
    <OGRVRTLayer name="test">
        <SrcDataSource>absolute_path_to_test_shp.shp</SrcDataSource>
    </OGRVRTLayer>
</OGRVRTDataSource>

我做错了什么?

4

2 回答 2

1

Fiona 只处理 GDAL 支持的驱动程序的一个子集,而 VRT 不是其中之一:

>>> fiona.supported_drivers
{'AeronavFAA': 'r', 'ARCGEN': 'r', 'BNA': 'raw', 'DXF': 'raw', 'OpenFileGDB': 'r', 'ESRI Shapefile': 'raw', 'GeoJSON': 'rw', 'GPKG': 'rw', 'GPX': 'raw', 'GPSTrackMaker': 'raw', 'Idrisi': 'r', 'MapInfo File': 'raw', 'DGN': 'raw', 'PCIDSK': 'r', 'SEGY': 'r', 'SUA': 'r'}

VRT 文件是格式驱动程序 - 它们用于创建地理数据集、引用地理数据集,甚至指定对数据集的几何更改。但 VRT 文件本身并不是地理数据集。它们是 XML 文件!

Python 的标准库对处理 XML 文件有很多支持:
https ://docs.python.org/3/library/xml.html

还有一些很棒的第 3 方选项:
xmltodict
untangle

于 2018-04-18T16:37:55.267 回答
0

奇怪的是OGR_VRT,至少对这样简单的 vrt 文件的支持似乎是可能的。如果您在使用 geopandas 的 fiona 打开上面的 xml 文件("OGR_VRT","r")的文件中添加到 supported_drivers 字典,似乎可以工作。site-packages/fiona/drvsupport.py使用风险自负!:)

于 2018-11-13T08:59:34.123 回答