zoukankan      html  css  js  c++  java
  • 基于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/

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

                                    

  • 相关阅读:
    史上最详细 github 使用教程(英文烂的血泪史)
    如何解决跨域问题
    KSImageNamed 安装
    VVDocumenter插件安装
    通过appearance设置app主题
    UITableViewCell注册情况
    iOS9.2 xcode 7.1.1真机测试
    UIAlertController iOS9
    Values of type 'NSInteger' should not be used as format arguments; add an explicit cast to 'long' instead
    GIT
  • 原文地址:https://www.cnblogs.com/naaoveGIS/p/9186845.html
Copyright © 2011-2022 走看看