OpenLayers使用大量数据获取FeatureInfo WMS

时间:2013-08-07 09:06:53

标签: sql-server openlayers geoserver wms getfeatureinfo

我正在使用WMS图层,它有超过一百万个对象。如果我想从此图层获取要素信息,则不起作用,因为在2分钟后请求被拒绝(超时)。

然后我尝试发送带过滤器选项的请求来获取当前BBOX中的对象(现在是WFS)。结果与以前相同。

我正在使用Geoserver,数据库MS SQL和OpenLayers webmap JS库。我认为问题出在Geoserver上,因为他有大量数据提供服务的问题。如果我从具有较少数量的对象的其他图层获取信息,则它可以工作。

还有其他选择来获取数据吗?

1 个答案:

答案 0 :(得分:2)

可能会出现许多导致此问题的问题,可能不仅仅是地理服务器。 MS SQL中的表是否具有空间索引。你在MS SQL中对表做查询仍然很慢。当您从地理服务器请求数据时,它会将该查询传递给数据库。如果数据库花时间响应地理服务器最终会超时。

您可以尝试通过tweeking您的表并添加索引和/或查询提示来加速来自服务器的响应。如果不可能,您可以根据位置将数据分解为多个表。如果MS SQL的空间组件不能胜任,您可以尝试使用postgis或oracle。 (我从未使用MS SQL进行空间工作)

因此,请查看您的数据库性能,因为它更可能是地理服务器的问题。如果数据库的性能很好,那么您需要查看地理服务器如何连接到数据库以及如何在地理服务器中配置图层。

用于连接检查: 你有最新版的Geoserver吗? 数据存储插件是否使用最新且完全支持或仍在开发中。 您是否已将商店设置为公开主键或添加主键元数据表。 地理服务器是否根据用户层和数据量达到最大连接限制。 (注意,根据您的Geoserver版本和/或插件,其中一些选项可能无法使用)

对于图层检查: 该图层是否在其原生投影中提供。 图层边界框是否设置正确。

Geven认为这是在获取功能信息请求中发生的,我仍然认为问题最有可能出现在数据库设置中。

我希望有所帮助。