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 ...
随机推荐
- 有向图_节点间路径路径--python数据结构
字典创建有向图,查找图节点之间的路径,最短路径,所有路径 """ 参考文档: https://www.python.org/doc/essays/graphs/ &quo ...
- 题解 CF653F Paper task
CF653F Paper task 给定一个长度为 \(n\) 和括号串,求本质不同的合法括号串个数.\(n\le 5\times 10^5\). 考虑如果不是求本质不同,可以想到 DP. 设 \(f ...
- Jenkins+docker 部署SpringCloud微服务
部署需要提前准备的环境:安装好Jenkins.docker.Maven.Jdk1.8.Git 说明:由于本例只说明如何部署,所以有关项目其他服务如nacos.mysql.redis.seata等默认已 ...
- 【PostgreSQL】下载安装PgSQL
官网下载地址: https://www.enterprisedb.com/downloads/postgres-postgresql-downloads Windows平台 官网直接提供exe安装包, ...
- 【SVN】属性功能配置
一.配置SVN提交模板 更改SVN提交信息模板 (参考源博客): https://www.cnblogs.com/fairylyl/p/10505833.html 右键属性配置: 新建一项属性,选择[ ...
- 【H5】05 高阶文字排版
摘自: https://developer.mozilla.org/zh-CN/docs/Learn/HTML/Introduction_to_HTML/Advanced_text_formattin ...
- 【转载】 DQN玩Atari游戏安装atari环境bug指南
版权声明:本文为CSDN博主「好程序不脱发」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明.原文链接:https://blog.csdn.net/ningmengzh ...
- 【转载】failed to open /dev/dri/renderd128 permission denied
原文地址: https://juejin.cn/s/failed%20to%20open%20%2Fdev%2Fdri%2Frenderd128%20permission%20denied ===== ...
- SMU 2024 spring 天梯赛2
SMU 2024 spring 天梯赛2 7-1 计算指数 - SMU 2024 spring 天梯赛2 (pintia.cn) #include <bits/stdc++.h> usin ...
- quartz监控日志(一)
最近几个月,现网总是出现定时器不执行的情况,或者定时器卡死的情况,而又不方便排查,只能依靠quartz的debug日志以及错误日志来监控定时器的执行情况,并且随着我们系统中job越来越多,而使得job ...