ArcGIS分割柵格·使用模型構建器
阿新 • • 發佈:2018-12-13
問題
最近遇到一個分割柵格資料的需求,把一張大的影像圖按標準比例尺分幅裁剪為多張影像。看起來很簡單,但實際操作過程中還是踩到了一些坑,諸多嘗試後使用模型構建器比較圓滿解決了問題,在這裡記錄下,以饗來者。
思路
- 製作10000比例尺分幅圖框;
- 使用分幅圖框對柵格進行裁剪;
過程
-
製作分幅圖框
製作分幅圖框方法比較多,這兒使用的是建立漁網工具:
- 漁網原點和右上角座標取決於影像範圍,為方便計算圖幅號,座標取整到10000;
- 參考之前用過的數字正射影像(應該有數字正射影像圖生產規範,不過沒找到),10000比例尺圖幅尺寸應該是5000*5000,其他比例尺圖幅範圍可參照公式:圖幅尺寸=比例尺/2(不保證正確性);
- Y 軸座標用於定向漁網。按照原點座標與 y 軸座標的連線所定義的角度旋轉漁網。
漁網建立好後可計算好圖幅號,方便分幅影像命名。新建個TEXT欄位,10000比例尺圖幅號計算可參考以下表達式(解析程式用Pyhon)
str( !shape.extent.YMin!/10000 )+"-"+str( !shape.extent.XMin!/10000 )+"DOM"
這樣就得到可用於裁剪柵格的向量圖層了。
如果分幅影像需要保留一定的接邊範圍,可以對圖框做一個緩衝。
-
柵格裁剪
柵格裁剪首先想到的就是用分割柵格工具。
應該是10.4.1的BUG,分割工具不能正常使用(測試10.0的分割柵格功能一切正常,不過10.0沒有POLYGON_FEATURES分割方法,故不採用)
現成工具不能用,就只能自己動手。裁剪工具可正常使用,可以自定義輸出範圍或使用要素範圍進行裁剪,不過這個範圍是整個要素類範圍,不是針對單個要素。
要實現針對單個要素的裁剪,大致有兩種思路:
- 使用分割工具把圖框分割成單個的要素類,再用裁剪工具的批處理。但這種方式太麻煩,生成一大堆過程資料不說,速度還慢。
- 迴圈圖框要素,獲取每個要素範圍實現裁剪;
第二種思路可行性較高,ArcGIS的模型構建器和Python指令碼應該都能很好的勝任,而且可以做成通用工具,便於後續使用。
這裡採用模型構建器,思路比較簡單,迭代要素選擇來獲取單個要素範圍,再用這個範圍來裁剪影像。
- 模型構建器其實很簡單,參考幫助,注意獲取變數和使用行內變數就行;
- 按欄位分組中選擇的欄位值會被用於裁剪後的柵格命名;
- 使用輸入要素裁剪可實現不規則裁剪(比如按行政界線裁剪)
設計好儲存模型到工具箱,這樣一個裁剪工具就做好了。
好了,就是這樣,放個工具箱連結,軟體是ArcGIS10.4.1,需要的可以在這裡下載。