分段拉伸渲染模板制作
在“环境镶嵌数据集的渲染模板定制”一文中,我们分享了多种渲染模板的基本使用方法。在实际应用中,有的同学想实现能够进一步控制拉伸的分段颜色渲染方式,如下图右侧所示,那今天就来介绍具体的实现方法。
如果我们想对镶嵌数据集中所有栅格数据采用统一标准的渲染模板,镶嵌数据集统计值计算出来的不是所有栅格数据的最大和最小值,那么首先我们可以生成一个模板的栅格文件(按照我们所指定的栅格数据范围),然后对模板的栅格文件进行分段的拉伸渲染,保存渲染模板文件,应用到镶嵌数据集发布的影像服务上。
一、生成模板栅格文件
采用桌面脚本工具,根据模板的预定最大和最小值,快速生成模板栅格文件。
如下图所示,为使用上述工具生成的指定数值范围的栅格文件。
上述生成模板栅格的脚本如下所示,利用构建的numpy数组转换成栅格文件。
import numpy
import arcpy
#栅格模板最大值
maxValue = arcpy.GetParameterAsText(0)
#栅格模板最小值
minValue = arcpy.GetParameterAsText(1)
#输出栅格的存储路径
filePath = arcpy.GetParameterAsText(2)
maxValue = int(maxValue)
minValue = int(minValue)
#这个函数求数字的中间约数
def showMiddleFactor(num):
count=num/2
factorList = []
while count>1:
if num%count==0:
factorList.append(count)
count-=1
else:
#如果是素数,则返回1
factorList.append(1)
#获取中间的约数
sortList = sorted(factorList)
listLen = len(sortList)
if listLen==1:
return sortList[0]
#基数和偶数个
else:
mid = sortList[(listLen+1)/2]
return mid
#计算栅格模板的行列数
valueInterval = maxValue - minValue
colNum = showMiddleFactor(valueInterval)
rowNum = valueInterval/colNum
rasterArr = numpy.arange(minValue,maxValue,1).reshape(rowNum,colNum)
rasterTemp = arcpy.NumPyArrayToRaster(rasterArr, arcpy.Point(0, 0),0.005,0.005)
rasterTemp.save(filePath)
arcpy.AddMessage("栅格模板生成!")
二、分段拉伸渲染模板制作
在生成的模板栅格文件上,右键单击“属性”,弹出的属性框中,选择拉伸的渲染方式,按照下图中所示顺序依次进行操作设置。
1.默认情况下,最大最小值为栅格文件的实际数值范围最大和最小值,也可以进行编辑;
2.选择拉伸渲染的色带;
3.选择“极值”拉伸方式;
4.统计数值,选择“From Custom Settings(below)”方式,保持下面统计值与模板栅格的最大和最小值一致;
5.单击“Labeling”按钮,弹出如下窗口,进行分段设置。如下图,输入分段数10,单击“Generate”按钮,列表中自动生成分段,可以按照实际渲染标准,手动修改列表中的value值,单击“OK”;
6.单击上述页面的“应用”按钮,单击“保存模板”按钮,弹出如下图所示窗口,此处可以修改模板文件的名称,单击“保存”生成渲染模板文件。
注意:后续不要再修改此模板文件的名称,在模板文件内部已经生成了相应的名称,将模板配置到影像服务上时,显示的是模板文件内部的名称。
如下图所示,为应用分段拉伸渲染样式的栅格数据展示效果。上述渲染模板可以应用到镶嵌数据集发布的影像服务上。具体模板使用方法参见“环境镶嵌数据集的渲染模板定制”。
如果各位环保的Giser有更多应用需求相关的解决方案问题,欢迎留言一起讨论。
想了解ArcGIS最新的技术动态和环保最新的应用,请关注微信公众号“环保GIS技术与应用”