天天看點

使用ArcMap 生成DEM(等高線)

從網上搜集的資料,先收藏一下,以備後用。

CAD檔案在通常的GIS軟體中,都會對應多個圖層,至少點、線、面層各一個,當然可能一些層中沒有資料。cad格式的等高線主要應該是線資訊,當然可能有面和特征點。如果面層有資料,需将面轉為線,然後将線部分倒成一個gis線資料層。如果有特征點,則導成一個點層。這次的等高線資料中面層和點層沒有資料。

下面是利用ArcGIS和Envi組合将等高線轉為grid dem的步驟:

      在ArcCatalog中建立一個Personal GeoDatabase(Access檔案)tempdb。(不直接用shp檔案是有原因的,後面會講到)。右鍵點選tempdb,導入要轉的cad檔案的線層,導入名為Contour1。注意導入時取名字要有效,我之前就因為檔案名用了-而一直不成功。不要選擇cad檔案的層導出到tempdb中,不知為何,這樣轉出的資料特别大!

      在ArcMap中打開Contour1,看到多了很多很小的點和線,不知為何形成。看出規律,這些多出來的資料其屬性Entity為Insert或Line,而有效資料Entity屬性為Polyline。點選StartEditing開始編輯資料。通過Selection-> Select by Attribute中選擇屬性為Insert和Line的,删除,StopEditing,儲存編輯結果。

      從cad檔案中導入的圖層有很多沒用的屬性,可以在ArcCatalog或ArcMap中删掉這些屬性,隻要保留Elevation字段,這個字段是等高線的高度。(本來Contour1的shape字段,也就是空間資料字段已經包含了高度資訊,但後面我們要用的envi中不支援這個高度資訊,是以我們保留Elevation字段)。Elevation字段跟我們下面用的envi有沖突,是以要改掉。很奇怪,Arcgis不支援屬性字段名的修改,是以我們在Access中打開tempdb,修改Contour表的Elevation字段為Elev。導出tempdb中的contour1層為.shp檔案contour1.shp。

      下面用Envi來通過等高線生成grid dem,我用的是envi4.0。envi支援一些常用的矢量資料。dxf本來是直接支援的,但其導入後,資訊比較亂,圖也不對,不知為何。用envi導入contour1,Envi會生成其自己的格式contour1.evf。選擇菜單Topographic-> Convert Contours to dem,選擇contour1.evf,在" Convert Vector Elevation Contours to Raster DEM" 對話框中要設定:

      Elevation Attribute Column:Elev

      Output Pixel Size: 5

      Output Data Type: Floating Point

      Gridding Interpolation Method:Linear(選Quintic出來的圖不對)

      Extrapolate to Edge of Image:No(選yes花很長時間出來的結果還不對)

      最後從Envi的菜單File-> Save File As-> Tiff/GeoTiff将envi的dem檔案轉存為geoTiff格式。

      在envi中導入.shp資料的時候,可以加入多個.shp資料,不知這是否能用來加入高程特征點。

也可以隻通過ArcGIS功能就能達到将等高線轉為grid dem

      用ArcGIS的Spatial Analyst Extension(SAE for short)和3D Analyst Extension(3DAE for short)生成Grid DEM。   

      以下是步驟:

      注意:路徑中不能有中文,我就是因為這個而試了很久,是以改用envi很麻煩的生成了dem。

      在ArcMap中打開cad等高線檔案,導出為contour1.shp。

      将在3DAE中Create/MOdify Tin-> Create Tin From Features,選擇contour1.shp,Height source為Elevation字段,Triangulate as MassPoint,其他幾個選項的意義請看ArcGIS的相關文檔。生成了Tin。如果有特征點,可通過Add Features to Tin來添加。

      再利用Convert-> Tin to Raster将Tin轉為Raster,最後在ArcMap中将這個Raster資料儲存為GeoTiff的Grid DEM。   

      還可以将Tin的節點儲存為一個point資料集,然後利用Interpolate-> 中的任何一種方法來生成Raster。

      ArcMap儲存的GeoTiff的Grid DEM的無效值是很奇怪的一個值,需要修改為合适的高程值,0或-9999之類。

      不知為何直接用CAD檔案的Polyline層資料生成grid總是出錯,是以先将資料轉為ArcGIS的資料(比如.shp格式)。

      SAE有一個将Arcgis的Feature資料轉為Raster,開始以為是生成grid dem,結果發現出來的結果,矢量對應坐标有高程的,對應raster的位置值為這個高程,其他位置為空。