You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ArcGIS中如何设置未被过滤器选中点的模糊效果及修改模糊值?

ArcGIS 点图层模糊效果实现答疑

问题1:如何模糊未被过滤器选中的点?

在ArcGIS JS API中,通过FeatureEffect可以直接实现该需求:

  • 创建FeatureEffect实例,用filter参数定义需要保持清晰的点(即符合过滤条件的要素)
  • 用excludedEffect参数为未被过滤器选中的点设置模糊效果(比如blur(3px))
  • 将该FeatureEffect赋值给要素图层的featureEffect属性即可生效

核心逻辑示例:

// 假设已创建要素图层nzgdFeatureLayer和视图view
view.whenLayerView(nzgdFeatureLayer).then((layerView) => {
  nzgdFeatureLayer.featureEffect = new FeatureEffect({
    filter: new FeatureFilter({
      where: "你的过滤条件" // 例如"category='重点区域'",选中需要清晰显示的点
    }),
    excludedEffect: "blur(3px)" // 未选中的点应用3px模糊
  });
});

问题2:现有代码能否实现模糊所有点?如何修改?

你当前的代码无法实现模糊所有点的需求——因为filter的where条件设为"1=1",会匹配所有点,导致没有要素被排除,excludedEffect完全不会生效。

要实现模糊所有点,只需调整filter让其匹配不到任何要素,这样所有点都会被纳入排除范围,自动应用excludedEffect的模糊效果:

修改后的完整代码:

const nzgdFeatureLayer = new FeatureLayer({
  url: "url...",
  definitionExpression: ""
});

nzgdFeatureLayer
  .when(() => {
    view.whenLayerView(nzgdFeatureLayer).then((layerView) => {
      nzgdFeatureLayer.featureEffect = new FeatureEffect({
        filter: new FeatureFilter({
          where: "1=0" // 无匹配要素,所有点都被排除
        }),
        excludedEffect: "blur(3px)" // 所有点应用3px模糊
      });
    });
  })
  .catch((error) => console.log(error));

webmap.layers.push(nzgdFeatureLayer);

如果需要给每个点设置不同的模糊值,无需依赖FeatureEffect,可以通过渲染器的visualVariables结合要素属性实现:

nzgdFeatureLayer.renderer = {
  type: "simple",
  symbol: {
    type: "simple-marker",
    size: 8,
    color: "#0079c1"
  },
  visualVariables: [{
    type: "effect",
    field: "BLUR_VALUE", // 存储每个点模糊值的属性字段
    valueUnit: "px",
    effect: {
      blur: {
        property: "blur",
        value: {
          field: "BLUR_VALUE"
        }
      }
    }
  }]
};

内容的提问来源于stack exchange,提问作者Le Hoang

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 17:52:58