栅格GetFeatureInfo响应自定义

的默认输出。 GetFeatureInfo 对栅格层的请求仅包含所选像素的值,图像的每个波段对应一个像素值。例如,在发生 application/json 输出格式:

 {
 "type": "FeatureCollection",
 "features": [
   {
     "type": "Feature",
     "id": "",
     "geometry": null,
     "properties": {
       "GRAY_INDEX": 124,
     }
   }
 ],
 "totalFeatures": "unknown",
 "numberReturned": 1,
 "timeStamp": "2021-03-19T11:33:52.587Z",
 "crs": null
}

如果栅格图层与基于 ColorMap ,Geoserver允许在输出中包含每个 ColorMapEntry 与像素匹配。这是由一个 VendorOption ,它需要添加到 RasterSymbolizer 手里拿着 ColorMap

<sld:RasterSymbolizer>
   <sld:ColorMap>
       <sld:ColorMapEntry color="#0000FF" quantity="1.0" label="low"/>
       <sld:ColorMapEntry color="#FFFF00" quantity="124.81173566700335" label="mid"/>
       <sld:ColorMapEntry color="#FF7F00" quantity="559.2041949413946" label="high"/>
       <sld:ColorMapEntry color="#FF0000" quantity="55537.0" label="veryhigh"/>
   </sld:ColorMap>
   <sld:ContrastEnhancement/>
   <VendorOption name="labelInFeatureInfo">add</VendorOption>
</sld:RasterSymbolizer>

以上所产生的产出 RasterSymbolizer 如下所示:

 {
 "type": "FeatureCollection",
 "features": [
   {
     "type": "Feature",
     "id": "",
     "geometry": null,
     "properties": {
       "GRAY_INDEX": 124,
       "Label_GRAY_INDEX": "mid"
     }
   }
 ],
 "totalFeatures": "unknown",
 "numberReturned": 1,
 "timeStamp": "2021-03-19T11:33:52.587Z",
 "crs": null
}

可以看到,标注的值已添加到带有属性名称的输出中 Label_GRAY_INDEX

这个 VendorOption labelInFeatureInfo 支持以下值:

  • add 标签值将添加到正常的GetFeatureInfo输出中。

  • replace 标签值将替换输出中的像素值。

  • none 不会向输出中添加任何标签。我们得到了一个正常的 GetFeatureInfo 回应。

另外,可以通过第二个标签来定制标签值的属性名称 VendorOption<VendorOption name="labelAttributeName">your custom name</VendorOption>

假设有一个 RasterSymbolizer 就像这样

<sld:RasterSymbolizer>
   <sld:ColorMap>
       <sld:ColorMapEntry color="#0000FF" quantity="1.0" label="low"/>
       <sld:ColorMapEntry color="#FFFF00" quantity="124.81173566700335" label="mid"/>
       <sld:ColorMapEntry color="#FF7F00" quantity="559.2041949413946" label="high"/>
       <sld:ColorMapEntry color="#FF0000" quantity="55537.0" label="very high"/>
   </sld:ColorMap>
   <sld:ContrastEnhancement/>
   <VendorOption name="labelInFeatureInfo">add</VendorOption>
   <VendorOption name="labelAttributeName">custom name</VendorOption>
</sld:RasterSymbolizer>

我们将获得以下输出,其中标签值的属性名称已被LabelAttributeName中指定的属性名称替换 VendorOption

{
 "type": "FeatureCollection",
 "features": [
   {
     "type": "Feature",
     "id": "",
     "geometry": null,
     "properties": {
       "GRAY_INDEX": 159,
       "custom name": "mid"
     }
   }
 ],
 "totalFeatures": "unknown",
 "numberReturned": 1,
 "timeStamp": "2021-03-19T11:50:32.433Z",
 "crs": null
}

我们一直在使用 JSON 以上示例的输出格式,但这两个 VendorOptions 适用于所有其他GetFeatureInfo输出格式。