在Arcade表达式中使用GeoJSON Services

问题描述

我正在尝试使用ArcGIS Javascript API在地图中使用带有GeoJSON服务的Arcade表达式。 Arcade表达式的目的是返回与用户单击的县相交的湖泊数。湖泊和县多边形都是GeoJSON服务。用ArcGIS Feature Layer服务交换Lakes GeoJSON服务可以使表达式正常运行,并返回与县GeoJSON服务相交的湖泊计数。

  var template = {
  title: "{LABEL}",content: "{expression/countyInfo}",expressionInfos: [
  {
    name: "countyInfo",title: "Marker Info",expression: `

    var lake = FeatureSetByName($map,'Lakes');

    var lakeIntersect = Intersects(lake,$feature);

    var cnt = Count(lakeIntersect);

    return \` 
    Number of lakes: \${Text(cnt,"####")}   
    \`
    `
  }
  ]
};

我尝试将FeatureSetByName函数中的$ map全局变量更改为其他全局变量选项($ datastore,$ feature,$ layer),但是没有运气。

有人从GeoJSON服务创建功能集成功吗?您是如何声明的?

编辑

可以找到代码here

解决方法

如果我没记错的话,像FeatureSet这样的FeatureSetByName检索方法仅适用于FeatureLayer。在这方面,您将无法使用GeoJSONLayer

关于ArcGIS文档中的FeatureSetByName

根据要素图层在地图或要素服务中的名称来创建要素集。

ArcGIS Arcade - FeatureSetByName

您可以尝试创建FeatureSet,构造函数将GeoJSON作为参数。然后在脚本中使用此FeatureSet

ArcGIS Arcade - FeatureSet type

ArcGIS Arcade - FeatureSet function

另一种选择是检索GeoJSON并使用它创建一个FeatureLayer