SuperMap iServer新增支持FlatGeobuf数据格式,查询渲染性能提升2-3倍
导语
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 总结
- SuperMap iServer 地图查询和数据集查询,返回FlatGeobuf表述相较GeoJSON体积减少42%;
- 按需加载FlatGeobuf表述,返回数据量大小视浏览范围内数据量决定,总体较FlatGeobuf全量加载体量更小;
- 数据集查询比地图查询性能高,且使用FlatGeobuf 比使用 GeoJSON 效率高;
综上,FlatGeobuf表述在Web端进行地图查询与数据查询较GeoJSON表述,结果数据体量小、加载速度快。建议用户在相似场景中优先选择使用FlatGeobuf表述。
(转发请注明出处:http://www.cnblogs.com/zhangyongli2011/ 如发现有错,请留言,谢谢)
SuperMap iServer新增支持FlatGeobuf数据格式,查询渲染性能提升2-3倍的更多相关文章
- 两行CSS让页面提升了近7倍渲染性能!
前言 对于前端人员来讲,最令人头疼的应该就是页面性能了,当用户在访问一个页面时,总是希望它能够快速呈现在眼前并且是可交互状态.如果页面加载过慢,你的用户很可能会因此离你而去.所以页面性能对于前端开发者 ...
- Android性能优化之UI渲染性能优化
版权声明:本文出自汪磊的博客,未经作者允许禁止转载. 本篇博客主要记录一些工作中常用的UI渲染性能优化及调试方法,理解这些方法对于我们编写高质量代码也是有一些帮助的,主要内容包括介绍CPU,GPU的职 ...
- Tapdata Cloud 2.1.5来啦:新增支持Amazon RDS数据库,错误日志查询更便捷,Agent部署细节再优化
需求持续更新,优化一刻不停--Tapdata Cloud 2.1.5 来啦! 最新发布的版本中,数据连接再上新,同时新增任务报错相关信息快速查询入口,开始支持 JVM 参数自定义设置. 更 ...
- fabric-sdk-container v1.0-beta 新增支持多服务节点
HyperLedger/Fabric SDK Docker Image 该项目在github上的地址是:https://github.com/aberic/fabric-sdk-container ( ...
- SuperMap iServer 9D HBase使用
需提前将HBase进行部署,参考上篇部署文档 https://www.cnblogs.com/zhangyongli2011/p/9982143.html (转发请注明出处:http://www.cn ...
- SuperMap iClient for JavaScript 之关联查询
人们常说,计划赶不上变化.同样的,在项目中,使用的数据也是在不断变化的,尤其是属性信息的改变.就比如说,地图上的地物,它的空间信息在比较长的时间内,都不会发生变化,他的属性信息在初期不完整或者与后来的 ...
- Tapdata Cloud 2.1.2 来啦:大波细节已就绪!字段类型可批量修改、支持微信扫码登录、新增支持 Vika 为目标
Tapdata Cloud cloud.tapdata.net 让数据实时可用 Tapdata Cloud 是国内首家异构数据库实时同步云平台,目前支持 Oracle.MySQL.PG.SQL Ser ...
- 图形性能(widgets的渲染性能太低,所以推出了QML,走硬件加速)和网络性能(对UPD性能有实测数据支持)
作者:JasonWong链接:http://www.zhihu.com/question/37444226/answer/72007923来源:知乎著作权归作者所有,转载请联系作者获得授权. ---- ...
- Mysql 连接查询 Mysql支持的连接查询有哪些
CREATE TABLE `chx` ( `id` VARCHAR(20) NOT NULL, `name` VARCHAR(50) DEFAULT NULL, `name2` CHAR( ...
- SuperMap iServer 在Linux 部署中问题总结
SuperMap iServer 作为超图公司的云GIS服务器产品,一般是部署在Linux服务器上.下面把日常部署和使用过程中遇到的相关问题做以汇总. 1.部署iServer的第一步是要检查Linux ...
随机推荐
- MiniAuth 一个轻量 ASP.NET Core Identity Web 后台管理中间插件
MiniAuth 一个轻量 ASP.NET Core Identity Web 后台管理中间插件 「一行代码」为「新.旧项目」 添加 Identity 系统跟用户.权限管理网页后台系统 开箱即用,避免 ...
- python的基本认识
python的基本认识 初识python: python是一种跨平台的.开源的.免费的.解释型的高级编程语言: python的应用领域十分广泛.如web编程.图像处理.黑客编程.网络爬虫和科学计算等: ...
- Java SE 文件上传和文件下载的底层原理
1. Java SE 文件上传和文件下载的底层原理 @ 目录 1. Java SE 文件上传和文件下载的底层原理 2. 文件上传 2.1 文件上传应用实例 2.2 文件上传注意事项和细节 3. 文件下 ...
- 【XML】Extensible Markup Language 可扩展标记语言
Extensible Markup Language 可扩展标记语言[XML] 视频资料参考自:https://www.bilibili.com/video/BV1B441117Lu?p=186 其他 ...
- 【IDEA】找不到类资源
报错问题描述: 找不到这个实例调用的方法或者方法缺失重载 找不到这个声明的类资源 解决情况一 import声明缺失,IDEA智能导包提示可以解决 注意,如果存在了重名的类资源,导入了错误的资源,实例引 ...
- 通过内存映射的方式向lcd屏幕输出几个圆
/************************************************* * * file name:color.c * author :momolyl@126.com * ...
- AC自动机 提高篇
文本生成器 首先考虑一个容斥,算出不包含任何一个单词的文章的数量. 我们设 \(dp_{i,j}\) 表示当前文章长度为 \(i\),最后一个字符在 \(AC\) 自动机上的 \(j\) 号点的方案数 ...
- RabbitMq消息可靠性之回退模式 通俗易懂 超详细 【内含案例】
RabbitMq保证消息可靠性之回退模式 介绍 生产者生产的消息没有正确的到达队列就会触发回退模式,进行二次发送 前提 完成SpringBoot 整合 RabbitMq 中的Topic通配符模式 一. ...
- 【CDQ分治】三元环
三元环 HDU - 7439 思路 考虑 \(3\) 个点的有向图,要么成环,要么有一个点入度为 \(2\) ,假设第 个点的入度为 \(d_i\),答案为 \(C_n^3-\sum\limits_{ ...
- ARM汇编:MRS和MSR指令
1.MSR和MRS指令介绍 MRS 指令: 对状态寄存器CPSR和SPSR进行读操作.通过读CPSR可以获得当前处理器的工作状态.读SPSR寄存器可以获得进入异常前的处理器状态(因为只有异常模式下有 ...