操作到拓?fù)鋽?shù)據(jù)構(gòu)建實(shí)戰(zhàn))
1. 項(xiàng)目概述從“捕捉”這個(gè)基礎(chǔ)功能說(shuō)起如果你剛開(kāi)始接觸ArcGIS Desktop可能會(huì)覺(jué)得“捕捉”這個(gè)功能有點(diǎn)不起眼它不像空間分析、地圖渲染那樣能直接產(chǎn)出炫酷的成果。但我要告訴你在GIS數(shù)據(jù)處理這個(gè)行當(dāng)里“捕捉”是決定你工作效率和數(shù)據(jù)質(zhì)量的關(guān)鍵基石甚至可以說(shuō)是“分水嶺”。一個(gè)熟練使用捕捉功能的人和一個(gè)只會(huì)用鼠標(biāo)憑感覺(jué)點(diǎn)的人他們處理出來(lái)的矢量數(shù)據(jù)在精度和拓?fù)潢P(guān)系上有著天壤之別。我見(jiàn)過(guò)太多新手花了大半天時(shí)間手動(dòng)對(duì)齊線要素的端點(diǎn)結(jié)果導(dǎo)入到空間數(shù)據(jù)庫(kù)里還是一堆拓?fù)溴e(cuò)誤后續(xù)的分析工作根本沒(méi)法開(kāi)展。所以今天我們就來(lái)深挖一下ArcGIS Desktop里這個(gè)看似簡(jiǎn)單實(shí)則至關(guān)重要的“捕捉”工具條。簡(jiǎn)單來(lái)說(shuō)“捕捉”就是讓鼠標(biāo)光標(biāo)在編輯或繪圖時(shí)能夠自動(dòng)吸附到已有要素的特定幾何位置上比如端點(diǎn)、折點(diǎn)、邊線或中點(diǎn)。它的核心價(jià)值在于保證數(shù)據(jù)的幾何精度和拓?fù)湟恢滦浴Ee個(gè)例子你要畫(huà)一條新的道路連接到現(xiàn)有的道路網(wǎng)絡(luò)上如果不用捕捉你很可能畫(huà)得“差不多”連接上了但兩條線之間可能存在微小的縫隙或重疊。這個(gè)微小的誤差在視覺(jué)上可能看不出來(lái)但在進(jìn)行網(wǎng)絡(luò)分析如最短路徑計(jì)算或拓?fù)錂z查時(shí)就會(huì)導(dǎo)致分析失敗或結(jié)果錯(cuò)誤。捕捉功能就是幫你消除這種“差不多”實(shí)現(xiàn)“精確連接”的利器。最近在處理一些PDF轉(zhuǎn)GIS數(shù)據(jù)的工作時(shí)我常遇到一個(gè)報(bào)錯(cuò)提示和“捕捉”的字面意思有點(diǎn)關(guān)聯(lián)叫“無(wú)法處理頁(yè)面因?yàn)椤?yè)面捕捉’識(shí)別服務(wù)發(fā)生錯(cuò)誤”。雖然這是Adobe Acrobat在OCR識(shí)別時(shí)的錯(cuò)誤與ArcGIS無(wú)關(guān)但它提醒我們“捕捉”的本質(zhì)是精確識(shí)別和定位。在ArcGIS里我們要捕捉的是空間坐標(biāo)在那個(gè)錯(cuò)誤里是軟件要“捕捉”頁(yè)面上的文字和圖形信息。兩者底層邏輯相通精準(zhǔn)是數(shù)字處理的第一要義。搞懂了ArcGIS的捕捉你就能從根本上理解為什么GIS數(shù)據(jù)要求如此高的精度以及如何在實(shí)際操作中實(shí)現(xiàn)并維護(hù)這種精度。2. 捕捉工具條的核心功能與配置邏輯2.1 捕捉類(lèi)型全解析不止是“吸”上去那么簡(jiǎn)單打開(kāi)ArcGIS Desktop的編輯器找到“捕捉”工具條Editor Snapping你會(huì)看到一排按鈕。別小看它們每一個(gè)都對(duì)應(yīng)著一種特定的幾何吸附規(guī)則。理解每種類(lèi)型的適用場(chǎng)景是高效使用捕捉的前提。端點(diǎn)捕捉 (Endpoint Snapping)這是最常用的一種。當(dāng)你要從某條線的終點(diǎn)開(kāi)始畫(huà)新線或者要把一個(gè)新點(diǎn)精確地放在某條線的端點(diǎn)上時(shí)就必須啟用它。光標(biāo)靠近目標(biāo)線段的端點(diǎn)時(shí)會(huì)顯示一個(gè)綠色小方塊。這里有個(gè)關(guān)鍵細(xì)節(jié)對(duì)于一條復(fù)雜的多段線它只有首尾兩個(gè)端點(diǎn)。如果你需要捕捉到線中間的某個(gè)折點(diǎn)那得用下面要講的折點(diǎn)捕捉。折點(diǎn)捕捉 (Vertex Snapping)折點(diǎn)是構(gòu)成線或多邊形邊界的所有拐點(diǎn)。當(dāng)你需要精確地在某個(gè)現(xiàn)有折點(diǎn)處添加新的折點(diǎn)或者從該位置開(kāi)始繪制時(shí)就用到它。光標(biāo)靠近時(shí)會(huì)顯示一個(gè)綠色小十字。實(shí)操心得在數(shù)字化等高線或者邊界線時(shí)為了保持曲線的平滑和準(zhǔn)確經(jīng)常需要在已有折點(diǎn)附近進(jìn)行編輯這時(shí)折點(diǎn)捕捉就必不可少。邊線捕捉 (Edge Snapping)這個(gè)功能允許你將新畫(huà)的點(diǎn)或線的節(jié)點(diǎn)吸附到現(xiàn)有線要素的任意位置上不僅僅是端點(diǎn)或折點(diǎn)。比如你有一條河流線想在河流的某個(gè)中間位置沒(méi)有折點(diǎn)添加一個(gè)水質(zhì)監(jiān)測(cè)點(diǎn)邊線捕捉就能讓這個(gè)點(diǎn)精確地落在河流線上。光標(biāo)靠近時(shí)會(huì)顯示一條綠色的虛線橫跨目標(biāo)線段。中點(diǎn)捕捉 (Midpoint Snapping)自動(dòng)吸附到一條線段的中點(diǎn)。這個(gè)在需要等分或者快速定位線段中心時(shí)非常有用比如在一條道路的中點(diǎn)設(shè)置一個(gè)虛擬的公交站點(diǎn)。交點(diǎn)捕捉 (Intersection Snapping)這是拓?fù)錁?gòu)建的利器。它可以捕捉到兩條線實(shí)際相交或延長(zhǎng)后相交的位置。當(dāng)你繪制新的道路需要與現(xiàn)有道路形成十字路口時(shí)啟用交點(diǎn)捕捉可以確保路口節(jié)點(diǎn)完全重合避免產(chǎn)生懸掛線。注意事項(xiàng)交點(diǎn)捕捉有時(shí)需要與“捕捉到草圖”功能配合使用才能捕捉到正在繪制的線段與已有線段的虛擬交點(diǎn)。切線捕捉 (Tangent Snapping)和垂直捕捉 (Perpendicular Snapping)這兩個(gè)是更高級(jí)的幾何約束捕捉。切線捕捉用于繪制與某個(gè)圓弧相切的直線垂直捕捉用于繪制與某條線段垂直的直線。在繪制工程圖紙或規(guī)劃某些需要特定幾何關(guān)系的要素時(shí)如垂直于道路的建筑紅線它們能發(fā)揮巨大作用。所有這些捕捉類(lèi)型都可以針對(duì)不同的圖層分別設(shè)置。你可以只讓當(dāng)前編輯的圖層捕捉到背景參考圖層而避免捕捉到自身圖層導(dǎo)致誤操作這需要通過(guò)“捕捉窗口”(Snapping Window)進(jìn)行精細(xì)化管理。2.2 捕捉容差精度與效率的平衡藝術(shù)“捕捉容差”是一個(gè)至關(guān)重要的參數(shù)卻容易被忽略。它定義了光標(biāo)距離目標(biāo)捕捉點(diǎn)多遠(yuǎn)時(shí)吸附動(dòng)作會(huì)被觸發(fā)。這個(gè)距離以像素為單位。容差太小你需要把鼠標(biāo)移動(dòng)得非常精確才能觸發(fā)捕捉操作起來(lái)費(fèi)時(shí)費(fèi)力體驗(yàn)很差。容差太大光標(biāo)稍微一靠近就可能吸附到你不希望捕捉的要素上導(dǎo)致誤操作。特別是在要素密集的區(qū)域你可能想捕捉A點(diǎn)結(jié)果總是被旁邊的B點(diǎn)“劫持”。如何設(shè)置合理的容差沒(méi)有絕對(duì)的標(biāo)準(zhǔn)但有一個(gè)原則容差大小應(yīng)略大于你手動(dòng)穩(wěn)定控制鼠標(biāo)的抖動(dòng)范圍。通常默認(rèn)的10-15像素是一個(gè)不錯(cuò)的起點(diǎn)。你可以根據(jù)個(gè)人操作習(xí)慣和當(dāng)前地圖顯示比例尺進(jìn)行調(diào)整當(dāng)你在小比例尺下查看全局地圖縮得很小時(shí)要素在屏幕上顯得很密集可以適當(dāng)調(diào)小容差如5像素避免誤捕捉。當(dāng)你在超大比例尺下進(jìn)行精細(xì)編輯地圖放得很大時(shí)屏幕上的要素間距很大可以適當(dāng)調(diào)大容差如15-20像素讓捕捉更容易觸發(fā)。我的經(jīng)驗(yàn)是不要追求一次捕捉成功而是利用好捕捉提示。ArcGIS在光標(biāo)滿足捕捉條件時(shí)會(huì)改變光標(biāo)的圖標(biāo)并顯示捕捉類(lèi)型的符號(hào)如綠色方塊、十字。你可以先觀察這個(gè)提示是否出現(xiàn)確認(rèn)捕捉目標(biāo)正確后再點(diǎn)擊鼠標(biāo)。這比盲目調(diào)整容差更可靠。2.3 捕捉環(huán)境與選項(xiàng)的深層配置除了工具條上的按鈕菜單欄上的“捕捉”選項(xiàng)里藏著更多高級(jí)設(shè)置它們決定了捕捉行為的底層邏輯。捕捉到草圖 (Snap to Sketch)這是一個(gè)“編輯時(shí)”的捕捉。當(dāng)你正在繪制一條多段線時(shí)啟用此功能你當(dāng)前正在畫(huà)的這條線被稱(chēng)為“草圖”本身的節(jié)點(diǎn)和線段也可以作為捕捉目標(biāo)。這有什么用呢經(jīng)典場(chǎng)景繪制一個(gè)閉合多邊形。你畫(huà)完最后一條邊希望它的終點(diǎn)能精確地捕捉到這條多邊形的起點(diǎn)從而實(shí)現(xiàn)完美閉合。如果沒(méi)有“捕捉到草圖”你就很難讓終點(diǎn)吸附到起點(diǎn)上因?yàn)槠瘘c(diǎn)屬于“草圖”的一部分而非已完成的要素。啟用后問(wèn)題迎刃而解。使用捕捉代理 (Use Snapping Agents)這個(gè)選項(xiàng)通常與自定義的捕捉類(lèi)如幾何網(wǎng)絡(luò)、拓?fù)溥呄嚓P(guān)在基礎(chǔ)編輯中較少用到。但在進(jìn)行拓?fù)渚庉嫽蚓W(wǎng)絡(luò)數(shù)據(jù)維護(hù)時(shí)它確保了捕捉行為符合更復(fù)雜的規(guī)則集。捕捉提示 (Snapping Tips)務(wù)必保持啟用。它就是在光標(biāo)旁顯示“Endpoint”、“Vertex”等文字提示的小功能是防止誤操作的關(guān)鍵視覺(jué)反饋。3. 實(shí)戰(zhàn)演練從零開(kāi)始構(gòu)建一個(gè)拓?fù)淝鍧嵉臄?shù)據(jù)集現(xiàn)在我們通過(guò)一個(gè)完整的案例將捕捉功能用起來(lái)。假設(shè)我們的任務(wù)是基于一份掃描的街區(qū)底圖數(shù)字化創(chuàng)建房屋面圖層和道路中心線圖層并要求房屋與道路之間無(wú)重疊道路線在路口完美連接。3.1 階段一準(zhǔn)備工作與環(huán)境設(shè)置數(shù)據(jù)與地圖準(zhǔn)備新建一個(gè)地圖文檔加載掃描的街區(qū)柵格底圖作為背景。創(chuàng)建兩個(gè)空的Shapefile或地理數(shù)據(jù)庫(kù)要素類(lèi)一個(gè)面要素類(lèi)叫Blocks房屋區(qū)塊一個(gè)線要素類(lèi)叫Roads道路。編輯器與捕捉設(shè)置啟動(dòng)編輯器加載Blocks和Roads圖層到編輯會(huì)話中。打開(kāi)“捕捉”工具條和“捕捉”窗口。配置捕捉窗口在捕捉窗口中你會(huì)看到所有可編輯圖層的列表。我們的策略是對(duì)于Roads圖層勾選其自身的“端點(diǎn)”、“折點(diǎn)”和“邊線”捕捉。這意味著畫(huà)道路時(shí)新畫(huà)的線可以捕捉到已經(jīng)畫(huà)好的道路的端點(diǎn)和邊上確保路網(wǎng)連通。對(duì)于Blocks圖層勾選其自身的“邊線”捕捉方便繪制相鄰房屋時(shí)共享邊界。同時(shí)最關(guān)鍵的一步在Roads圖層那一行勾選“邊線”捕捉。這意味著畫(huà)房屋邊界時(shí)可以捕捉到道路的邊線從而保證房屋邊界與道路邊界對(duì)齊不侵入道路紅線。將捕捉容差設(shè)置為12像素。確保菜單欄【編輯器】【捕捉】【捕捉到草圖】和【捕捉提示】都已勾選。3.2 階段二數(shù)字化道路中心線開(kāi)始編輯在創(chuàng)建要素窗口中選擇Roads模板使用“線”構(gòu)造工具。繪制第一條路在底圖上單擊開(kāi)始繪制。由于沒(méi)有其他線可供捕捉第一條路可以自由繪制。畫(huà)完后雙擊結(jié)束草圖。繪制相交道路應(yīng)用捕捉開(kāi)始繪制第二條與第一條路相交的道路。在起點(diǎn)處將鼠標(biāo)移動(dòng)到第一條路的邊線附近當(dāng)光標(biāo)出現(xiàn)綠色虛線邊線捕捉或綠色方塊端點(diǎn)捕捉如果你希望從路口開(kāi)始提示時(shí)單擊確定起點(diǎn)。這就保證了新道路的起點(diǎn)精確落在現(xiàn)有道路上。繪制到需要與第一條路交叉的位置時(shí)繼續(xù)移動(dòng)鼠標(biāo)。由于我們啟用了所有捕捉類(lèi)型當(dāng)光標(biāo)到達(dá)兩條線一條是現(xiàn)有道路邊線一條是你正在畫(huà)的草圖線的虛擬交點(diǎn)時(shí)ArcGIS會(huì)計(jì)算出交點(diǎn)位置并顯示交點(diǎn)捕捉符號(hào)通常是一個(gè)菱形。在此處單擊就創(chuàng)建了一個(gè)完美的路口節(jié)點(diǎn)。繼續(xù)繪制剩余部分并結(jié)束。檢查與修正使用“編輯折點(diǎn)”工具放大路口檢查。一個(gè)合格的路口兩條線的節(jié)點(diǎn)應(yīng)該完全重合。你可以單擊這個(gè)節(jié)點(diǎn)如果兩條線都被高亮說(shuō)明捕捉成功拓?fù)湔_。如果發(fā)現(xiàn)微小的偏移可以啟用“捕捉”后用編輯工具拖動(dòng)節(jié)點(diǎn)它會(huì)自動(dòng)吸附到正確位置。3.3 階段三數(shù)字化房屋區(qū)塊實(shí)現(xiàn)與道路的邊界對(duì)齊切換編輯要素在創(chuàng)建要素窗口中選擇Blocks模板使用“面”構(gòu)造工具。利用邊線捕捉繪制開(kāi)始繪制一個(gè)房屋多邊形。當(dāng)你繪制靠近道路的邊時(shí)刻意將鼠標(biāo)向道路邊線移動(dòng)直到出現(xiàn)綠色的邊線捕捉提示虛線。此時(shí)單擊這個(gè)多邊形的折點(diǎn)就會(huì)精確地落在道路邊界上。實(shí)現(xiàn)共享邊界當(dāng)繪制相鄰的另一個(gè)房屋區(qū)塊時(shí)其與第一個(gè)房屋相鄰的邊可以直接捕捉到第一個(gè)房屋的邊線上。這樣兩個(gè)房屋之間就沒(méi)有縫隙或重疊實(shí)現(xiàn)了邊界共享。閉合多邊形繪制到最后一條邊希望終點(diǎn)捕捉回起點(diǎn)時(shí)依靠“捕捉到草圖”功能。將鼠標(biāo)移向起點(diǎn)當(dāng)起點(diǎn)位置出現(xiàn)捕捉提示時(shí)單擊多邊形完美閉合。通過(guò)以上流程你創(chuàng)建的道路網(wǎng)絡(luò)是連通的房屋區(qū)塊與道路、房屋與房屋之間的空間關(guān)系是清晰、精確的。這為后續(xù)的任何空間分析如服務(wù)區(qū)分析、鄰接查詢(xún)打下了堅(jiān)實(shí)的數(shù)據(jù)基礎(chǔ)。4. 高頻問(wèn)題排查與進(jìn)階技巧實(shí)錄即使熟練掌握了基本操作在實(shí)際生產(chǎn)中還是會(huì)遇到各種奇怪的問(wèn)題。下面是我總結(jié)的一些典型場(chǎng)景和解決方法。4.1 問(wèn)題一捕捉提示時(shí)有時(shí)無(wú)或根本不出現(xiàn)可能原因及排查圖層可見(jiàn)性與比例尺檢查目標(biāo)捕捉圖層在當(dāng)前視圖比例尺下是否可見(jiàn)圖層屬性中設(shè)置了可見(jiàn)比例尺范圍。如果圖層被關(guān)閉或超出顯示范圍則無(wú)法捕捉。捕捉類(lèi)型未啟用再次確認(rèn)“捕捉”窗口中對(duì)你需要捕捉的那個(gè)圖層對(duì)應(yīng)的捕捉類(lèi)型端點(diǎn)、折點(diǎn)等是否勾選。編輯會(huì)話問(wèn)題有時(shí)編輯器狀態(tài)會(huì)卡住。嘗試停止編輯并保存然后重新啟動(dòng)編輯。這是一個(gè)非常有效的“重啟大法”。容差設(shè)置不當(dāng)檢查當(dāng)前地圖的顯示比例。如果你放得非常大例如1:500默認(rèn)的10像素容差對(duì)應(yīng)的地面距離可能極小導(dǎo)致難以觸發(fā)。適當(dāng)調(diào)大容差或在更合理的比例尺下編輯。要素選擇狀態(tài)如果你不小心選中了某個(gè)要素有時(shí)捕捉行為會(huì)受到影響。按CtrlD取消所有選擇再試。4.2 問(wèn)題二想捕捉A卻總是吸附到B可能原因及排查要素密度過(guò)高這是最常見(jiàn)的原因。在密集區(qū)域多個(gè)捕捉目標(biāo)都在容差范圍內(nèi)。解決方案調(diào)小捕捉容差。臨時(shí)關(guān)閉干擾圖層的捕捉在“捕捉”窗口中取消勾選那些你暫時(shí)不需要捕捉的圖層。放大視圖大幅放大視圖增加屏幕上要素間的像素距離讓目標(biāo)要素“孤立”出來(lái)。捕捉優(yōu)先級(jí)ArcGIS內(nèi)部對(duì)不同捕捉類(lèi)型有默認(rèn)優(yōu)先級(jí)通常交點(diǎn)、端點(diǎn)優(yōu)先級(jí)較高。當(dāng)多個(gè)類(lèi)型同時(shí)滿足條件時(shí)會(huì)觸發(fā)優(yōu)先級(jí)高的。你需要更精確地移動(dòng)鼠標(biāo)讓光標(biāo)更靠近你真正想捕捉的目標(biāo)幾何點(diǎn)。4.3 問(wèn)題三捕捉導(dǎo)致編輯性能變慢或卡頓可能原因及排查對(duì)過(guò)于復(fù)雜的圖層啟用了捕捉如果你對(duì)一個(gè)包含數(shù)十萬(wàn)個(gè)要素的圖層啟用了捕捉每次移動(dòng)鼠標(biāo)軟件都要在巨大數(shù)據(jù)量中實(shí)時(shí)計(jì)算最近的捕捉點(diǎn)必然卡頓。解決方案只為當(dāng)前編輯真正需要參考的、數(shù)據(jù)量較小的關(guān)鍵圖層啟用捕捉。對(duì)于大型背景參考圖層可以將其轉(zhuǎn)換為只讀的“捕捉代理”或使用其簡(jiǎn)化版本。硬件或顯示問(wèn)題確保計(jì)算機(jī)圖形性能足夠并嘗試在ArcMap中關(guān)閉一些不必要的視覺(jué)效果如地圖緩存、透明效果等。4.4 進(jìn)階技巧使用“追蹤”工具進(jìn)行高效數(shù)字化“捕捉”工具條上有一個(gè)神器叫**追蹤 (Trace)**工具。它特別適用于沿著現(xiàn)有要素的形態(tài)進(jìn)行快速數(shù)字化。比如你有一條河流的岸線現(xiàn)在需要繪制對(duì)岸的線使其與現(xiàn)有岸線保持平行且距離恒定。啟用你需要用到的捕捉類(lèi)型通常是邊線捕捉。選擇“追蹤”工具。將鼠標(biāo)放在現(xiàn)有線要素的起點(diǎn)附近當(dāng)出現(xiàn)邊線捕捉提示時(shí)單擊確定追蹤的起點(diǎn)。然后沿著現(xiàn)有要素移動(dòng)鼠標(biāo)你會(huì)看到一條臨時(shí)線追蹤線緊貼著原有要素的邊線生成。到達(dá)終點(diǎn)后單擊就快速創(chuàng)建了一條與原有要素幾何形態(tài)高度一致的新線。你還可以在追蹤時(shí)設(shè)置偏移量來(lái)繪制平行線。這個(gè)工具將捕捉的“吸附”能力升級(jí)為了“仿形”能力在數(shù)字化等高線、邊界、管道并行線路等場(chǎng)景下能提升數(shù)倍效率。捕捉功能的熟練掌握標(biāo)志著你從GIS的“繪圖員”向“數(shù)據(jù)工程師”邁進(jìn)了一步。它關(guān)乎的是數(shù)據(jù)的底層質(zhì)量而高質(zhì)量的數(shù)據(jù)是所有高級(jí)空間分析可信度的根本。剛開(kāi)始可能會(huì)覺(jué)得有點(diǎn)束縛但習(xí)慣之后你會(huì)離不開(kāi)它因?yàn)樗鼛?lái)的那種精準(zhǔn)和可控才是專(zhuān)業(yè)工作的底氣。