Функции запроса возвращают не все пересекающиеся функции

#javascript #arcgis-js-api #esri-maps

#javascript #arcgis-js-api #esri-карты

Вопрос:

Предполагаемый эффект

Когда пользователь нажимает на полигональный объект (округ, регион или район / муниципалитет) или использует виджет «Рисовать», на карточке панели мониторинга отображается количество пересеченных точечных объектов, возвращенных queryFeatures() (см. Ниже).

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

Проблема

Максимальное количество возвращаемых пересекающихся объектов составляет 2000, даже если было выбрано более 2000 точечных объектов.

На фотографии ниже есть только «2000 ископаемых объектов в этом районе!», Когда должно быть возвращено более 3000 объектов.

quot;2000 ископаемых сайтов должно быть болееquot; 3000

Устранение неполадок

Проблема устранена, когда вместо запроса векторного слоя localitiesLayer запрашивается представление векторного слоя. Это приводит к неразрешимой проблеме количества возвращаемых местоположений queryFeatures , изменяющихся в зависимости от уровня масштабирования (как подробно описано в ссылке API для queryFeatures FeatureLayerView).

Поскольку кажется, что я застрял, используя запрос на стороне сервера, мне нужно понять, почему это происходит при таком, казалось бы, произвольном числе.

Сначала я подумал, что это связано с возможными проблемами топологии между объектами, но почему это повлияет на полигон, созданный виджетом рисования? Перед написанием этого вопроса я также запустил инструмент интеграции на всех слоях объектов, чтобы убедиться, что не было никаких несовпадающих полигонов.

Вопрос

Почему верхний предел объектов возвращается queryFeatures() на localitiesLayer 2000, даже если более 2000 точечных объектов пересекаются с выбранным полигоном?

Почему запрос с помощью представления векторного слоя устраняет эту проблему (хотя, как описано выше, не является допустимым решением этой проблемы)?

CodePen приложения с ошибкой

Ответ №1:

Обычно службы функций имеют максимальное количество функций для извлечения в одном запросе. Это то, что здесь происходит.

Вы можете проверить конечную точку службы слоя (LAU_Localities_View — 0), чтобы найти эти значения в Max Record Count , здесь установлено значение 2000 .

Поэтому вам придется использовать какой-то другой метод, чтобы получить все значения. Один простой способ — выполнить итерацию и запрос с дополнительным условием, используя поле в качестве последнего индекса, например OBJECTID . Вам нужно будет упорядочить результат по полю индекса.