MS RFC 125:支持映射文件中的连接选项

日期

2019-09-30

作者

甚至鲁奥

联系

even.rouault@spatialys.com

状态

采用

最后更新

2019-10-10

版本

MapServer 8.0版

概述

由于GDAL 2.0、GDAL/OGR栅格和矢量驱动程序可以接受开放选项,从而控制驱动程序te行为的某些方面。这些选项是特定于驱动程序的,可以使用 GDALOpenEx() C API。目前,MapServer没有直接的方法来指定这些选项,人们不得不退回到工作区,例如使用GDAL或OGR.vrt文件,其中嵌入了打开选项。

建议的解决方案

在MapFile语法中,CONNECTIONOPTIONS关键字作为LAYER对象的子项添加,并定义必须以END结尾的新块。它可以接受一系列“键”“值”打开选项。此语法与元数据块类似。

例子

LAYER
    NAME "test"
    CONNECTIONTYPE OGR
    CONNECTION "./data/nested_attrs.geojson"
    CONNECTIONOPTIONS
        "FLATTEN_NESTED_ATTRIBUTES" "YES"
    END
    [...]
END

实施细节

将修改以下文件:

  • mapfile.c:加载和序列化连接选项

  • mapfile.h:定义CONNECTIONOPTIONS的值

  • mapgdal.c:添加msGetStringListFromHashTable()以转换GDAL所需的char**列表中的哈希表

  • maplexer.l:修改为识别连接选项

  • mapogr.cpp:打开矢量数据集时使用CONNECTIONOPTIONS

  • mapraster.c:打开栅格数据集时使用连接选项

  • maprasterquery.c:打开栅格数据集时使用连接选项

  • mapserver.h:layerObj结构扩展为包含hashTableObj连接选项

  • mapuvraster.c:打开栅格数据集时使用连接选项

  • mapwcs.c:打开栅格数据集时使用连接选项

  • mapwcs20.c:打开栅格数据集时使用连接选项

将添加以下文件:

  • msautotest/gdal/connectionoptions.map:栅格的测试连接选项

  • msautotest/wxs/ogr_connectionoptions.map:vetor的测试连接选项

  • msautotest/wxs/expected/ogr_connectionoptions.xml:测试数据

  • msautotest/wxs/data/nested_attrs.geojson:预期结果

局限性

当前的实现仅限于GDAL和OGR驱动程序。但其他数据源后端可以使用CONNECTIONOPTIONS。

向后兼容性问题

没有。

安全影响

没有。

性能影响

没有。

文件需求

LAYER对象的documentation页将扩展到document CONNECTIONOPTIONS。

票证ID和参考号

拉取请求请访问:https://github.com/MapServer/MapServer/pull/5883

投票历史

+来自PSC的成员包括鲁奥、汤姆·克拉利迪斯、米克尔·史密斯、塞思·吉尔文、丹尼尔·莫里塞特、史蒂夫·莱姆和朱卡·拉科宁。

信用

感谢法国国防部的资助。