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

如何使用Mapbox JS通过影像服务基于图例值过滤未分类栅格?

基于栅格影像服务图例值过滤未分类栅格的解决方法

首先明确:map.setFilter()是针对矢量图层的要素属性过滤设计的,对栅格图层完全不适用——栅格是像素级数据,没有矢量那样的要素属性结构,必须用**栅格函数(Raster Function)**来实现像素值的过滤逻辑。

具体实现步骤

  • 先获取你的影像服务图层实例(假设图层ID为rasterLayer):
    const rasterLayer = map.findLayerById("rasterLayer");
    
  • 根据未分类值的类型选择对应栅格函数:
    1. 固定值过滤(比如未分类值为0):用Remap函数将目标值转为透明的NoData
    const rasterFunction = {
      "rasterFunction": "Remap",
      "arguments": {
        "InputRaster": rasterLayer,
        "RemapTable": [
          [0, 0, "NoData"] // 将值为0的未分类栅格设为透明
          // 可追加更多过滤值,比如[999, 999, "NoData"]
        ],
        "AllowUnmatched": true // 保留不在映射表内的有效分类值
      }
    };
    
    1. 值范围过滤(比如未分类值是小于等于0的区间):用Con函数按条件保留有效像素
    const rasterFunction = {
      "rasterFunction": "Con",
      "arguments": {
        "InputConditionRaster": {
          "rasterFunction": "GreaterThan",
          "arguments": {
            "Raster": rasterLayer,
            "Constant": 0 // 仅保留值大于0的像素
          }
        },
        "TrueRaster": rasterLayer,
        "FalseRaster": "NoData" // 不符合条件的像素设为透明
      }
    };
    
  • 将栅格函数应用到图层:
    rasterLayer.renderer = new ArcGISImageServiceRenderer({
      rasterFunction: rasterFunction
    });
    

内容的提问来源于stack exchange,提问作者neetu gulati

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 20:50:28