據(jù)處理全指南:從解壓到坡度分析)
簡介宜昌市DEM數(shù)字高程數(shù)據(jù)以30米分辨率刻畫地表起伏適合GIS專業(yè)學(xué)生、地理信息行業(yè)從業(yè)者以及使用ArcGIS、QGIS等軟件進行空間分析的工程師。資源覆蓋宜昌市行政邊界并外擴部分周邊區(qū)域可直接用于地形渲染、坡度坡向提取、流域邊界劃分、可視域分析以及城市規(guī)劃中的三維場景構(gòu)建。壓縮包內(nèi)共12個文件既有shp格式的市級邊界矢量數(shù)據(jù)及其dbf屬性表、prj投影文件也有tif格式的高程柵格、tfw地理參考文件和ovr金字塔預(yù)覽文件還包含用于索引的sbn、sbx、shx及xml元數(shù)據(jù)整體約63.67MB文件組織規(guī)范便于不同軟件讀取。目前已有824人學(xué)習下載。借助這些數(shù)據(jù)使用者可快速完成高程建模與地形指標計算也可將邊界shp與DEM疊加開展洪澇風險、光照遮擋等專題分析為教學(xué)實驗、科研入門和區(qū)域評估提供可靠的基礎(chǔ)底圖與練習素材。1. 一份宜昌市30米DEM數(shù)據(jù)包從解壓到坡度分析的完整落地思路做宜昌市域的地形分析時最煩人的往往不是算法而是找不到一張能把整個市完整框住的DEM。網(wǎng)上下來的數(shù)據(jù)要么是省域大圖裁不干凈要么精度低到連地名都看不出來。這份資源是一份覆蓋湖北省宜昌市的DEM數(shù)字高程數(shù)據(jù)分辨率30米壓縮包里還帶了本市級范圍的shp文件。有了這兩個東西你可以在ArcGIS里直接把宜昌的地形底圖拉出來做坡度、坡向、山體陰影、等高線甚至是簡單的匯水分析。適合做國土空間規(guī)劃、流域治理、選址評估的GIS從業(yè)者也適合想拿真實地形數(shù)據(jù)練手的測繪學(xué)生。下面按實際使用順序把這份數(shù)據(jù)的關(guān)鍵用法和坑都過一遍。2. DEM和shp的組合邏輯先搞清文件構(gòu)成與坐標系再動手很多人拿到zip包第一反應(yīng)是找到后綴為 .tif 的主文件雙擊試試能不能打開這沒錯但很容易漏掉坐標系問題。30米DEM的數(shù)據(jù)組織比普通圖片要嚴謹?shù)枚嘀魑募馀涮椎脑獢?shù)據(jù)文件、投影文件甚至shp邊界的編碼格式都會影響后續(xù)分析是否正確。這一章先把包內(nèi)文件和坐標系講透因為后面所有操作都建立在這兩個基礎(chǔ)上。2.1 一個標準的30米DEM壓縮包里面應(yīng)該有什么這類高程數(shù)據(jù)常見的主格式是GeoTIFF也可能打包成IMG或DAT但無論是哪種核心信息都在同名輔助文件里。打開zip先看文件結(jié)構(gòu)不要只認tif。通常一個完整的宜昌市DEM包應(yīng)該包含下面這些類別我列一個清單文件類型文件擴展名作用注意事項柵格主文件.tif / .img存儲高程值像元值即海拔米值域一般為幾十到兩千米負大值或-9999是NoData坐標世界文件.tfw / .jpw描述柵格位置與像元大小丟失后無法定位慎刪坐標系描述.prj保存投影和地理坐標系WKT文本打開前先讀這個決定要不要重投影輔助統(tǒng)計文件.aux.xml緩存統(tǒng)計信息和拉伸直方圖沒有不影響系統(tǒng)會重新生成邊界shp.shp .shx .dbf .prj宜昌市行政范圍矢量邊界四個主文件缺一不可缺少任意一個shp都無法加載在ArcGIS中讀取shp時如果只是把.shp拖進地圖系統(tǒng)也會去找同名的.shx和.dbf。缺任何文件都會報“缺少Shapefile組件”的錯誤。不少人栽在這個細節(jié)上以為下載不完整其實只是漏了小文件。另外包里可能有Readme.txt別刪里面偶爾會寫數(shù)據(jù)坐標系和采集時間等關(guān)鍵信息。30米DEM的柵格主文件通常是一整塊覆蓋全市的大tif但也可能按1:10000標準分幅切成若干小塊特別是從地理空間數(shù)據(jù)云下載的分幅產(chǎn)品。如果看到一堆帶行列號的文件比如srtm_67_05.tif那說明需要先鑲嵌再裁剪。記住這個判斷邏輯后面第3章的Mosaic操作會用到。2.2 30米數(shù)據(jù)算什么精度它適合哪些事不適合哪些事30米分辨率意味著一個像元在地面上對應(yīng)大約30×30米的正方形區(qū)域900平方米的高程取一個平均值。這個精度在宏觀分析里很香但并非所有任務(wù)都適合。做市域尺度的地形類型劃分、徑流方向通量計算、山體陰影渲染它完全夠用要是拿它去找某個村莊附近的小沖溝那結(jié)果只能說“僅供參考”。給一個參照系方便判斷手里項目該不該用這一層數(shù)據(jù)分辨率地面單元大小適合場景不適合場景5米約25平方米工程選址、小流域治理大范圍數(shù)據(jù)處理慢文件體積大12.5米約156平方米鄉(xiāng)鎮(zhèn)規(guī)劃、中小水庫匯水分析單體建筑級排水設(shè)計30米約900平方米市縣宏觀地形、坡度分區(qū)宅基地級填挖方計算90米約8100平方米省域、氣候帶分析市級細部地形表達宜昌地形差異很大西部是山區(qū)東部往江漢平原過渡沿江一帶地勢平緩。30米的數(shù)據(jù)能把這種宏觀格局表達清楚但到了平坦區(qū)域比如枝江一帶地面起伏只有幾米柵格化的高程噪聲會掩蓋真實微地形。所以后面第4章會專門講平坦區(qū)域的處理。2.3 坐標系和投影坡度算錯的最大元兇這部分必須單獨說因為絕大多數(shù)坡度分析翻車都栽在坐標系上。DEM的高程值單位是米而地理坐標系也就是經(jīng)緯度的水平單位是度。直接把WGS1984經(jīng)緯度下的DEM扔進坡度工具ArcGIS會警告水平距離與垂直距離單位不一致實際算出來的坡度要么接近90度要么全部是0度。正確的做法是先把它變成投影坐標系。投影坐標系下的水平單位通常是米這樣坡度公式里的水平距離和垂直距離才統(tǒng)一。宜昌市經(jīng)度范圍約在110°E到112°E之間UTM Zone 49N中央經(jīng)線111°E或者CGCS2000 3度帶高斯投影都很常用。原包里的.prj文件如果是GCS_WGS_1984那就要在分析前執(zhí)行投影柵格轉(zhuǎn)換。shp文件也一樣。本市級范圍shp可能自帶投影坐標也可能是經(jīng)緯度邊界。在ArcGIS里用“投影”工具把shp轉(zhuǎn)換到DEM所在坐標系保證兩者坐標基準一致。如果原始數(shù)據(jù)是WGS84而你項目的其他數(shù)據(jù)用CGCS2000別嫌麻煩必須統(tǒng)一不然疊加后會有肉眼可見的偏移。我的習慣是第一步就打開.prj和shp的屬性表源信息先記錄兩個坐標系再動手操作這能省掉后面整塊重來的時間。3. 解壓、加載、裁剪把宜昌DEM用起來的三個必做步驟這一章直接進入實操。從解壓zip開始到生成第一張坡度圖為止每步都有可復(fù)現(xiàn)的命令或工具參數(shù)。我會同時給出ArcGIS菜單操作和GDAL命令行兩種路徑日常用哪個順手就選哪個。3.1 解壓與文件檢查別把路徑搞出中文從Windows資源管理器里右鍵解壓是最簡單的方式但遇到數(shù)據(jù)文件名帶中文或者路徑層級太深時ArcGIS偶爾會不識別。更穩(wěn)的辦法是用命令行解壓可控編碼。如果數(shù)據(jù)包文件名是英文直接解壓如果包含中文目錄名建議用Git Bash或WSL執(zhí)行unzip -O gbk 宜昌DEM30m.zip -d ./yichang_dem-O gbk指定文件名按GBK編碼解壓解決Windows中文文件名在Linux環(huán)境下解壓亂碼的問題。-d ./yichang_dem把輸出目錄固定為當前目錄下的yichang_dem方便后面對照路徑。解壓完成后進入目錄用ls -lh查看文件大小確保tif不是0字節(jié)或幾十K的破損文件。如果你的環(huán)境沒有unzip用7-Zip也可以但注意解壓后把頂層文件夾名改成純英文例如Yichang_DEM_30m。中文路徑在ArcGIS的歷史版本里出現(xiàn)過“柵格數(shù)據(jù)集無法創(chuàng)建”的報錯英文路徑能繞開這個坑。3.2 在ArcGIS中加載并檢查圖層先看范圍再看值域打開ArcMap或ArcGIS Pro把tif拖進地圖再把shp拖進去。第一件事不是縮放而是右鍵圖層點擊“屬性→源”看空間參考。確認DEM和shp的坐標系是否一致。如果一致繼續(xù)如果不一致先記錄。然后右鍵DEM圖層選擇“縮放至圖層”用目測對比shp是否在DEM范圍內(nèi)。如果DEM是多幅小tifArcGIS加載進來會各自為政此時需要用“鑲嵌至新柵格”工具搜索該工具輸入所有tif像素類型選擇“16 bit Signed”SRTM類數(shù)據(jù)常見或“32 bit Float”波段數(shù)填1鑲嵌運算符選BLEND。輸出后用“復(fù)制柵格”工具再生成一份干凈的單波段文件。這一步能消除接縫和重疊區(qū)域的顏色跳變。這種檢查流程別跳過。我有一次拿到某省30米DEM加載后看起來和shp完全套合結(jié)果投影一看DEM是GCS_WGS_1984shp是CGCS2000 3度帶兩者在平原地區(qū)偏移了將近80米。因為屏幕縮放比例小看不出來最后在公里網(wǎng)格上才暴露。所以源頭信息比眼睛可靠。3.3 用shp裁剪DEM提取宜昌市域范圍加載無誤后需要把DEM裁剪到shp邊界內(nèi)這樣能剔除周邊區(qū)域數(shù)據(jù)文件體積變小分析速度也快。在ArcGIS里搜索“按掩膜提取Extract by Mask”這是空間分析模塊的標準工具。參數(shù)設(shè)置如下輸入柵格宜昌DEM如果是多幅用鑲嵌后的tif輸入掩膜宜昌市shp輸出柵格指定路徑命名如Yichang_dem_cut.tif環(huán)境設(shè)置里有一個關(guān)鍵點在“地理處理選項”的環(huán)境頁簽中把“處理范圍”設(shè)為“與掩膜相同”輸出的像元大小設(shè)為與輸入DEM一致30米。否則裁剪結(jié)果可能四邊多出半個像元或者被重采樣成別的分辨率。不習慣用ArcGIS工具箱的話用GDAL一行命令也能完成而且確定性更強gdalwarp -cutline Yichang.shp -crop_to_cutline -dstnodata -9999 -of GTiff Yichang_dem.tif Yichang_dem_cut.tif-cutline指定邊界shp-crop_to_cutline表示僅保留邊界內(nèi)部-dstnodata -9999把邊界外的高程設(shè)為空值-of GTiff指定輸出格式。這條命令在QGIS內(nèi)置終端里也能跑。注意shp的坐標系必須與DEM相同否則gdalwarp會先做投影轉(zhuǎn)換可能產(chǎn)生偏移。3.4 生成坡度和坡向圖一條標準生產(chǎn)流坡度是DEM最常用的派生數(shù)據(jù)。在ArcGIS中找“坡向”旁邊的“坡度”工具Spatial Analyst → 表面分析 → 坡度輸入前一步裁剪好的tif。輸出參數(shù)里有兩種單位可選度和百分比。一般分析用度水土保持計算里常用百分比。宜昌山地坡度普遍較大度更直觀。Z因子保持1因為投影坐標下水平和垂直都是米不需要縮放。如果輸入的是經(jīng)緯度坐標系A(chǔ)rcGIS會提示使用0.000009左右甚至更大的Z因子看到這個提示就別繼續(xù)了先重投影。生成坡度圖后默認灰色符號系統(tǒng)很難看。點擊符號系統(tǒng)選擇“拉伸”類型色帶選“高程配色”或自己搭一版黃綠棕分帶。進一步把連續(xù)坡度柵格重分類成標準坡度級別≤5°、5-15°、15-25°、25-35°、35°用“重分類”工具保存成整型柵格方便后續(xù)出圖或面積統(tǒng)計。4. 30米DEM的精度邊界拿到手先做這三件驗證數(shù)據(jù)能顯示不等于數(shù)據(jù)可靠。30米DEM在生產(chǎn)過程中會有無效值、內(nèi)陸凹陷、平坦區(qū)域噪聲等常見瑕疵。剛拿到宜昌數(shù)據(jù)時別急著做分析先花十分鐘做三件驗證。4.1 高程值域檢查區(qū)分無效值與真實低地用“獲取柵格屬性”工具查看DEM的最小值、最大值。宜昌市海拔范圍大約從沿江的幾十米到西部山區(qū)的兩千米上下如果最小值出現(xiàn)-32768、-9999這類極端負值說明該區(qū)域是NoData。在后續(xù)坡度計算時NoData區(qū)域會沿邊界擴散。處理方式是先把NoData統(tǒng)一成固定空值。ArcGIS里有“設(shè)置空值”工具可以把所有非有效值比如小于某個閾值或等于-32768改為空。也可以用柵格計算器寫條件式Con(IsNull(dem) | (dem 0), -9999, dem)邏輯說明Con是ArcGIS柵格計算器里的條件函數(shù)第一段是判斷條件第二段是滿足該條件時輸出的值第三段是其他情況沿用的原值。這里把NoData或小于0的像元統(tǒng)一賦成-9999便于后續(xù)統(tǒng)一處理。注意宜昌沿江部分地區(qū)海拔確實能低到幾十米所以閾值不要設(shè)成“低于50米就置空”只處理負大值和NoData。4.2 疊加矢量邊界檢查位置套合度驗證位置精度最直接的辦法是把DEM和高分辨率影像或者已有的河流shp疊在一張圖里。在ArcGIS里加載宜昌的河流水系shp很多公開地理數(shù)據(jù)平臺都有疊加到DEM上放大到1:10萬左右觀察河流線是否沿著山谷的最低處走。如果河流線往山坡上跑或者明顯偏離溝谷中線說明笛卡兒坐標基準有問題。這個偏移可能來自投影轉(zhuǎn)換參數(shù)。比如WGS84測定的坐標與CGCS2000之間存在幾十厘米到幾米的系統(tǒng)差在30米分辨率下肉眼幾乎不可見但沿山脊線對比時能發(fā)現(xiàn)。如果偏差大于一個像元30米直接把DEM和shp都轉(zhuǎn)換到同一個CGCS2000投影下再重新裁剪。位置驗證這步不復(fù)雜但能避免你把一套錯位數(shù)據(jù)用到底。4.3 平坦區(qū)域的噪聲陷阱城區(qū)和水田是30米DEM最容易出噪聲的地方。宜昌主城區(qū)在現(xiàn)代化建設(shè)中許多地塊被推平但DEM像元里還保留著改造前的起伏痕跡農(nóng)田則因為灌溉季積水高程值跳躍明顯。這些噪聲在坡度分析中會表現(xiàn)為短促的、毫無規(guī)律的坡度突變比如平地上突然冒出一個20度的像元。針對這種情況我一般會先做一個“焦點統(tǒng)計均值濾波”把每個像元周圍3×3鄰域的高程平均值賦給中心格然后再算坡度。在ArcGIS里搜索焦點統(tǒng)計鄰域設(shè)為矩形3×3統(tǒng)計類型MEAN輸出后替代原DEM。注意不要重復(fù)多次兩次以上會過度平滑陡坡的真實轉(zhuǎn)角會被抹掉。另外填洼Fill也是必然步驟尤其做匯水分析時。SRTM和ASTER類數(shù)據(jù)在河谷區(qū)域經(jīng)常出現(xiàn)偽洼地不填掉的話流向計算會出現(xiàn)斷層。ArcGIS的“填洼”工具只需輸入DEM主要參數(shù)“填充閾值”保持默認即可如果生成的流向圖還有斷頭再手動提高閾值但要謹慎每次只加10米。5. 避坑指南DEM和shp一起用最容易翻車的五個場景這一章寫我遇過的高頻故障全部都是“現(xiàn)象→原因→解決”結(jié)構(gòu)。對照排查能省下不少刷論壇的時間。5.1 現(xiàn)象DEM加載后一整片黑什么都看不到原因柵格圖層的默認拉伸方式可能把有效高程全映射到了黑色端或者NoData值被當成有效值參與渲染。常見于原始包里的.aux.xml統(tǒng)計信息缺失ArcGIS臨時計算了錯誤的直方圖。解決右鍵圖層→屬性→符號系統(tǒng)→拉伸→拉伸類型改為“百分比截斷”或“標準差”數(shù)據(jù)裁剪到10%-90%區(qū)間色帶重選。如果還是黑就重新生成統(tǒng)計信息在目錄窗口中找到tif右鍵→屬性→源→計算統(tǒng)計信息。注意檢查值域正常30米DEM的高程單位是米不是厘米如果tif是浮點型且值域是兩三千米拉伸百分比選15%-85%一般能正常顯示。5.2 現(xiàn)象shp拖進ArcGIS提示“沒有可顯示的數(shù)據(jù)源”或只顯示一部分原因shp配套文件缺失或者shp里的.prj定義與內(nèi)容不匹配。很多下載站打包時漏了.shx或.dbfArcGIS找不到坐標和屬性索引就打不開shp。解決檢查壓縮包中是否有.shp、.shx、.dbf、.prj、.cpg這五個文件。缺shx用其他工具重建如QGIS里的“修復(fù)數(shù)據(jù)源”但更省事的是回到下載源重新獲取或者在末端補充屬性信息。另外路徑中不能有中文和空格把整個目錄復(fù)制到純英文路徑下重試。5.3 現(xiàn)象坡度圖看起來全是0度和90度沒有中間過渡原因這是典型的坐標系問題。直接用經(jīng)緯度坐標系DEM算坡度ArcGIS內(nèi)部把水平距離當作度垂直距離當米計算出的人工比值就變成極端值。解決先對DEM執(zhí)行“投影柵格”工具輸出坐標系選擇UTM Zone 49N或CGCS2000 3度帶高斯投影再跑一次坡度工具。投影柵格參數(shù)里“重采樣技術(shù)”選雙線性Bilinear“像元大小”保持原樣30。別選最近鄰雖然快但會讓臺階狀地形更明顯。5.4 現(xiàn)象DEM與shp邊界錯位相差幾十到幾百米原因兩個數(shù)據(jù)的坐標系基準不一致。DEM是WGS84shp是CGCS2000或者DEM是經(jīng)緯度shp是投影坐標。還有一種隱蔽情況shp的.prj寫的是北京54但實際坐標是西安80系如果是第三方轉(zhuǎn)換過的邊界文件建議復(fù)查。解決右鍵shp→屬性→源先看坐標。然后用“投影”工具把shp轉(zhuǎn)換到DEM的坐標系。如果兩個都是地理坐標但基準橢球不同就需要用“創(chuàng)建自定義地理變換”或者直接重新下載套合過的邊界shp。對30米分辨率來說WGS84和CGCS2000的差異在毫厘級肉眼看不出大幅錯位一定是因為一個用了投影坐標一個用了經(jīng)緯度。5.5 現(xiàn)象多幅DEM拼接后出現(xiàn)明顯的接縫色差或斷崖原因不同圖幅之間的采集時間、傳感器標定或后處理流程不一致導(dǎo)致接縫位置的高程坡度突變。拼好后直接做坡度分析時接縫處會出現(xiàn)一條帶狀“偽山脊”。解決“鑲嵌至新柵格”工具的鑲嵌運算符選BLEND系統(tǒng)會在重疊區(qū)域做漸變色加權(quán)平均。如果接縫還明顯把拼接結(jié)果再做一次3×3中值濾波強度不要太大。更專業(yè)的做法是用“按顏色鑲嵌”但這只針對色彩影像DEM按高程值混合即可。經(jīng)驗是先鑲嵌再濾波濾波接縫區(qū)域比濾鏡整個區(qū)域好得多。6. 把30米DEM榨干山體陰影、等高線與地形剖面到這章數(shù)據(jù)已經(jīng)能正常用了但30米分辨率的價值不止坡度坡向那么簡單。三個進階操作能讓它產(chǎn)出更接近成果圖的素材。山體陰影Hillshade是制圖里最常用的底圖。ArcGIS里搜索“山體陰影”輸入裁剪后的DEM方位角設(shè)為315°太陽高度角設(shè)為45°Z因子默認1。輸出之后把它放在原始DEM圖層上面在圖層屬性里把透明度調(diào)到40%60%再疊上宜昌市界shp和道路線就是一張能直接出制圖效果的地形底圖。投影坐標系下的山體陰影不需要改Z因子但如果你在WGS84經(jīng)緯度下硬算陰影方向會錯亂。等高線提取方面在ArcGIS里用3D Analyst的“等高線”工具。輸入DEM后等距設(shè)置需要根據(jù)地形決定。宜昌西部山區(qū)地勢陡峭設(shè)20米到50米能得到合理線間距東部平原設(shè)5米到10米但30米DEM的折線會出現(xiàn)大量鋸齒。所以我習慣先提取原始等高線再加一個“平滑”工具方法選PAEK算法容差設(shè)30米。平滑后的等高線再裁到shp范圍內(nèi)導(dǎo)出為dxf就能在CAD里繼續(xù)編輯。需要提醒的是別試圖從30米DEM里提取2米等高距那是在考驗數(shù)據(jù)分辨率結(jié)果只會是一團麻線。地形剖面圖是檢驗數(shù)據(jù)是否能用的一招妙棋。在ArcGIS Pro中用“創(chuàng)建剖面圖”工具在DEM上畫一條穿越宜昌市南北的線比如從長陽山區(qū)延伸到枝江平原系統(tǒng)會立刻生成一條高程曲線。如果曲線平滑過渡說明數(shù)據(jù)質(zhì)量尚可如果出現(xiàn)頻繁相鄰落差超50米的鋸齒那就要懷疑原始數(shù)據(jù)是不是碰到了數(shù)據(jù)空洞回到前面第4章補預(yù)處理。這讓我想到一個習慣每次拿到新的柵格數(shù)據(jù)我都強制走一遍“坐標系查看→值域檢查→范圍核對→噪聲濾波”的全套流程哪怕只是用來出一張示意圖也絕不跳過。等習慣成自然你會發(fā)現(xiàn)很多“數(shù)據(jù)壞了”的問題其實是加載順序和數(shù)據(jù)源沒理清。希望這些積累能幫你在宜昌地形數(shù)據(jù)上少走幾步彎路。本文還有配套的精品資源點擊獲取