新人想请问下,如何获取超过maxRecordCount数量的记录

用的公司的服务,他maxRecordCount都已经设置成了1万了。但查询的时候(where时间段),看了下用returnCountOnly=True来查询的话,有大概16万条记录。这样的话,那返回详细的记录的时候,就只能返回1万条。那怎么样才能请求到所有的16万条呢。
已邀请:

swaggyP - 网络粉刷匠

赞同来自:

分页查询 或者设置maxRecordCount更大

nisong

赞同来自:

经过这么多天的查资料。并且参考了下面社区的回答,总结一下。
https://community.esri.com/thread/119950
方法1:首先在url链接参数中returnIdsOnly设成true,然后观察下那些objectId。因为设置了maxRecordCount的原因,所以你只能看到maxRecordCount条。
之后就可以构建一个字符串,里面是那些你想看到的但没显示出来的objectId的集合(逗号分隔),然后就拼接到query的url后面,如
http://server/...../0/query?f=json,objectIds=99,100,101,102
或者直接用objectid ASC排序,然后每次都取max的objectId(即取json最后一个)。然后url参数把where=objectIds>max的objectId,循环N次直到返回的记录数少于maxRecordCount,则说明所有记录都取到了。(注:查询的时候并不需要把returnIdsOnly设成true,那只是为了观察)。
这个是经过实测可行的。
方法2:使用resultOffset和resultRecordCount参数。
参考文档:https://developers.arcgis.com/rest/services-reference/query-feature-service-layer-.htm
文档里说:
For example, if maxRecordCount is 1000, you can get the next 100 records by setting resultOffset=1000 and resultRecordCount = 100, so the query results will return the results in the range of 1001 to 1100.
意思是resultOffset的作用是跳过N条记录,那我第一次跳过maxRecordCount条,又取maxRecordCount条,第二次就跳过maxRecordCount乘2条,又取maxRecordCount条,以此类推,就可以取到所有记录。至于循环多少次,可以先把returnCountOnly设成true,看看总记录数有几条,然后除以maxRecordCount再加1不就是循环次数了。
并且上面的社区链接里也有人提到这种方法,这种需要在'supportsPagination'里设置了'advancedQueryCapabilities'.
不过我设置了也不行,不知道为什么,可能是我其他什么方面做得不对。反正我是失败了。
方法3:直接利用第三方开源模块,import restapi
这种方法适合我这种py开发者,直接用第三方的模块,毕竟python就以第三方模块多闻名嘛。
作者的git,自己装直接import:https://github.com/Bolton-and-Menk-GIS/restapi
不过这方法我没试过,有兴趣的人可以去试试然后告诉我好使不好使。

要回复问题请先登录注册