【问题标题】:queryFeatures is not returning all intersected featuresqueryFeatures 没有返回所有相交的特征
【发布时间】:2021-04-26 16:33:39
【问题描述】:

预期效果

当用户单击多边形要素(县、地区或邻里/市镇)或使用“绘制”小部件时,仪表板卡片会显示queryFeatures() 返回的相交点要素的数量(见下文)。

localitiesLayer.queryFeatures(query).then(function(results) {
    var queriedLocalities = results.features;
    if (queriedLocalities.length > 0) {
        var fossilsFound = queriedLocalities.length;
    } 
}

问题

即使选择了超过 2000 个点要素,返回的相交要素的最大数量也是 2000 个。

在下面的照片中,只有“该地区有 2000 个化石遗址!”当应该返回超过 3,000 个特征时。

疑难解答

当不是查询 localitiesLayer 要素图层,而是查询要素图层 view 时,此问题已得到解决。这引入了无法解决的问题,即queryFeatures 返回的位置数量取决于缩放级别(详见API Reference for queryFeatures of FeatureLayerView)。

由于我似乎无法使用服务器端查询,我需要了解为什么会发生这种看似任意的数字。

起初我认为这与要素之间可能存在的拓扑问题有关,但为什么这会影响 Draw 小部件生成的多边形?在写这个问题之前,我还在所有要素图层上运行了集成工具,以确保没有任何不重合的多边形。

问题

为什么即使超过 2,000 个点要素与选定的多边形相交,queryFeatures() 上的 localitiesLayer 返回的要素上限仍为 2,000?

为什么使用要素图层视图进行查询可以解决此问题(尽管如上所述不是解决此问题的有效方法)?

CodePen of app with bug

【问题讨论】:

    标签: javascript arcgis-js-api esri-maps


    【解决方案1】:

    通常,要素服务在一次查询中可以检索到最大数量的要素。这就是这里发生的事情。

    您可以检查层的服务端点(LAU_Localities_View - 0)在Max Record Count中找到这些值,这里设置为2000

    因此,您将不得不使用其他一些技术来获得所有值。一种简单的方法是使用一个字段作为最后一个索引,使用额外的条件进行迭代和查询,例如OBJECTID。您必须按索引字段对结果进行排序。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-10-07
      • 1970-01-01
      • 1970-01-01
      • 2019-07-25
      • 1970-01-01
      • 1970-01-01
      • 2020-02-29
      • 1970-01-01
      相关资源
      最近更新 更多