MS RFC 137:本地FlatGeobuf支持¶
- 作者
比约恩·哈特尔
- 联系
- 作者
杰夫麦克纳
- 联系
- 最后更新
2022-04-30
- 版本
MapServer 8.0版
- 状态
草稿
1.背景¶
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限制¶
最初,这将是只读访问。这意味着,像为直接从MapServer输出FlatGeobuf设置OUTPUTFORMAT这样的技巧,目前只能通过OGR起作用。
4。实施细节¶
4.1受影响的文件¶
新文件将存储在: /flatgeobuf/
包含的文件将存储在以下位置: /flatgeobuf/include/
mapflatgeobuf.c :主要逻辑
mapfile.c :添加新连接类型
测试将添加到 /msautotest/
4.2票证参考¶
4.3文档¶
5.投票历史¶
TBD