RFC 27:改进的支持数据文件选项

作者:弗兰克·温特丹

联系方式:warmerdam@pobox.com

现状:发展

总结

目前,GDAL依赖于 gdal data 目录。其中最大的部分是来自EPSG和其他来源的坐标系词典。它还包括S-57字典、种子DGN和DXF文件以及项目徽标。未压缩的数据目前约为1.8MB,随着添加更多字典(例如PCI和IAU坐标系),预计还会增长。

当数据文件安装在不寻常的位置时,在运行时查找它们也是一个常见的问题。

此RFC旨在使用两个新的主要特性彻底检查支持文件处理。

  1. 从压缩数据文件中读取数据以减少GDAL的磁盘占用空间的能力。

  2. 使用GDAL DLL或共享库嵌入数据文件以消除“查找”问题的能力。

通过VSI*L访问CPL CSV

大多数支持数据文件访问是通过CPL CSV API(gdal/port/CPL_cv.cpp)实现的。通过CPLFindFile()查找支持数据文件。事实证明,这些函数仍在使用不支持特殊处理程序(如/vsizip/)的旧VSI API,或者至少在一种情况下使用直接fopen()调用。因此,这个RFC的第一步是将这些函数转换为所有使用VSI*L API的函数。一个 patch 已准备好演示所需的大部分更改。使用此修补程序,可以从诸如/vsizip//home/warmerda/GDAL/DATA/gdaldata.zip之类的GDALu数据设置访问文件。

注意,我们正在显式地更改关于文件性质的契约 * 传递给诸如CSVReadParseLine()之类的函数(实际文件 * 与VSIL样式文件 ). 虽然应用程序代码或私有驱动程序实现不太可能使用SV函数,但也有可能需要更改。这种变化应该在GDAL 1.8发行说明中注明。

在某些情况下,比如将libgeotiff用作外部库时,是否会与libgeotiff中嵌入的cpl_csv实现有不良的交互还不清楚。需要进行一些审查。

另一个需要研究的问题是通过VSI*L API查找所有文件对性能的影响。