核密度估计(动态热图)

作者

托马斯·邦福特,马修·库德

联系

t在terriscope.fr的端口,在gmail.com的mathieu.coudert的端口

最后更新

2014/11/02

介绍

7.0 新版功能.

heatmap是在常规栅格网格上表示稀疏数据的常用方法,其中网格上的每个像素与其与稀疏数据集的每个样本之间的距离成反比。热图通常用颜色渐变来表示,其中色调编码数据样本的密度(可选)以及属性的强度。“heatmap”一词本身的含义各不相同。我们将用它来参考 Kernel Density Estimation 地图。

../_images/heatmap-wikipedia.png

核密度估计图示例(SA维基百科提供的图像CC)

配置

LAYER KERNELDENSITY. 热tmap矢量到栅格采用以下参数:

  • 连接“layername”:引用 NAMEGROUP A的 LAYER NAME GROUP TYPE

  • 处理“kerneldensity_radius=10”:高斯滤波器的半径(以像素为单位),以在所有功能累积后应用于位图阵列。值越大,计算过滤数据所需的CPU时间就越长。

../_images/heatmap-hsl-10.png

kerneldensity_radius设置为10(像素)的结果

../_images/heatmap-hsl.png

kerneldensity_radius设置为20(像素)的结果

  • 处理“kerneldensity_compute_borders=on_off”:半径为“r”的内核不能应用于沿图像边界的“r”像素。默认情况下,将输入数据源的搜索矩形扩展到包括当前地图范围之外的特征“R”像素,以便计算出的热图扩展到结果图像的整个范围。如果平铺软件对其请求应用“r”像素的元缓冲,则可以在平铺时禁用此功能,以避免计算此额外信息的性能开销。

  • 处理“kerneldensity_normalization=auto numeric”:如果设置为“auto”,则创建的栅格带将进行缩放,使其强度范围从0到255,以便完全跨越配置的颜色渐变。这种行为可能不可取(通常用于平铺),因为给定位置的像素强度将根据当前地图请求的范围而变化。如果设置为数值,则样本将乘以给定值。由用户决定使用哪一个缩放值使生成的像素跨越整个0-255范围;确定该值主要是一个尝试和错误的过程。超出0-255范围的像素将被剪裁为0或255。

../_images/heatmap-hsl-fix-scale.png

应用了固定比例。与之前的图像相比,红色区域的数量更多是因为所选的比例因子使大量像素超出了255限制。

../_images/heatmap-hsl-fix-scale2.png

应用较低的固定比例。没有像素达到255限制。

高级样本加权和过滤

CLASS / STYLE SIZE STYLE. EXPRESSIONMINSCALEDENOM / MAXSCALEDENOM CLASS 和/或 STYLE,

../_images/heatmap-hsl-density.png

当不应用样本加权或滤波时,代表纯特征密度的热图,实际的向量点被表示在旁边。(其他示例在每个示例上以属性权重呈现)

栅格颜色渐变

添加的功能 MS RFC 6:连续特征值的颜色范围映射 对于矢量特征,由于扩展到支持栅格层,将进行扩展以支持更复杂的颜色渐变。请注意,这些添加将应用于所有栅格分类,而不仅仅是热图图层。

  • Support for multiple stops COLORRANGE / DATARANGE.

    CLASS
      STYLE
        COLORRANGE  "#0000ff00"  "#0000ffff"
        DATARANGE 0 32
      END # STYLE
      STYLE
        COLORRANGE  "#0000ffff"  "#ff0000ff"
        DATARANGE 32 255
      END # STYLE
    END # CLASS
    

    备注

    DATARANGE`s span 0 to 255 with no overlap, and that the chosen `COLORRANGE

  • 处理范围_colorspace=rgb_hsl: RANGE

../_images/heatmap-rgb.png

在RGB空间内插入时冲掉颜色。

Mapfile 示例

MAP
  SIZE 1000 500
  EXTENT -180 -90 180 90
  NAME "test heat"
  IMAGETYPE "png"

  WEB
    METADATA
      "ows_srs" "epsg:4326  epsg:3857 epsg:900913"
      "ows_enable_request" "*"
    END # METADATA
  END # WEB

  PROJECTION
    "+init=epsg:4326"
  END # PROJECTION

  LAYER
    NAME "heatmap"
    TYPE raster
    CONNECTIONTYPE kerneldensity
    CONNECTION "points"
    STATUS on
    PROCESSING "RANGE_COLORSPACE=HSL"
    PROCESSING "KERNELDENSITY_RADIUS=20"
    PROCESSING "KERNELDENSITY_COMPUTE_BORDERS=ON"
    PROCESSING "KERNELDENSITY_NORMALIZATION=AUTO"
    OFFSITE 0 0 0
    CLASS
      STYLE
        COLORRANGE  "#0000ff00"  "#0000ffff"
        DATARANGE 0 32
      END # STYLE
      STYLE
        COLORRANGE  "#0000ffff"  "#ff0000ff"
        DATARANGE 32 255
      END # STYLE
    END # CLASS
  END # LAYER

  LAYER
      NAME "points"
      STATUS on
      TYPE POINT
      DATA "pnts.shp"
   END # LAYER
END # MAPFILE

PROCESSING

LAYER
  NAME "heatmap"
  ...
  PROCESSING "KERNELDENSITY_RADIUS=%radius%"
  SCALETOKEN
    NAME "%radius%"
    VALUES
      "0" "50"
      "25000000" "10"
    END # VALUES
  END # SCALETOKEN
  ...
END # LAYER

CLASS- >`源向量层上的样式->`size`语法,用于对每个示例应用非默认权重:

  • 从功能属性读取的权重:

    LAYER
      NAME "points"
      STATUS on
      TYPE POINT
      DATA "pnts.shp"
      CLASS
        STYLE
          SIZE [attribute]
        END # STYLE
      END # CLASS
    END # LAYER
    
  • 从非数字属性读取的权重:

    LAYER
      NAME "points"
      STATUS on
      TYPE point
      DATA "pnts.shp"
      CLASSITEM "risk"
      CLASS
        EXPRESSION "high"
        STYLE
          SIZE 5
        END # STYLE
      END # CLASS
      CLASS
        EXPRESSION "medium"
        STYLE
          SIZE 3
        END # STYLE
      END # CLASS
      CLASS
        EXPRESSION "low"
        STYLE
          SIZE 1
        END # STYLE
      END # CLASS
    END # LAYER