首页 > 解决方案 > 在 Arcade Expression 中使用 GeoJSON 服务

问题描述

我正在尝试使用 ArcGIS Javascript API 在地图中使用带有 GeoJSON 服务的 Arcade 表达式。Arcade 表达式的目的是返回与用户单击的县相交的湖泊数。湖泊和县多边形都是 GeoJSON 服务。将湖泊 GeoJSON 服务替换为 ArcGIS 要素图层服务会导致表达式正常运行,并返回与县 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 服务创建 FeatureSet?你是怎么申报的?

编辑

代码可以在这里找到

标签: gisarcgisarcgis-js-api

解决方案


检索FeatureSetlike的方法FeatureSetByName仅适用于FeatureLayer我没有错的情况。在这方面,您将无法使用GeoJSONLayer.

关于FeatureSetByName在 ArcGIS 文档中

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

ArcGIS Arcade - FeatureSetByName

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

ArcGIS Arcade - 要素集类型

ArcGIS Arcade - FeatureSet 功能

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


推荐阅读