矢量切片_针对大量矢量图层web端加载的后台支撑方案讨论

持续增长的矢量图层,后台应该采取怎样的方案来为web端、App端实时调用加载提供支撑?

01 场景概述

从国土资源、规划、水利、建筑、林业、气象、遥感、测绘、环境……等领域总有些成果数据会以矢量数据(比如shapefile)的格式存在,当我们每天都有一些成果数据产生,并且需要将矢量数据同步在业务平台中展示(web、App等),展示空间图形及点击后查看属性信息,并且随着时间的推移,此类数据在持续增长。那么后台应该怎样支持大量的图层去展示与属性查询?

02 几种方案讨论

首先我们从两个维度去看待这个题目,第一是矢量图层的数量,比如说我有成千上万个shapefile数据;第二是单个的矢量图层的数据量,比方说,一个shapefile有100M。

经过咨询此方面有经验的大佬及自己测试,大致形成了几种方案,汇总如下:

方案一:采用通用数据库存储地理数据(比如postgresql+postgis),并通过自己写后台接口的方式去返回前端查询及需要展示的数据,此种方式据测试,能够在前端加载具有百万节点级别矢量数据,后端再用postgis去抽稀,前端有GPU渲染加持的话,还是能够轻松应对大多数场景;

缺点:支撑的数据量有上限,一旦数据量比较大的时候,前端渲染压力极大,后端抽稀过度的话容易造成图形失真!

1a1e64e82685604765d8d8e99b183e6b.png

方案二:采用ArcGIS Portal+ ArcGIS Server联合方案,将矢量数据发布成MapServer或者FeatureServer(非托管的要素服务),用来查询属性数据,同时发布矢量切片服务,用来在前端渲染展示图形,此种方式不需要自定义写接口,前端可以直接调用服务的URL;

优点:能够极大的提高数据量的上限,对于单个数据量超大的矢量文件也能够轻松应对;

缺点:MapServer或者FeatureServer服务都是靠ArcGIS Server的实例来支撑,每个实例占用内存大于120M附近,所以一台ArcGIS Server节点承载的服务量和内存息息相关,换句话说,单节点承载的矢量数据的个数是有限的;

升级应对策略:在10.7版本以上支持了共享实例,也就是说许多的服务可以共用实例,前提是必须通过ArcGIS Pro来发布的MapServer、FeatureServer、KML、WFS、WMS等服务,值得注意的是,若服务访问频次较高,也较为常用的情况下,建议使用专用实例。对此,ESRI官方也有相关的方案推荐,可查看链接:https://support.esri.com/zh-cn/technical-article/000012639

550d456aca2e69c322dc85c2bd0f40ff.png

方案三:采用ArcGIS Portal + ArcGIS Server + ArcGIS Datastore联合方案,发布托管的FeatureServer用来查询属性数据,发布矢量切片服务用来支持前端大数据量的加载渲染,据实际测试,托管的要素服务不是靠实例来支撑服务,而是通过直连ArcGIS Datastore中关系数据库的方式,并且官方对此方案做过大量优化,不管是查询还是渲染,都能够基本满足碰到的所有场景。

优点:不管是从服务资源的占用量来讲还是单个矢量数据的数据量上来讲,这种方式基本能够解决以上两种维度上的问题。

6047b93a4953dc44d32b8913c8c80a38.png

注意:上述三种方案,当矢量图层的数量多到一定规模之后,均需增加服务器数量来承载更多数量的服务,这是毋庸置疑的。

以上,通过对比,当有条件使用方案三时,方案三无疑是最优解之一,当没有条件时,方案一可能需要花费自己相当的时间来优化,达到自己的使用需求。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值