轮廓¶
1。概述¶
MapServer可以从栅格源实时计算和渲染轮廓层。栅格源是一组栅格数据,代表数字高程模型(DEM)。有关DEMS的更多信息,请访问:http://en.wikipedia.org/wiki/digital_elevation_model
2。它是如何工作的¶
连接类型轮廓。新的类型是混合层,它有一个栅格数据源作为输入,矢量特征作为输出。最初,只支持这些向量特征的线表示。
由于内部层的类型为Vector,因此将支持查询并对向量(而不是原始栅格源)进行操作。将来,我们可能会看到需要添加查询栅格源的查询模式,但这不包括在这个工作阶段中。
要渲染轮廓层,需要使用以下选项在 Mapfile 中定义一个层:
将图层类型设置为线条。
将ConnectionType设置为Contour。
将数据设置为包含高程带的栅格文件。从MapServer 7.0.1开始,TileIndex也可以与 WMS时间 指定必须使用TileIndex的栅格。
使用处理“带区”指定要用作高程的带区,与常规栅格相同。
指定一个或多个类和样式以呈现线条特征。
处理设置:
这些选项应在层级别指定:
等值线间隔:等值线之间的高程间隔
轮廓级别:要提取的一个或多个“固定级别”的逗号分隔列表
轮廓项目:为要放置高程的项目(属性)提供名称。(可选)
如果要使用与比例相关的轮廓间距,还可以在轮廓间距或轮廓级别值中提供显式的最小/最大比例度。这是通过在值或值列表中添加可选的“miscaledenom,maxscaledenom:”前缀来完成的。请参见下面的示例。
简单层定义示例:
LAYER NAME "my_contour_layer"
TYPE LINE
STATUS DEFAULT
CONNECTIONTYPE CONTOUR
DATA "/mnt/data/raster/grib/dem.grib"
PROCESSING "BANDS=1"
PROCESSING "CONTOUR_ITEM=elevation"
PROCESSING "CONTOUR_INTERVAL=10"
CLASS
STYLE
WIDTH 2
COLOR 255 0 0
END
END
具有比例相关轮廓范围的图层定义示例:
LAYER NAME "my_contour_layer"
TYPE LINE
STATUS DEFAULT
CONNECTIONTYPE CONTOUR
DATA "/mnt/data/raster/grib/dem.grib"
PROCESSING "BANDS=1"
PROCESSING "CONTOUR_ITEM=elevation"
PROCESSING "CONTOUR_INTERVAL=0,25000:5" # interval of 5 for scales of 25000 or less
PROCESSING "CONTOUR_INTERVAL=25000,500000:10" # interval of 10 for scales in the 25000 to 500000 range
PROCESSING "CONTOUR_LEVELS=500000,0:10,25,50,100" # explicit list of levels for scales of 500000 and up
LABELITEM "elevation"
CLASS
STYLE
WIDTH 2
COLOR 255 0 0
END
LABEL
...
END
END
具有平铺索引和WMS时间支持的层定义示例:
LAYER NAME "my_contour_layer"
TYPE LINE
STATUS OFF
CONNECTIONTYPE CONTOUR
TILEINDEX "data/contour_ti.shp"
TILEITEM "location"
PROCESSING "BANDS=1"
PROCESSING "CONTOUR_ITEM=elevation"
PROCESSING "CONTOUR_INTERVAL=20"
CLASS
STYLE
WIDTH 1
COLOR 255 0 0
END # STYLE
END # CLASS
METADATA
"DESCRIPTION" "contour"
"wms_title" "contour"
"wms_timeitem" "TIME"
"wms_timeextent" "2004-01-01/2004-02-01"
END # METADATA
END # LAYER
2.1数据单元大小¶
gdal轮廓算法生成的数据通常具有高分辨率。很多点被用来精确地生成轮廓。在某些情况下(例如,形状平滑),您可能需要对线条进行归纳/简化。“[数据单元大小]”属性绑定表示从栅格文件中提取的扩展的单元大小。这与地图单元格大小不同。
在下面的示例中,我将形状概括为数据单元大小的25%的公差,以在所有比例下生成平滑轮廓:
LAYER
NAME "MyContourLayer"
STATUS DEFAULT
DATA "wind.tif"
TYPE LINE
CONNECTIONTYPE CONTOUR
PROJECTION AUTO END
PROCESSING "BANDS=1"
PROCESSING "CONTOUR_ITEM=elevation"
PROCESSING "CONTOUR_INTERVAL=0,0:1"
GEOMTRANSFORM (smoothsia(generalize([shape], 0.25*[data_cellsize])))
CLASS
EXPRESSION ([elevation] >= 0)
STYLE
COLOR 0 0 255
END # STYLE
END # CLASS
END # LAYER