分段拉伸渲染模板製作
在“環境鑲嵌數據集的渲染模板定製”一文中,我們分享了多種渲染模板的基本使用方法。在實際應用中,有的同學想實現能夠進一步控制拉伸的分段顏色渲染方式,如下圖右側所示,那今天就來介紹具體的實現方法。
如果我們想對鑲嵌數據集中所有柵格數據採用統一標準的渲染模板,鑲嵌數據集統計值計算出來的不是所有柵格數據的最大和最小值,那麼首先我們可以生成一個模板的柵格文件(按照我們所指定的柵格數據範圍),然後對模板的柵格文件進行分段的拉伸渲染,保存渲染模板文件,應用到鑲嵌數據集發佈的影像服務上。
一、生成模板柵格文件
採用桌面腳本工具,根據模板的預定最大和最小值,快速生成模板柵格文件。
如下圖所示,爲使用上述工具生成的指定數值範圍的柵格文件。
上述生成模板柵格的腳本如下所示,利用構建的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技術與應用”