基于ArcGISServer进行分页矢量查询的方案进阶
文章版权由作者李晓晖和博客园共有,若转载请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/
1. 背景
在空间查询中,我们对查询结果要求以分页形式进行展示。Geoserver的WFS服务提供了maxFeatures 、startIndex以及sortBy这样的参数,通过设置这些参数的值即可实现分页。但是arcgisserver中目前没有这类可以实现分页查询的参数,那么该如何解决这个问题?这里我给出三个不断优化的解决思路。
2.方案1——获取所有查询结果前端分页
该方案顾名思义,获取到所有查询结果后在前端进行数据组织和分页。
优点:实现简单。
缺点:
a.当查询返回结果过大时,数据查询和传输时间都会很长
b.没有真正体现分页的优势,前端获取了所有数据,却数据展示率很低
c.arcgis一次查询返回结果的限制(需在AGS中手动设置最大返回数)
d.对arcgis服务器也有不小的压力
3.方案2——后台对所有查询结果进行缓存以支持前端分页
后台进行arcgis查询,将查询返回的结果全部缓存:包括数据总数以及数据详细信息。前端根据返回的总数来进行分页设置。进行分页跳转时,向后台发送请求后台根据缓存数据进行对应的分页数据获取和返回。
优点:
a.实现相对简单
b.查询返回给前端的数据量大大减少,减少数据传输耗时,加速查询效率。
缺点:
a.后台依然要获取到所有查询信息,ags的查询耗时
b.查询数据量太大,对ags服务器的压力也不小
c.缓存数据需要定时清理,否则造成太多不必要的缓存数据
d.依然需要处理设置AGS单次查询的最大返回数据量
4.方案3——基于ObjectID实现分页查询
a.先进行仅返回objectID字段的查询,获取到所有结果的总数和主键值,前端进行分页。
b.点击分页操作时,通过每个页面的objectID进行指定查询,展示结果。
优点:
a.仅查询ObjectID的方式不受ags默认返回数据量限制,而且返回结果数据量少,可以减少传输耗时。
b.ags对于仅查询ObjectID时,可以通过空间索引表快速返回查询结果(无需通过ObjectID再去关联查询属性数据表),其效率要高于还需返回其他属性信息的查询。可以大大提高查询效率。
-----欢迎转载,但保留版权,请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/
如果您觉得本文确实帮助了您,可以微信扫一扫,进行小额的打赏和鼓励,谢谢 ^_^