首页 / 浏览问题 / WebGIS / 问题详情
wfs查询结果超限
26EXP 2022年06月25日

参照 https://blog.csdn.net/supermapsupport/article/details/104127433 内容实现WFS查询时,

调用iServer发布的WFS服务时,查询报错了;

经测试,设置查询体1-84个参数能查到结果,增加到85个就返回以下的错误:

<ServiceExceptionReport xmlns="http://www.opengis.net/ogc" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="1.2.0" xsi:schemaLocation="http://www.opengis.net/ogc http://127.0.0.1:8090/iserver/services/data-test/wfs100?request=getschema&file=wfs,1.0.0,OGC-exception.xsd">
	<ServiceException>
		java.lang.IndexOutOfBoundsException: Index: 0, Size: 0
	</ServiceException>
</ServiceExceptionReport>

1个回答

您哈,这个报错还是比较清晰的,没有获取到该位置元素,通常以下两种情况。

一:索引超出边界异常
二:获取数据失败异常

因此根本原因是没有数据,建议您确定下数据范围以及是否为空,超界查询是不可以的。

希望可以帮助到您。
9,538EXP 2022年06月27日
能确保有足量数据,总共86条数据,从这86条数据中查询任意84条数据都可以,只要查询85个或更多就会报错

那怎么办呢?
你指定85和86查呢?

单独查85或86,查85和86都没问题,从这86条数据中任意拿84条数据都没问题

任意拿85条,任意拿86条都会报错

<ServiceExceptionReport xmlns="http://www.opengis.net/ogc" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="1.2.0" xsi:schemaLocation="http://www.opengis.net/ogc http://127.0.0.1:8090/iserver/services/data-test/wfs100?request=getschema&file=wfs,1.0.0,OGC-exception.xsd">
	<ServiceException>
		java.lang.IndexOutOfBoundsException: Index: 0, Size: 0
	</ServiceException>
</ServiceExceptionReport>

你这份数据是哪里生成的呢?建议你使用其他数据和这份数据在数据集层面重新复制一份后发服务看一下是否会报错。

定位一下是这份数据的问题的,还是你使用任意数据都有这个情况。
任意数据都存在,我们的数据CODE字段数据有一定的规则

数据规则:

1、以字母为开头;

2、字母后面数字递增,99及以内,不足10的补0,比如A的第2个数据显示为A02

3、数据现在有A~J

查询数据的C01-C86数据都有

查询C01~C86的每一个都有,任意取84个都没问题,任意取85个都报错

您好,我这边没有复现这个问题。

你可以用这份数据查询一下看看是否正常: http://support.supermap.com.cn:8090/iserver/services/data-world/wfs100

若正常建议您还是从数据本身来排查,比如在数据端重新处理数据(复制数据集、或者新建数据集追加行等形式)后再重新发布服务。
 

如果给您提供的数据仍然出现查询数不能超过84个,

1.确定下是否设置了wfs的maxfeatures查询上限,若没有也可以尝试手动增大。

iserver默认wfs查询上限是2000。
在webapps\iserver\WEB-INF文件夹下的iserver-services-interfaces.xml
文件里interface节点下添加期望返回结果,例如:

<config class="com.supermap.services.wfs.WFSConfig"><maxFeatures>期望结果</maxFeatures></config>

2.检查代码中是否有约束。

额外参考:https://blog.csdn.net/supermapsupport/article/details/49995463

1、数据是咱超图自己处理的(项目上超图方做的数据,用正则(PropertyIsLike)的方式查全部没问题,单查(PropertyIsEqualTo)某85个就出不来)

2、iserver中对应的文档中确实没有maxfeatures配置参数,加上后,重启服务,查询还是报相同的问题

3、代码是单纯的Ajax请求

怀疑是ajax请求的post传递参数长度出了问题,但是不知道iserver在哪里配置相关的参数

下面是85条数据报错:

下面是84条数据,就没问题:

了解了,你私信我下联系方式,我这边给你后续测试和情况确认沟通。
联系方式已发送
...