MS RFC 137:本地FlatGeobuf支持

作者

比约恩·哈特尔

联系

bjorn.harrtell@gmail.com

作者

杰夫麦克纳

联系

jmckenna@gatewaygeomatics.com

最后更新

2022-04-30

版本

MapServer 8.0版

状态

草稿

1.背景

../../_images/flatgeobuf.jpg

FlatGeobuf是一种针对矢量的优化二进制编码,基于 Flatbuffers ,它通过利用 Packed Hilbert R-Tree 空间索引,支持快速边界框空间过滤。FlatGeobuf的性能使其成为通过HTTP/“云”传输空间数据的首选格式之一。

2.通过OGR了解当前状态

  • 从GDAL 3.1.0开始,可通过以下方式在MapServer中访问FlatGeobuf OGR

    CONNECTIONTYPE OGR
    CONNECTION "name.fgb"
    DATA "layername"
    CONNECTIONOPTIONS
      "VERIFY_BUFFERS" "NO" # for maximum performance
    END
    
  • 通过OGR连接会产生一些性能开销。以下基本基准显示了通过OGR使用shapefile的一些开销:

    Shapefile (native) 0.010s
    FlatGeobuf (OGR)   0.013s
    Shapefile (OGR)    0.023s
    GeoPackage (OGR)   0.042s
    SpatiaLite (OGR)   0.045s
    PostGIS (native)   0.053s
    GeoJSON (OGR)      0.089s
    
    environment: MapServer-main + GDAL 3.4.3 (MS4W/Windows)
    

3.建议的改善措施

  • 将FlatGeobuf添加为MapServer的本机格式

    DATA "name.fgb"
    
  • FlatGeobuf C++实现很小,不需要任何依赖项

  • 将包括FlatBuffers源代码

  • 初始实施将是只读访问

3.1向后兼容性

不适用

3.2对性能的影响

如上所述,通过直接从FlatGeobuf文件读取,这应该会带来性能提升。在测试此拉入请求期间,此处将包含更多基准。

3.3限制

  1. 最初,这将是只读访问。这意味着,像为直接从MapServer输出FlatGeobuf设置OUTPUTFORMAT这样的技巧,目前只能通过OGR起作用。

4。实施细节

4.1受影响的文件

  • 新文件将存储在: /flatgeobuf/

  • 包含的文件将存储在以下位置: /flatgeobuf/include/

  • mapflatgeobuf.c :主要逻辑

  • mapfile.c :添加新连接类型

  • 测试将添加到 /msautotest/

4.2票证参考

4.3文档

5.投票历史

TBD