100例實戰(zhàn)指南:從坐標(biāo)系定義到空間分析的完整操作流程)
簡介《ArcGIS基礎(chǔ)100例操作手冊操作數(shù)據(jù)》由湯國安教授編寫面向GIS初學(xué)者及有一定基礎(chǔ)的ArcGIS用戶通過100個實操案例幫助讀者系統(tǒng)掌握軟件核心功能與操作技巧。資源包共2069個文件約156.04MB涵蓋操作手冊PDF、PPT教程、練習(xí)案例文本及配套數(shù)據(jù)。其中shp、dbf、shx、prj等矢量數(shù)據(jù)文件與tif、tfw柵格數(shù)據(jù)構(gòu)成完整練習(xí)底圖mxd地圖文檔、gdb地理數(shù)據(jù)庫、xml元數(shù)據(jù)及sbx、sbn空間索引文件支撐從數(shù)據(jù)導(dǎo)入、圖層管理到地圖布局的全流程操作。手冊詳細講解界面認識、數(shù)據(jù)導(dǎo)入導(dǎo)出與地圖設(shè)計PPT教程覆蓋GIS基本概念與系統(tǒng)架構(gòu)練習(xí)案例涉及數(shù)據(jù)處理、空間分析與模型構(gòu)建。已有1630人學(xué)習(xí)下載適合希望在城市規(guī)劃、環(huán)境研究、自然資源管理等領(lǐng)域提升空間分析能力的學(xué)習(xí)者通過真實數(shù)據(jù)反復(fù)練習(xí)逐步理解數(shù)據(jù)含義、工具選擇與結(jié)果解讀夯實GIS素養(yǎng)。1. 從一份被翻爛的 ArcGIS 操作手冊說起如果你在 GIS 這行待過一陣大概率聽過“ArcGIS 基礎(chǔ)100例”這個名號。它不是什么新出的在線課程而是一套流傳多年的操作手冊加配套練習(xí)數(shù)據(jù)作者是湯國安。我第一次接觸它是在一個做土地利用規(guī)劃的項目里當(dāng)時需要把幾十個村的矢量邊界和遙感影像做疊加分析手頭只有 ArcGIS 的基本概念具體操作全靠零散搜來的帖子拼湊結(jié)果坐標(biāo)系一鍋粥屬性表關(guān)聯(lián)后字段全亂。后來一位前輩丟給我這套資料說“別瞎折騰了照著練一遍比你看十篇教程都管用”。這套資源的核心價值在于“系統(tǒng)”和“可復(fù)現(xiàn)”。它把 ArcGIS 從地圖打開、圖層管理、坐標(biāo)系定義到矢量編輯、柵格計算、空間插值、網(wǎng)絡(luò)分析、三維可視化這些模塊拆成了 100 個獨立又互相銜接的練習(xí)。每個練習(xí)都配了操作步驟和對應(yīng)的數(shù)據(jù)文件你不需要自己去找數(shù)據(jù)也不用猜參數(shù)怎么設(shè)。適合誰剛?cè)胄械?GIS 專業(yè)學(xué)生、轉(zhuǎn)行做空間數(shù)據(jù)處理的開發(fā)者、需要快速上手 ArcGIS 做項目的規(guī)劃或環(huán)境類從業(yè)者。它不教你 Python 腳本自動化也不涉及 ArcGIS Pro 的最新特性但如果你連 ArcMap 的基本工具條都沒摸熟這套東西就是最省時間的入門路徑。2. 拆開這份資源文件構(gòu)成與數(shù)據(jù)組織邏輯2.1 操作手冊的章節(jié)編排與練習(xí)粒度手冊本身是 PDF 或 Word 格式按功能模塊分章每章下面有若干“例”。一個典型的“例”包含三部分練習(xí)目的、操作步驟、注意事項。練習(xí)目的通常一句話比如“掌握矢量數(shù)據(jù)的裁剪與合并”操作步驟會精確到點哪個菜單、選哪個參數(shù)、輸入什么字段名注意事項則是一些容易翻車的地方比如“裁剪時輸出范圍要選輸入要素否則結(jié)果為空”。我一般會先翻目錄把 100 個例按數(shù)據(jù)依賴關(guān)系分成幾組。比如“坐標(biāo)系定義與投影轉(zhuǎn)換”這組必須最先做因為后面所有涉及距離、面積的計算都依賴正確的坐標(biāo)系。然后是“矢量數(shù)據(jù)采集與編輯”再是“柵格數(shù)據(jù)分析”最后是“空間分析與建?!?。這樣分組的好處是你不會在做一個插值練習(xí)時突然發(fā)現(xiàn)數(shù)據(jù)還沒配準。2.2 配套數(shù)據(jù)的目錄結(jié)構(gòu)與格式說明配套數(shù)據(jù)通常按章節(jié)編號放在不同文件夾里比如Ch03_矢量編輯、Ch07_柵格計算。每個文件夾里包含 Shapefile、柵格影像TIFF 或 IMG、個人地理數(shù)據(jù)庫MDB或文件地理數(shù)據(jù)庫GDB。Shapefile 至少包含.shp、.shx、.dbf、.prj四個文件缺一不可。如果.prj缺失ArcGIS 會提示“未知空間參考”這時候要么手動定義要么用“定義投影”工具補上。常見做法是先把所有數(shù)據(jù)拷貝到本地硬盤的一個英文路徑下比如D:\GIS_Data\ArcGIS100。不要放在中文路徑或桌面ArcGIS 對中文路徑的支持時好時壞尤其是涉及柵格計算和 Python 腳本調(diào)用時中文路徑經(jīng)常導(dǎo)致工具報錯“無效的輸入”。另外如果數(shù)據(jù)是壓縮包解壓后檢查一下是否有嵌套文件夾有時候解壓出來是Ch03/Ch03/xxx.shp直接拖進 ArcMap 會找不到關(guān)聯(lián)文件。提示拿到數(shù)據(jù)后先做一次“檢查幾何”和“修復(fù)幾何”尤其是從網(wǎng)上流傳的 Shapefile經(jīng)常有自相交或空幾何不修復(fù)的話后續(xù)裁剪、相交都會失敗。3. 從零跑通第一個練習(xí)坐標(biāo)系定義與矢量裁剪3.1 環(huán)境準備與 ArcMap 初始設(shè)置假設(shè)你裝的是 ArcGIS Desktop 10.x這套資料主要針對這個版本ArcGIS Pro 也能用但菜單位置不同。打開 ArcMap新建一個空白地圖。第一件事不是急著加載數(shù)據(jù)而是設(shè)置“默認地理數(shù)據(jù)庫”和“當(dāng)前工作空間”。在 Catalog 窗口里右鍵點擊你存放數(shù)據(jù)的文件夾選擇“屬性”確認路徑?jīng)]有中文。然后打開“環(huán)境設(shè)置”Geoprocessing - Environments把“工作空間”里的“當(dāng)前工作空間”和“臨時工作空間”都設(shè)成你的數(shù)據(jù)文件夾。這一步能避免很多“輸出路徑無效”的玄學(xué)問題。接下來加載第一個練習(xí)的數(shù)據(jù)。通常第一個例是“定義投影”。找到Ch02_坐標(biāo)系文件夾里的一個無投影的 Shapefile拖進 ArcMap。它會提示“缺少空間參考”點確定。然后打開 ArcToolbox - Data Management Tools - Projections and Transformations - Define Projection。輸入要素選這個 Shapefile坐標(biāo)系選“GCS_WGS_1984”。確定后.prj文件就生成了。3.2 矢量裁剪的完整操作與參數(shù)解析裁剪是后面幾十個練習(xí)的基礎(chǔ)。假設(shè)你有兩個圖層study_area.shp研究區(qū)邊界和landuse.shp土地利用現(xiàn)狀。目標(biāo)是把土地利用數(shù)據(jù)裁剪到研究區(qū)范圍內(nèi)。打開 ArcToolbox - Analysis Tools - Extract - Clip。參數(shù)設(shè)置如下Input Featureslanduse.shpClip Featuresstudy_area.shpOutput Feature ClassD:\GIS_Data\ArcGIS100\Ch04_裁剪\landuse_clip.shpXY Tolerance留空除非坐標(biāo)單位是度且數(shù)據(jù)范圍很小才需要手動設(shè)一個很小的值比如 0.0001# 如果你習(xí)慣用 Python 窗口等價代碼如下 import arcpy arcpy.env.workspace rD:\GIS_Data\ArcGIS100\Ch04_裁剪 arcpy.Clip_analysis(landuse.shp, study_area.shp, landuse_clip.shp)邏輯說明Clip_analysis的第一個參數(shù)是被裁剪的要素第二個是裁剪邊界第三個是輸出。注意裁剪工具會保留輸入要素的所有屬性字段但只保留落在裁剪邊界內(nèi)的幾何部分。如果裁剪邊界是面輸出也是面如果裁剪邊界是線輸出可能是線或面取決于輸入。參數(shù)XY Tolerance一般不用改ArcGIS 會根據(jù)輸入數(shù)據(jù)的坐標(biāo)系自動計算一個容差。如果裁剪結(jié)果為空先檢查兩個圖層的坐標(biāo)系是否一致不一致的話用“投影”工具統(tǒng)一。3.3 屬性表連接與字段計算器裁剪完下一步往往是關(guān)聯(lián)屬性數(shù)據(jù)。比如landuse_clip.shp里有一個字段CODE你還有一個 Excel 表landuse_type.xlsx里面是CODE和對應(yīng)的TYPE_NAME。用“連接”Join功能右鍵landuse_clip- Joins and Relates - Join。參數(shù)選“基于屬性字段連接”圖層字段選CODE表字段選CODE。連接后屬性表里會多出TYPE_NAME字段但這是臨時連接導(dǎo)出數(shù)據(jù)才能永久保存。導(dǎo)出后如果需要根據(jù)TYPE_NAME計算面積用字段計算器。新建一個雙精度字段Area_ha右鍵字段 - Field Calculator。勾選“高級”輸入# 假設(shè)坐標(biāo)系是投影坐標(biāo)系單位是米 !shape.area! / 10000邏輯說明!shape.area!返回幾何面積單位取決于坐標(biāo)系。如果是地理坐標(biāo)系度這個值沒有實際面積意義必須先投影到投影坐標(biāo)系。除以 10000 是把平方米轉(zhuǎn)成公頃。注意字段計算器里用!包裹字段名這是 ArcGIS 的語法不是 Python 的常規(guī)寫法。4. 柵格分析與空間插值的參數(shù)怎么設(shè)4.1 柵格計算器與地圖代數(shù)柵格分析是這套資料里比較厚的一部分。常見練習(xí)包括“柵格計算器”、“重分類”、“柵格裁剪”、“坡度坡向提取”。以“柵格計算器”為例假設(shè)你有兩個柵格dem.tif高程和slope.tif坡度想算一個“地形起伏度”指標(biāo)公式是dem * 0.6 slope * 0.4。打開 Spatial Analyst Tools - Map Algebra - Raster Calculator。輸入dem.tif * 0.6 slope.tif * 0.4邏輯說明柵格計算器會自動對齊兩個柵格的像元如果范圍或分辨率不一致會以交集為準并重采樣。參數(shù)里沒有顯式的“輸出范圍”設(shè)置但可以在環(huán)境設(shè)置里指定“處理范圍”和“像元大小”。我一般會先統(tǒng)一兩個柵格的投影和分辨率再做計算否則結(jié)果會有偏移。如果報錯“柵格計算器無法打開”檢查柵格是否被其他程序占用或者路徑是否太長。4.2 反距離權(quán)重插值的參數(shù)與驗證空間插值練習(xí)通常用氣象站或采樣點數(shù)據(jù)。以“反距離權(quán)重插值”IDW為例輸入是點圖層stations.shp字段是rainfall輸出柵格idw_rain.tif。打開 Spatial Analyst Tools - Interpolation - IDW。參數(shù)Input point featuresstations.shpZ value fieldrainfallOutput rasteridw_rain.tifPower2默認值表示距離的冪次越大越局部Search radiusVariable點數(shù)設(shè) 12表示用最近的 12 個點參與插值Output cell size根據(jù)研究區(qū)范圍設(shè)比如 100單位同坐標(biāo)系import arcpy from arcpy.sa import * arcpy.CheckOutExtension(Spatial) out_idw Idw(stations.shp, rainfall, 100, 2, VARIABLE 12) out_idw.save(rD:\GIS_Data\ArcGIS100\Ch08_插值\idw_rain.tif)邏輯說明Power參數(shù)控制插值的平滑程度值越大近處點的權(quán)重越高結(jié)果越不平滑。Search radius選 Variable 時點數(shù)越多結(jié)果越平滑但計算越慢。Output cell size設(shè)得太小會導(dǎo)致柵格文件巨大設(shè)得太大則丟失細節(jié)。驗證插值效果可以用“交叉驗證”工具或者留幾個點不參與插值最后對比預(yù)測值和實測值。常見坑是點圖層有重復(fù)坐標(biāo)導(dǎo)致插值報錯“無法計算”需要先“刪除相同項”。4.3 重分類與柵格裁剪的聯(lián)動重分類常用于把連續(xù)柵格轉(zhuǎn)成分類柵格。比如把坡度柵格按 0-5、5-15、15-25、25 分成四級。打開 Spatial Analyst Tools - Reclass - Reclassify。輸入slope.tif重分類字段選Value點擊“分類”按鈕設(shè)斷點。輸出slope_class.tif。然后裁剪到研究區(qū)用 Spatial Analyst Tools - Extraction - Extract by Mask。輸入slope_class.tif掩膜選study_area.shp。參數(shù)里有個“是否使用輸入柵格的范圍”一般選“否”讓輸出范圍跟掩膜一致。如果裁剪結(jié)果全是 NoData檢查掩膜和柵格的坐標(biāo)系是否一致或者掩膜是否在柵格范圍之外。5. 避坑與排查那些年我踩過的 ArcGIS 雷5.1 坐標(biāo)系不一致導(dǎo)致的“空結(jié)果”現(xiàn)象裁剪、相交、插值結(jié)果為空或者面積計算出來是 0。原因兩個圖層的坐標(biāo)系不同一個是地理坐標(biāo)系度一個是投影坐標(biāo)系米ArcGIS 不會自動轉(zhuǎn)換而是按數(shù)值直接計算導(dǎo)致范圍不重疊。解決先用“投影”工具把其中一個圖層轉(zhuǎn)到另一個的坐標(biāo)系或者統(tǒng)一轉(zhuǎn)到同一個投影坐標(biāo)系。在 ArcMap 里右鍵圖層 - Properties - Source看“空間參考”是否一致。5.2 中文路徑與字段名引發(fā)的工具報錯現(xiàn)象運行工具時提示“ERROR 000732: 輸入不存在”或“ERROR 000210: 無法創(chuàng)建輸出”。原因路徑或文件名包含中文、空格、特殊字符或者字段名是中文。ArcGIS 的底層是 Python 2.7 和 C對非 ASCII 字符支持不完善。解決所有數(shù)據(jù)放在英文路徑下文件名用英文和下劃線字段名也改成英文。如果必須保留中文導(dǎo)出時用“復(fù)制要素”工具在輸出路徑里手動輸入英文名。5.3 屬性表連接后字段丟失或亂碼現(xiàn)象連接 Excel 或 CSV 后部分字段顯示為 Null 或亂碼。原因Excel 的列名有空格或特殊字符或者字段類型不匹配比如一個是文本一個是數(shù)字。解決先把 Excel 另存為 CSV用記事本打開檢查列名確保沒有 BOM 頭。連接時兩個字段的類型必須一致文本對文本數(shù)字對數(shù)字。如果還是亂碼在“控制面板”-“區(qū)域”-“非 Unicode 程序的語言”里改成“英語美國”重啟 ArcGIS。5.4 柵格計算器報錯“無法打開柵格”現(xiàn)象柵格計算器輸入表達式后提示“ERROR 000964: 指定的范圍無效”或“無法打開柵格”。原因柵格文件被其他程序占用或者路徑太長超過 255 字符或者柵格本身損壞。解決關(guān)閉其他打開該柵格的軟件把數(shù)據(jù)移到更短的路徑下比如D:\GIS\data。如果柵格損壞用“復(fù)制柵格”工具重新導(dǎo)出一次。5.5 內(nèi)存不足與大型柵格處理現(xiàn)象處理大范圍高分辨率柵格時ArcGIS 崩潰或提示“內(nèi)存不足”。原因32 位 ArcMap 最多只能用 2GB 內(nèi)存柵格太大時直接爆掉。解決先用“重采樣”降低分辨率或者用“分割柵格”工具分塊處理。如果必須處理原始分辨率改用 ArcGIS Pro64 位或者用 Python 腳本調(diào)用arcpy在后臺分塊計算。6. 進階技巧把 100 例串成自己的工具箱這套資料最大的價值不是讓你會點 100 個工具而是幫你建立“空間數(shù)據(jù)流水線”的思維。我后來做項目時習(xí)慣把重復(fù)的操作寫成 Python 腳本用arcpy批量跑。比如把 100 例里的“裁剪-投影-重分類-統(tǒng)計”四個步驟串成一個腳本輸入一個文件夾自動處理里面所有 Shapefile。import arcpy import os arcpy.env.workspace rD:\GIS_Data\ArcGIS100\Batch out_folder rD:\GIS_Data\ArcGIS100\Batch_Out clip_feature rD:\GIS_Data\ArcGIS100\study_area.shp # 遍歷工作空間里的所有 Shapefile for shp in arcpy.ListFeatureClasses(*.shp): name os.path.splitext(shp)[0] # 裁剪 clip_out os.path.join(out_folder, name _clip.shp) arcpy.Clip_analysis(shp, clip_feature, clip_out) # 投影到統(tǒng)一坐標(biāo)系 proj_out os.path.join(out_folder, name _proj.shp) arcpy.Project_analysis(clip_out, proj_out, arcpy.SpatialReference(32650)) print(f{name} 處理完成)邏輯說明ListFeatureClasses返回當(dāng)前工作空間的所有 Shapefile。Clip_analysis按研究區(qū)裁剪Project_analysis統(tǒng)一投影到 WGS 1984 UTM Zone 50NEPSG:32650。SpatialReference(32650)是直接傳 EPSG 代碼比手動選坐標(biāo)系更穩(wěn)。腳本跑完后檢查輸出文件夾里是否有空文件空文件說明裁剪時沒有重疊需要回頭檢查坐標(biāo)系。另一個技巧是“模型構(gòu)建器”。把 100 例里涉及多步驟的練習(xí)比如“從 DEM 提取坡度、坡向、起伏度”用 ModelBuilder 連起來保存成工具。下次換一個 DEM直接拖進去就能跑。模型構(gòu)建器里可以設(shè)“前提條件”比如先檢查坐標(biāo)系是否一致不一致就自動投影。這樣即使數(shù)據(jù)變了流程也不會斷。從那以后我每次拿到新數(shù)據(jù)都強制走一遍“檢查幾何 - 定義投影 - 統(tǒng)一坐標(biāo)系 - 裁剪 - 分析”的流程再也沒出現(xiàn)過結(jié)果為空或者面積算錯的情況。這套 ArcGIS 基礎(chǔ)100例我建議你別貪快一天做 5 個做完把步驟默寫一遍比看視頻強。希望幫到你。本文還有配套的精品資源點擊獲取