基于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/

                                                                           如果您觉得本文确实帮助了您,可以微信扫一扫,进行小额的打赏和鼓励,谢谢 ^_^

                                

 

posted @ 2018-06-15 12:53  李晓晖  阅读(1556)  评论(4编辑  收藏  举报