导语

FlatGeobuf是一种地理数据存储格式,采用了二进制编码,相比其他文本或XML格式更高效,可以显著减小文件大小,这使得数据的传输和存储更加快速和高效。

SuperMap iServer 11i(2023) (以下简称SuperMap iServer11.1)新增对FlatGeobuf表述支持,可实现分段传输和按需加载效果,下文将详细介绍如何实现。

一、FlatGeobuf简介

1.1 什么是FlatGeobuf

FlatGeobuf是一种用于存储地理要素的坐标、类型的二进制编码格式,能够存储简单要素规范下的要素数据(如点、线、面等)。

FlatGeobuf 格式与传统的 Shapefile、GeoJSON 等文件格式类似,均支持地理空间矢量数据的存储,但 FlatGeobuf 格式具有更高的存储效率和更快的读写速度,适用于大量静态数据的编码与传输。使用 FlatGeobuf 格式存储和传输数据,可以加快网络传输速度,从而优化用户的使用体验。

1.2 FlatGeobuf优缺点

优点

  • 紧凑性,FlatGeobuf使用二进制编码,可以将数据存储为更小的文件,从而节省磁盘空间和网络带宽。
  • 快速读取,采用二进制编码,FlatGeobuf能够以更高的速度进行读取和解析,加快了数据访问的效率。
  • 跨平台支持,FlatGeobuf可以被多个GIS软件和工具所支持,并且提供了多种语言的API,允许在不同平台上进行数据转换和处理。
  • 分段传输和按需加载,FlatGeobuf支持分段传输和按需加载,可以仅加载需要的数据块,而无需加载整个数据集,提高了数据查询和展示的效率。

缺点

  • 几何与属性数据并未分离。
  • 文件体积较之于 GeoPackage 格式无明显优势。
  • 难以直接编辑,与文本格式相比,FlatGeobuf的二进制编码方式使得直接手动编辑数据变得困难。

关于FlatGeobuf更多信息:https://github.com/flatgeobuf/flatgeobuf

1.3 FlatGeobuf适用场景

  • 大规模静态数据编码与传输,使用FlatGeobuf格式可以有效地存储和传输大规模的地理数据。采用紧凑的二进制编码,可以显著减小数据文件的大小,并提高数据的加载速度。
  • 跨平台数据共享,FlatGeobuf格式具有跨平台的特性,可以被不同GIS软件和工具所支持和解析(例如:GeoServer、QGIS、GeoTools、PostGIS等)。这使得不同GIS系统之间的数据共享更加便捷,无需进行复杂的数据转换和兼容性处理。
  • 分段传输和按需加载,FlatGeobuf格式支持将地理数据进行分段传输和按需加载。这意味着只需加载需要的数据块,而无需一次性加载整个数据集,从而提高数据的查询和展示效率。

二、如何使用FlatGeobuf

2.1 SuperMap iServer

SuperMap iServer 11.1默认支持对地图查询(queryResults)、数据查询(featureResults)等资源返回 FlatGeobuf 格式,文件格式*.fgb。

如下图所示,地图查询结果可以使用fgb表述返回。

SuperMap iServer 11.1支持输出 FlatGeobuf 格式的服务能力如下:

2.2 SuperMap iClient

SuperMap iClient 11.1(Leaflet、Openlayer、MapboxGL)支持直接访问云存储.fgb文件或通过SuperMap iServer 11.1 服务返回的FlatGeoBuf格式文件,并支持流式传输和渲染(关于FlatGeoBuf示范程序请访问https://iclient.supermap.io/站点进行查看)

FlatGeoBuf 数据有全量加载和按需加载两种加载策略,可以通过修改前端代码中FGBLayer的加载策略参数 strategy,选择all(全量加载)和bbox(按需加载)来优化浏览体验。

全量加载FlatGeoBuf 2500万点数据效果:

按需加载FlatGeoBuf 2500万点数据效果:

三、FlatGeobuf与GeoJSON性能对比

测试环境 CPU:Intel(R) Core(TM) i7-10875H
内存 16G
浏览器 Chrome 113
测试数据 5万地类图斑面数据(619万节点,每条记录含26个属性字段)udbx存储
测试版本 supermap-iserver-11.1.0-windows-x64.zip
测试方法 1.地图查询、数据查询返回GeoJSON表述与FlatGeobuf表述文件大小对比;
2.地图查询、数据集查询从Web端查询到浏览器渲染GeoJSON表述与FlatGeobuf表述性能对比;

3.1 文件大小

1)地图查询

返回记录 GeoJSON FlatGeobuf(全量加载) FlatGeobuf(按需加载)
5千面(145万节点) 57.9 MB 24.4MB 11.2 MB
1万面(198万节点) 80.9 MB 34.7 MB 15.7 MB
5万面(619万节点) 264 MB 116 MB 26.2 MB

2)数据集查询

返回记录 GeoJSON FlatGeobuf(全量加载) FlatGeobuf(按需加载)
5千面(145万节点) 57.9 MB 24.2 MB 11.1 MB
1万面(198万节点) 81.1 MB 34.3 MB 15.5 MB
5万面(619万节点) 264 MB 114 MB 25.7 MB

3.2 Web端动态查询到浏览器渲染性能对比

1)地图查询

返回记录 GeoJSON FlatGeobuf(全量加载) FlatGeobuf(按需加载)
5千面(145万节点) 7.3s 3.1s 1.9s
1万面(198万节点) 10.5s 5s 3.1s
5万面(619万节点) 55s 31s 21s

2)数据集查询

返回记录 GeoJSON FlatGeobuf(全量加载) FlatGeobuf(按需加载)
5千面(145万节点) 9.4s 2.1s 0.96s
1万面(198万节点) 12s 4.1s 1.7s
5万面(619万节点) 43s 23s 12s

3.3 总结

  1. SuperMap iServer 地图查询和数据集查询,返回FlatGeobuf表述相较GeoJSON体积减少42%;
  2. 按需加载FlatGeobuf表述,返回数据量大小视浏览范围内数据量决定,总体较FlatGeobuf全量加载体量更小;
  3. 数据集查询比地图查询性能高,且使用FlatGeobuf 比使用 GeoJSON 效率高;

综上,FlatGeobuf表述在Web端进行地图查询与数据查询较GeoJSON表述,结果数据体量小、加载速度快。建议用户在相似场景中优先选择使用FlatGeobuf表述。

(转发请注明出处:http://www.cnblogs.com/zhangyongli2011/ 如发现有错,请留言,谢谢)

SuperMap iServer新增支持FlatGeobuf数据格式,查询渲染性能提升2-3倍的更多相关文章

  1. 两行CSS让页面提升了近7倍渲染性能!

    前言 对于前端人员来讲,最令人头疼的应该就是页面性能了,当用户在访问一个页面时,总是希望它能够快速呈现在眼前并且是可交互状态.如果页面加载过慢,你的用户很可能会因此离你而去.所以页面性能对于前端开发者 ...

  2. Android性能优化之UI渲染性能优化

    版权声明:本文出自汪磊的博客,未经作者允许禁止转载. 本篇博客主要记录一些工作中常用的UI渲染性能优化及调试方法,理解这些方法对于我们编写高质量代码也是有一些帮助的,主要内容包括介绍CPU,GPU的职 ...

  3. Tapdata Cloud 2.1.5来啦:新增支持Amazon RDS数据库,错误日志查询更便捷,Agent部署细节再优化

      需求持续更新,优化一刻不停--Tapdata Cloud 2.1.5 来啦!   最新发布的版本中,数据连接再上新,同时新增任务报错相关信息快速查询入口,开始支持 JVM 参数自定义设置.   更 ...

  4. fabric-sdk-container v1.0-beta 新增支持多服务节点

    HyperLedger/Fabric SDK Docker Image 该项目在github上的地址是:https://github.com/aberic/fabric-sdk-container ( ...

  5. SuperMap iServer 9D HBase使用

    需提前将HBase进行部署,参考上篇部署文档 https://www.cnblogs.com/zhangyongli2011/p/9982143.html (转发请注明出处:http://www.cn ...

  6. SuperMap iClient for JavaScript 之关联查询

    人们常说,计划赶不上变化.同样的,在项目中,使用的数据也是在不断变化的,尤其是属性信息的改变.就比如说,地图上的地物,它的空间信息在比较长的时间内,都不会发生变化,他的属性信息在初期不完整或者与后来的 ...

  7. Tapdata Cloud 2.1.2 来啦:大波细节已就绪!字段类型可批量修改、支持微信扫码登录、新增支持 Vika 为目标

    Tapdata Cloud cloud.tapdata.net 让数据实时可用 Tapdata Cloud 是国内首家异构数据库实时同步云平台,目前支持 Oracle.MySQL.PG.SQL Ser ...

  8. 图形性能(widgets的渲染性能太低,所以推出了QML,走硬件加速)和网络性能(对UPD性能有实测数据支持)

    作者:JasonWong链接:http://www.zhihu.com/question/37444226/answer/72007923来源:知乎著作权归作者所有,转载请联系作者获得授权. ---- ...

  9. Mysql 连接查询 Mysql支持的连接查询有哪些

    CREATE TABLE `chx` (   `id` VARCHAR(20) NOT NULL,   `name` VARCHAR(50) DEFAULT NULL,   `name2` CHAR( ...

  10. SuperMap iServer 在Linux 部署中问题总结

    SuperMap iServer 作为超图公司的云GIS服务器产品,一般是部署在Linux服务器上.下面把日常部署和使用过程中遇到的相关问题做以汇总. 1.部署iServer的第一步是要检查Linux ...

随机推荐

  1. 关于我自己的Gui界面库完善

    仓库地址:https://gitee.com/GPRO/Gui 功能说明:  解析XML, 接入AngleScript. 接下来需要做的: 因为有了WPF,MFC,HTML甚至UE5的使用经验,这里我 ...

  2. UE中返回值为数组的时候,无法传递Reference的问题

    我如果要修改一个类或者结构体的成员变量, 那么我需要通过函数返回 也就是说Struct目前不能传递引用,只能传递备份

  3. java面试一日一题:rabbitMQ如何保证消息不丢失

    问题:请讲下rabbitMQ如何保证消息不丢失 分析:该问题属于概念题,同时也是一个设计方面的题,牵扯到部分设计层面的东西: 回答要点: 主要从以下几点去考虑, 1.rabbitMQ在保证消息不丢失方 ...

  4. mybatis关于大于小于:元素内容必须由格式正确的字符数据或标记组成。

    首先是原因: mybatis中< >这两个符号会被识别为标签的开始和结束,用了就会报解析的错误 会报错类似下面这些 1.元素内容必须由格式正确的字符数据或标记组成. 2.Error cre ...

  5. 2023年最新ios证书申请流程

    做过前端多端开发的朋友们都知道,hbuilderx或apicloud这些开发工具的uniapp框架可以开发ios应用,使用他们的云打包即可. 云打包的时候需要一个私钥证书和一个profile文件,这两 ...

  6. Snipaste截图工具-测试工程师强推

    Snipaste主要功能是截图和贴图,网上下载直接安装即可. 个人认为Snipaste比其它截图好用的点: 快捷键简单.Snipaste只需按F1截图,不会和其它截图工具的快捷键冲突 贴图功能.贴图功 ...

  7. 【Java】Maven模块化工程SSM整合

    创建数据库一个演示表User CREATE TABLE `user` ( `id` int NOT NULL AUTO_INCREMENT, `name` varchar(64) DEFAULT NU ...

  8. 【Java】【设计模式 Design Pattern】装饰器模式 Decorator

    解决的问题: 对象的扩展问题: package cn.echo42.decorator; /** * @author DaiZhiZhou * @file Netty * @create 2020-0 ...

  9. TensorBoard标量图中的平滑曲线是如何做的平滑?—— tensorflow TensorBoard标量图中“平滑”参数背后的数学原理是什么?—— 指数移动平均(EMA)

    TensorFlow的tensorboard的平滑曲线的实现代码: 使用"指数移动平均"技术实现. 地址: https://github.com/tensorflow/tensor ...

  10. 树莓派3b+ 安装windows10 arm版本的方法及使用体验

    首先,我再网上找到了一个很详细的为树莓派3b安装windows10 arm的教程,实际操作下来发现并不可行. 最后找到了可行的教程: 第3章 将Windows10镜像写入TF卡:https://zhu ...