【一起学习Arcade】(3):FeatureSet函数

第三篇记录下FeatureSet函数,FeatureSet我也翻译不到准确的意思,暂时译为要素集吧。

FeatureSet和Geometry函数算是Arcade中最重要的2个函数包,从数量上也可以看出。

Geometry针对的是单个要素,FeatureSet针对多个要素的集合,比如说要素类、图层等。

和Geometry函数中一样或相近的函数就不再记录。


一、FeatureSet函数

1、Attachments【附件】

返回与输入功能关联的附件列表。每个结果都包括附件的名称、内容类型、id和字节大小。

Count(Attachments($feature))

2、Average【平均数】

返回FeatureSet中给定数字字段的平均值。

$feature.population - Average($layer, 'population')

Average($layer, 'population / area')

3、Count【计数】

获取要素的个数。

Count($layer)

4、Distinct【不同】

从FeatureSet返回一组不同的值,或者可以理解为一组唯一值。

// 单字段  不同
Distinct($layer, 'Status')
// 多字段  不同
Distinct($layer, ['Status', 'Type'])
// 甚至可以分组,类似重分类
Distinct($layer, {
  name: "Density",
  expression: "CASE WHEN PopDensity < 100 THEN 'Low' WHEN PopDensity >= 100 THEN 'High' ELSE 'N/A' END"
})
// 更复杂的两个列
Distinct($layer, [{
  name: 'Score',
  expression: 'POPULATION_DENSITY * 0.65 + Status_Code * 0.35'
}, {
  name: 'Type',
  expression: 'Category'
}])

5、FeatureSet【构建FeatureSet

// 用属性构建
var d = {
  fields: [{
    alias: 'RANK',
    name: 'RANK',
    type: 'esriFieldTypeInteger'
  }, {
    alias: 'ELEV_m',
    name: 'ELEV_m',
    type: 'esriFieldTypeInteger'
  }],
  spatialReference: { wkid: 4326 },
  geometryType: 'esriGeometryPoint',
  features: [{
    geometry: {
      spatialReference: { wkid: 4326 },
      x: -151.0063,
      y: 63.069
    },
    attributes: {
      RANK: 1,
      ELEV_m: 6168
    }
  }]
 };
var features = FeatureSet(d)

// 用JSON构建
var features = FeatureSet('{"fields":[{"alias":"RANK","name":"RANK","type":"esriFieldTypeInteger"},{"alias":"ELEV_m","name":"ELEV_m","type":"esriFieldTypeInteger"}],"spatialReference":{"wkid":4326},"geometryType":"esriGeometryPoint","features":[{"geometry":{"spatialReference":{"wkid":4326},"x":-151.0063,"y":63.069},"attributes":{"RANK":1,"ELEV_m":6168}}]}')

6、FeatureSetByName【从名称获取FeatureSet

根据要素图层在地图或要素服务中的名称,从要素图层创建FeatureSet。

需要注意,因为图层名并不一定是唯一的,获得的FeatureSet也不是单一的。

var features = FeatureSetByName($map,'Bike routes', ['*'], true);
Count(features);

7、Filter【筛选

和筛选工具的作用相同。

// 筛选某个范围内的值
var result = Filter($layer, 'POPULATION > 10000');
// 筛选大于平均数的值
var averageValue = Average($layer, 'POPULATION')
var result = Filter($layer, 'POPULATION > @averageValue');

8、First【第一个

返回 FeatureSet中的第一个要素。

Area( First($layer) )

9、GetFeatureSet【通过Featurea获取FeatureSet

获取输入Featur所属的FeatureSet。

var fs1 = FeatureSetByName($map, 'Bike routes', ['*'], true);
var fs2 = top(fs1, 10)
var f = First(fs2)
// 参数2默认是“datasource”,还包括“root”和“parent”
GetFeatureSet(f, 'root')

10、GroupBy【分组统计

将统计信息作为一组分组值或不同值的FeatureSet返回。

// 单类型统计
var treeStats = GroupBy($layer, 'TreeType', { name: 'NumTrees', expression: '1', statistic: 'COUNT' });
// 多类型统计
var treeStats = GroupBy($layer,
  [  // fields/expressions to group statistics by
    { name: 'Type', expression: 'TreeType'},
    { name: 'Status', expression: 'TreeStatus'}
  ],
  [  // statistics to return for each unique category
    { name: 'Total', expression: '1', statistic: 'COUNT' },
    { name: 'AvgHeight', expression: 'Height', statistic: 'AVG' },
    { name: 'MaxPercentCoverage', expression: 'CoverageRatio * 100', statistic: 'MAX' }
  ]
);

11、Max【最大值】、Min【最小值】、Mean【平均值】等

这一类数学计算式,用法基本一致。包括Max【最大值】、Min【最小值】、Mean【平均值】、Sum【合计值等。

// 字段值取最大
Max($layer, 'population')
// 增加一些计算
Max($layer, 'population / area')

12、OrderBy【排序

和排序工具功能相同。

// DESC降序,ASC升序
OrderBy($layer, 'POPULATION DESC')

13、Top【从头部截取

例如,返回人口最多的前5个要素。

Top( OrderBy($layer, 'POPULATION DESC'), 5 )
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

规划GIS会

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值