大数据量矢量数据的可视化需要解决的问题,就是如何在可接受的短时间内,能展示大数据量的矢量地图。

解决方案一:采用预先渲染的切片进行展示

切片是预先渲染的数据集,也是响应最快的展示方式。目前ArcGIS提供栅格切片和矢量切片两种切片格式。这两种切片格式各有利弊,如下表所示:

栅格切片

矢量切片

支持ArcGIS Desktop所有符号

支持

仅部分

支持高分辨屏幕自适应

不支持

支持

支持小比例尺下展示全部数据

支持

不支持,会自动简化数据。

支持动态改变样式

不支持

支持

生产耗时

耗时长

耗时短

由上述表格,可以得出,只有栅格切片才能支持展示全部数据。因此对于大数据量的矢量数据的展示,建议在小比例尺下预先生产栅格切片,并设置合理的比例尺。

解决方案二:使用查询图层进行动态聚合展示

在把大数据量的矢量数据进行可视化时,当地图缩放到小比例尺时,往往会出现地图上叠加了过多的要素,失去了地图应该表达的实际业务意义。因此,这时可以考虑使用按区域聚合的方法,制作具有实际业务意义的专题地图。具体方法如下:

1、创建用于聚合的区域,可以使用行政区域,或者使用Generate Tessellation工具创建六边形或正方形格网。

2、添加查询图层。通过SQL进行数据的动态聚合。这里可以使用两种SQL思路,第一是使用属性字段进行关联,第二种是使用空间SQL函数。显然第一种方法速度上是更快的,因为运算简单。

以下是示例代码:

SELECT c.objectid, c.Name, c.shape, c.POP2010, fo.Rainfall AS Weighted_Total_Rainfall

FROM COUNTIES_IL c

INNER JOIN

(

SELECT t.fips, (sum(r.rainfall_inch * t.area) / sum(t.area)) AS rainfall

FROM COUNTIES_THSN_INTSCT_IL t

INNER JOIN

(

SELECT site_no, Sum(rainfall_inch) AS rainfall_inch

FROM USGS_RAINFALL_TIMESERIES_IL

GROUP BY site_no

) r

ON r.site_no = t.site_no

GROUP BY t.FIPS

) fo

ON c.fips = fo.fips

解决方案三:使用ArcGIS Pro提供的数据聚合功能

对于存储在SDE或者关系型数据库的点数据,可以之间使用ArcGIS Pro提供的数据聚合功能。该功能使用起来十分简单,ArcGIS Pro 2.4以上版本可用。具体方法如下:

1、使用Enable Feature Binning工具,启用要素类的动态聚合功能。目前支持的数据库类型包括:Db2、PostgreSQL、MS SQL Server、Oracle、SAP HANA。支持的聚合方式有:平行六边形、点状六边形、正方形、大地哈希网格。该工具在聚合可视化的同时,还能对指定的属性字段进行统计,支持的统计类别包括:聚合的点要素个数、平均值、最大最小值、标准差和总和。对于静态的不经常更新的数据,可以对聚合结果进行缓存,这样显示速度会更快。

2、对于聚合结果的缓存,可以使用Manage Feature Bin Cache工具来管理缓存,可指定缓存的最大详细比例尺级别,也可以添加或删除属性字段统计信息。

解决方案四:使用SOI实现服务器端动态聚合

可以把需要被聚合的大体量数据存放在支持高效读取的存储系统中,例如Elasticsearch、Redis或者HBase或PostgreSQL-XL。

最新文章

  1. 数迹学——Asp.Net MVC4入门指南(5):从控制器访问数据模型
  2. cocos2d-x-3.0 的改变,由于变得太多,一点点累积吧!
  3. python 切片
  4. jQuery 跨域访问问题解决方法(转)
  5. libGraphicsMagickWand.so: cannot open shared object file: No such file or directory stack traceback:
  6. Swift 类构造器的使用
  7. MyBatis一对多双向关联——MyBatis学习笔记之七
  8. Spring 中context.start作用
  9. Objective-C调用Swift
  10. 重看Decorator Pattern,联想到Delegate传递及Flags Enum--欢迎拍砖!
  11. Linux命令行及Vim简单学习记录
  12. hdu4597 Play Game(DFS)
  13. shell中while循环的陷阱
  14. Java获取精确到秒的时间戳(转)
  15. Spring-Security+Freemarker 开启跨域请求伪造防护功能
  16. 【JVM虚拟机】(6)---深入理解Class中访问标志、类索引、父类索引、接口索引
  17. spring整合mybatis,批量扫描mapper接口出现异常
  18. DHCP服务器 出现的故障
  19. Docker入门与实践
  20. Realtime Multi-Person 2D Pose Estimation using Part Affinity Fields(理解)

热门文章

  1. 方法1:使用Jenkins构建Docker镜像 --SpringCloud
  2. 【转】Redis 基础操作和命令
  3. Base64图片编码的使用
  4. winform实现图片的滑动效果
  5. flutter 动画 practice
  6. 如何导出ane所需的swc
  7. scrapy RuntimeError: maximum recursion depth exceeded while calling a Python object 超出python最大递归数异常
  8. 解决远程连接数据库:Host is not allowed to connect to this MySQL server
  9. SpringBoot AOP概念及使用Demo
  10. linux kernel相关学习资料的收集与周边