Выражения данных можно создавать для изменяемых данными элементов в операционной панели. Они позволяют создавать эффективные операционные панели, создавая надежные визуализации с использованием наборов данных, к которым у вас есть доступ. Ниже приведены рекомендации по созданию эффективных выражений данных.
Примечание:
Вы можете просмотреть примеры выражений данных, они помогут вам начать работу с выражениями.
Выражения данных имеют ограничения по производительности и не должны использоваться для сложных рабочих процессов или больших наборов данных. В этих ситуациях, если вы работаете с собственными данными, рекомендуется перестроить их и публиковать размещенные слои.
- При запросе данных слоя с помощью функций FeatureSet запрашивайте только те объекты и столбцы, которые вам нужны, а геометрические данные извлекайте только при необходимости.
Следующее выражение данных извлекает из слоя только необходимые столбцы без данных геометрии, указывая их в функции FeatureSetByPortalItem. Затем функция Filter используется для возврата только тех строк, которые необходимы для визуализации.
var fs = Filter(FeatureSetByPortalItem(Portal('https://www.arcgis.com'),'f8492125f78445b284751ced4e9d6573',0,['Waterbody_Type', 'Sample_Date', 'Mercury'], false),'Mercury > 0.3');
- Вы можете повторно использовать выражения данных в нескольких элементах одной операционной панели. Избегайте создания нескольких выражений, которые обрабатывают и возвращают одни и те же данные.
- Избегайте использования функций геометрии в выражениях данных. Функции геометрии могут влиять на быстродействие операционной панели. Вместо этого обработайте свои данные заранее.
Следующее выражение выполняет методы геометрии Contains() и Buffer() для поиска установок добычи ископаемого топлива в пределах 50 миль от национальных лесов. Информация о местоположении национальных лесов и установок добычи находится в двух разных слоях. Поскольку методы геометрии выполняются для каждого национального леса в наборе данных по циклу, выражение выполняется медленно.
var p = 'https://arcgis.com/'; var nf = '% NF'; var nfs = Filter(FeatureSetByPortalItem(Portal(p),'3d86e0ee5f34471ab30a1ad19a08c21f',0),'NAME LIKE @nf'); var wells = FeatureSetByPortalItem(Portal(p),'f30ebe47eebc4534b7a385835d6bfedb',0); var Dict = { 'fields': [{ 'name': 'NF_name', 'type': 'esriFieldTypeString' }, {'name': 'area','type': 'esriFieldTypeDouble'}, {'name': 'n_wells','type': 'esriFieldTypeInteger'}], 'geometryType': '', 'features': []}; var counts = 0; var index = 0; for (var nf in nfs) { counts = Count(Contains(Buffer(nf, 50, 'miles'), wells)) Dict.features[index] = { 'attributes': { 'NF_name': nf.NAME, 'area': nf.SQMI, 'n_wells': counts }} index++; }; return FeatureSet(Text(Dict));
- Избегайте использования выражений данных для операций или запросов, которые могут быть выполнены с помощью стандартной конфигурации элементов операционной панели.
Например, любой управляемый данными элемент может использовать фильтры для получения результата следующего выражения:
return Filter(FeatureSetByPortalItem(Portal('https://www.arcgis.com'),'f8492125f78445b284751ced4e9d6573',0,['Waterbody_Type', 'Sample_Date', 'Mercury'], false),'Mercury > 0.3');
- Избегайте обработки больших наборов данных с использованием выражений данных.
Следующее выражение преобразует значения столбца, разделенные запятыми, в отдельные строки. Эта обработка выполняется в цикле, по одному объекту за раз, что приводит к замедлению работы выражения.
var fs = FeatureSetByPortalItem(Portal('https://www.arcgis.com'), 'd10b9e8dbd7f4cccbd0a938a06c586e9',0,['Report_road_condition'], false); var choicesDict = {'fields': [{'name': 'split_choices', 'type': 'esriFieldTypeString'}], 'geometryType': '', 'features': []}; var index = 0; for (var feature in fs) { var split_array = Split(feature["Report_road_condition"], ',') var count_arr = Count(split_array) for(var i = 0; i < count_arr; i++){ choicesDict.features[index] = { 'attributes': { 'split_choices':Trim(split_array[i]), } } index++;} }; return GroupBy(FeatureSet(Text(choicesDict)),['split_choices'], [ {name:'split_count',expression:'split_choices',statistic: 'COUNT'}]);
- Устанавливайте интервалы обновления для выражения данных только в том случае, если базовые данные обновляются. Установите интервал обновления в значение, отражающее частоту обновления данных.
- Сохраните копии выражений данных с помощью текстового редактора. Неиспользуемые выражения данных на операционной панели не сохраняются.
- Выражения данных не следует рассматривать как замену хорошего моделирования данных. Везде, где это возможно, обрабатывайте свои данные, прежде чем переносить их на операционную панель.