当远程层返回空响应时如何避免MapServer错误

问题描述 投票:0回答:1

我的 MapServer 包含一个从参数化 Web 服务获取 GeoJSON 特征的层。这些要素是通过聚合点生成的多边形,每个要素都有一个属性,指示聚合的点的数量。我在地图文件中有不同的类,根据点数以不同的颜色显示每个要素。

但是,根据参数值,Web 服务可能会返回没有任何功能的响应,因此也没有属性,这会导致以下 MapServer 错误:

msOGRLayerInitItemInfo():OGR 错误。字段名称无效:COLLECTION_POINTS 层中的 num_points

这是从参数化 Web 服务获取 GeoJSON 特征的相应图层的地图文件:

LAYER
  NAME "COLLECTION_POINTS"
  TYPE POLYGON
  CONNECTIONTYPE OGR

  VALIDATION
    "col" "^[0-9]+$"
  END

  CONNECTION "http://myservice/%col%/agg_points"
  DATA "agg_points"

  # [snip metadata and projection stuff]

  CLASS
    NAME "<= 100 pts"
    EXPRESSION ([num_points] < 101)
    STYLE
      COLOR "#D88A01"
      OUTLINECOLOR "#D88A01"
    END
  END
  CLASS
    NAME "<= 500 pts"
    EXPRESSION ([num_points] < 501)
    STYLE
      COLOR "#EA8015"
      OUTLINECOLOR "#EA8015"
    END
  END
  CLASS
    NAME "> 500 pts"
    EXPRESSION ([num_points] > 500)
    STYLE
      COLOR "#BC2110"
      OUTLINECOLOR "#BC2110"
    END
  END
END

有没有办法避免 MapServer 错误?例如,在类表达式中使用某个属性之前是否可以检查该属性是否存在?或者我应该更好地调整我的客户端来处理 MapServer HTML 错误响应?

geojson mapserver map-files
1个回答
0
投票

LAYER
内尝试使用:

PROCESSING "EMPTY=IGNORE"

PROCESSING "EMPTY=REPLACE default_data_source"

使用第二种解决方案,您应该将 default_data_source 定义为非空默认层,当您的请求失败时将加载该默认层。

© www.soinside.com 2019 - 2024. All rights reserved.