事情是這個樣子的,有客戶提出來需要某省的等高線數據,等高線間隔爲5米。5米?數據量太大了吧,客戶說稍微再大點木有關係。於是,初步計劃輸出間隔爲15米的等高線。所用數據爲該省30米分辨率的dem數據。思路:使用等值線工具,輸入dem輸出等高線。是不是很簡單。然而。。。
第一個坑,拿到dem數據要記得要先檢查下數據情況,是不是有nodata情況存在
再arcgis pro 中加載dem。
發現存在-999,幹掉他!
方法:複製柵格工具。設置忽略背景值-999
第二個坑,大區域高密度等高線生成需要時間超級長
等值線工具運行了兩個小時
然而,數據量太大,客戶說太密集了看不出變化,你抽稀一下吧
嗯,客戶是上帝
解決方法一:重新生成等高線
解決方法二:對已經生成的等高線進行篩選,再導出
考慮到重新生成等高線用時太久,我選擇方法二。(事實證明這個方法不明智,一點都不明智!不明智!)
查看了下等高線高程字段,發現有好多都是整百,那我直接取一百的整數倍的等高線不就可以了麼?
第三個坑,按屬性選擇中“包括值”條件
結果選出的數據只有高程值爲0的幾條!
原因:高程字段爲數值型字段,這個公式對字符型有效。
好吧,換一個思路,用字段計算器,篩選能被100整除的。
過程是,新建字段,使用字段計算器。這裏就遇到一個小坑
第四個坑,數據量大的時候,新建字段用時也比較長
這個沒辦法避免,新建字段成功後打開字段計算器
第五個坑,寫代碼塊注意格式,空格、冒號不能少
定義函數以後,函數內容前一定要加空格!!!
在這裏沒注意,被這個空格坑了好久,這也是我覺得當時應該選擇直接通過dem新生成等高線的原因
def qz(num):
if num % 100 == 0:
return 1
else:
return 0
取整代碼塊,有需要自取
字段計算完成,按照該字段進行屬性篩選,篩選出bj爲1的要素,將這些要素導出:
結束。
嗯,雖然選擇的解決方法不是用時最短的,但是遇到坑跳出坑的過程就是學習