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