鄭繼武,鄧學(xué)鋒*
(1.河南省測(cè)繪工程院,河南 鄭州 450003)
在國(guó)家基本比例尺地形圖測(cè)繪中,圖幅接合表是一個(gè)重要圖件,是用于標(biāo)明某一區(qū)域多幅圖或分幅圖相關(guān)位置的略圖[1]。圖幅接合表可手工繪制或采用計(jì)算機(jī)繪圖軟件人機(jī)交互制作。手工繪制方式在區(qū)域小、圖幅數(shù)量較少的情況下具有優(yōu)勢(shì),圖形按比例縮小,制式單一,不擴(kuò)充,圖號(hào)按照規(guī)則推算;人機(jī)交互方式適用于較大區(qū)域,可按實(shí)際坐標(biāo)繪制,圖號(hào)按坐標(biāo)依規(guī)則生成,相比手工繪制方法有很大改進(jìn),但操作起來(lái)仍需不少步驟。圖幅接合表至少包括區(qū)域范圍、圖幅四廓、鄰接關(guān)系、圖號(hào)、圖名等核心元素,前4個(gè)元素容易具備,圖名則需根據(jù)作業(yè)進(jìn)展由人工添加,有一個(gè)多方協(xié)同的時(shí)序過(guò)程,易出現(xiàn)錯(cuò)漏。隨著測(cè)繪地理信息的發(fā)展,圖幅接合表不僅應(yīng)用于生產(chǎn)管理和應(yīng)用檢索,還承載了更多信息,派生出其他數(shù)據(jù)信息。國(guó)家基本比例尺地形圖測(cè)繪時(shí),中小比例尺地形圖圖幅接合表繼承使用上一代成果,圖名變動(dòng)少,一般采用個(gè)別更新的方式,不存在重新制作問(wèn)題;而1∶500、1∶1 000、1∶2 000比例尺地形圖,由于區(qū)域性強(qiáng),與域外的統(tǒng)一性和連續(xù)性較弱,接合表多屬新制,典型代表為全域測(cè)繪。因此,本文提出了一種以范圍線(xiàn)為數(shù)據(jù)源自動(dòng)繪制大比例尺地形圖圖幅接合表的方法,以期實(shí)現(xiàn)圖形自動(dòng)繪制、圖名自動(dòng)提取注記,完備接合表基本形態(tài),并擴(kuò)充屬性為應(yīng)用擴(kuò)展奠定基礎(chǔ)。
GB/T 13989-2012《國(guó)家基本比例尺地形圖分幅和編號(hào)》規(guī)定了各種比例尺地形圖的分幅和編號(hào)方法,其中1∶500、1∶1 000、1∶2 000地形圖分幅包括經(jīng)緯度分幅、正方形分幅和矩形分幅[2],其編號(hào)則有與分幅相適應(yīng)的多種方法,如坐標(biāo)編號(hào)法、流水號(hào)法、行列編號(hào)法等,日常測(cè)繪工作中尤以正方形分幅的坐標(biāo)編號(hào)法最為常用。坐標(biāo)編號(hào)法一般采用圖廓西南角坐標(biāo)編號(hào),X坐標(biāo)公里數(shù)在前,Y坐標(biāo)公里數(shù)在后,1∶2 000、1∶1 000地形圖取至0.1 km,1∶500地形圖取至0.01 km。這是自動(dòng)化繪制圖幅接合表的基礎(chǔ)約束條件。
實(shí)現(xiàn)自動(dòng)化繪制的系統(tǒng)基礎(chǔ)包括硬件和軟件,硬件為目前主流的計(jì)算機(jī);軟件包括Windows7或Windows10操作系統(tǒng)、ArcMap10.2應(yīng)用軟件、ArcPy站點(diǎn)包和ArcGIS配裝的Python編程語(yǔ)言[3]。在ArcMap環(huán)境中利用ArcPy站點(diǎn)包,采用Python語(yǔ)言,將地理處理函數(shù)和方法有機(jī)地組合起來(lái)[4],實(shí)現(xiàn)圖幅接合表的自動(dòng)繪制;再創(chuàng)建基本信息屬性,生成圖號(hào),自動(dòng)采集圖名,完善接合表核心元素。
測(cè)繪工作中,確定測(cè)區(qū)范圍線(xiàn)后,需確定圖幅數(shù)量和分布,因此需繪制圖幅接合表。手工繪制方法借助于公里格網(wǎng)分割制作,人機(jī)交互也類(lèi)似,過(guò)程復(fù)雜。數(shù)字時(shí)代的范圍線(xiàn)是數(shù)字化的,包含坐標(biāo)信息,因此自動(dòng)化繪制的條件是具備的。根據(jù)范圍線(xiàn)數(shù)據(jù)以dwg格式居多,也有shp格式或地理數(shù)據(jù)庫(kù)的特點(diǎn),基于要素復(fù)制、增密、分割、轉(zhuǎn)點(diǎn)等地理處理函數(shù),利用編輯會(huì)話(huà)函數(shù),按照分幅原則,首先自動(dòng)繪制接合表圖形,創(chuàng)建并按幅一一充實(shí)基礎(chǔ)的圖號(hào)字段信息;再創(chuàng)建圖名字段,對(duì)以dwg格式存儲(chǔ)的成果分幅圖,在人工不接觸、無(wú)視感狀況下采集圖名信息,并根據(jù)圖號(hào)對(duì)號(hào)入座。圖名產(chǎn)生在作業(yè)過(guò)程中,具有隨時(shí)性,需相對(duì)獨(dú)立的功能支撐;圖名與圖號(hào)標(biāo)注和注記功能、圖幅狀態(tài)設(shè)置、圖幅接邊狀況等制圖、生產(chǎn)管理功能同樣需要獨(dú)立。遵循該思路,具體繪制流程如圖1所示。
圖1 自動(dòng)化繪制流程圖
自動(dòng)繪制圖幅接合表需要解決的問(wèn)題包括:①圖名為漢字,支持正確顯示的問(wèn)題;②從數(shù)據(jù)源范圍線(xiàn)解析出覆蓋邊界的圖幅圖廓坐標(biāo)的技術(shù);③根據(jù)分幅原則,按照?qǐng)D廓坐標(biāo)繪制穿越邊界圖幅圖形的方法;④范圍線(xiàn)內(nèi)部圖幅的繪制方法;⑤圖名信息自動(dòng)提取技術(shù);⑥圖名、圖號(hào)一體顯示方法;⑦圖幅作業(yè)狀況和接邊情況的管理技術(shù)。
在設(shè)置不正確的情況下,漢字信息的顯示常出現(xiàn)亂碼,處理方法為首先設(shè)置“#-*-coding:utf-8-*-”,再引入sys并按以下方法重載:
正確的自動(dòng)繪制,需在參數(shù)控制下進(jìn)行。輸入?yún)?shù)包括范圍線(xiàn)數(shù)據(jù)、生成的接合表數(shù)據(jù)存放位置、比例尺、坐標(biāo)系統(tǒng)、數(shù)據(jù)模板等,前3個(gè)參數(shù)必須設(shè)置,后兩個(gè)可選。dwg數(shù)據(jù)在ArcMap中需要設(shè)定坐標(biāo)系[5],便于成果后續(xù)使用。參數(shù)輸入界面如圖2所示,比例尺參數(shù)通過(guò)下拉框選擇。
圖2 參數(shù)輸入界面
比例尺和圖廓邊長(zhǎng)處理函數(shù)需自定義,依據(jù)比例尺參數(shù),獲得對(duì)應(yīng)圖廓邊長(zhǎng),存入變量以待調(diào)用。
1)shp、mdb、gdb數(shù)據(jù)可直接使用,dwg數(shù)據(jù)在ArcMap中只能調(diào)入不能操作使用,需經(jīng)過(guò)處理轉(zhuǎn)換為shp、mdb或gdb格式數(shù)據(jù)。根據(jù)CadDrawingDataset數(shù)據(jù)類(lèi)型屬性描述信息判定dwg數(shù)據(jù);通過(guò)CopyFeatures方法實(shí)現(xiàn),涉及輸入、輸出數(shù)據(jù)[6],輸入為已有dwg數(shù)據(jù),輸出為轉(zhuǎn)換后數(shù)據(jù),由程序內(nèi)定,屬臨時(shí)數(shù)據(jù),用后銷(xiāo)毀。
2)數(shù)據(jù)源形態(tài)多樣,直線(xiàn)段與曲線(xiàn)段交替分布,互有交錯(cuò)。直線(xiàn)兩點(diǎn)跨度大,曲線(xiàn)折點(diǎn)跨度不均,為統(tǒng)一量化,通過(guò)Densify方法實(shí)現(xiàn)。Densify直接操作元數(shù)據(jù),應(yīng)在復(fù)制數(shù)據(jù)上進(jìn)行,結(jié)果為固定間隔的密集的點(diǎn)組成的線(xiàn)??刂艱ensify效果的DISTANCE參數(shù)內(nèi)置為100.0 Meters,這是由于數(shù)值小將增加點(diǎn)的密度,將導(dǎo)致圖幅重復(fù);而數(shù)值大有的圖幅則缺乏點(diǎn)數(shù)據(jù)支撐,形成圖幅漏洞,相對(duì)而言,重復(fù)比漏洞易于處理,后期處理的圖廓重復(fù)問(wèn)題即來(lái)源于此。
3)對(duì)線(xiàn)數(shù)據(jù)進(jìn)行SplitLine處理,按折點(diǎn)分解折線(xiàn)為線(xiàn)段,利用FeatureVerticesToPoints方法將線(xiàn)段首末端點(diǎn)轉(zhuǎn)化為點(diǎn),為數(shù)據(jù)的進(jìn)一步應(yīng)用創(chuàng)造條件。
1)繼承的點(diǎn)數(shù)據(jù),坐標(biāo)值有隨意性,需歸化得到圖廓坐標(biāo)。對(duì)應(yīng)于比例尺,根據(jù)公里格網(wǎng)和內(nèi)圖廓邊長(zhǎng),歸化得到點(diǎn)所在圖幅的圖廓左下角坐標(biāo)。以1∶500比例尺為例,圖廓邊長(zhǎng)為250 m,格網(wǎng)間隔為50 m,X、Y坐標(biāo)各按int(x/a)a做兩次歸化,先格網(wǎng)再圖廓各取其長(zhǎng),得到m、n。以k=m-n-250為數(shù)組[-250,0,250]中值時(shí),直接取m為圖廓坐標(biāo)值;k為正數(shù)時(shí),取n+250為圖廓坐標(biāo)值;k為負(fù)數(shù)時(shí),取n+500為圖廓坐標(biāo)值,組對(duì)成為圖廓點(diǎn)坐標(biāo),以追加的方式將圖廓坐標(biāo)聚合成數(shù)組。
2)數(shù)據(jù)歸化為圖廓點(diǎn)坐標(biāo)后,重復(fù)較多,需清除重復(fù)值,進(jìn)行輕量化處理。采用新建數(shù)組,唯一化復(fù)制原值的方法實(shí)現(xiàn)。
通過(guò)參數(shù)控制、數(shù)據(jù)處理、坐標(biāo)歸化、輕量化處理等一系列程序從范圍線(xiàn)解析出覆蓋邊界的圖幅圖廓坐標(biāo)。
接合表圖形為圖幅內(nèi)圖廓面行列有序集合,起端為面要素創(chuàng)建;同步創(chuàng)建“Nx”、“Ey”、“tuming”、“tuhao”、“zhuangtai”等屬性字段用于保存圖廓縱橫坐標(biāo)、圖名、圖號(hào)、作業(yè)狀態(tài)等內(nèi)容[7]。
程序打開(kāi)編輯器進(jìn)行編輯會(huì)話(huà),在操作狀態(tài)下進(jìn)行自動(dòng)繪制。這是一個(gè)循環(huán)過(guò)程,通過(guò)圖廓四角點(diǎn)坐標(biāo)計(jì)算形成點(diǎn)對(duì)象數(shù)組,通過(guò)程序自動(dòng)構(gòu)建覆蓋范圍線(xiàn)的圖廓面[8],儲(chǔ)存圖廓西南角坐標(biāo)屬性,銷(xiāo)毀中間文件,從而實(shí)現(xiàn)根據(jù)分幅原則,按照?qǐng)D廓坐標(biāo)繪制穿越邊界圖幅圖形的方法。
范圍線(xiàn)內(nèi)部圖幅的圖廓線(xiàn)繪制,借助于已繪制的圖廓面要素,需自定義用于按縱坐標(biāo)排序的函數(shù)和按圖廓邊長(zhǎng)內(nèi)插一排圖廓西南角坐標(biāo)的函數(shù),通過(guò)調(diào)用實(shí)現(xiàn),后者與比例尺相關(guān)。調(diào)取生成的圖廓坐標(biāo),按縱坐標(biāo)排序分類(lèi),定義數(shù)組、詞典、變量,通過(guò)數(shù)據(jù)訪問(wèn)函數(shù)SearchCursor循環(huán)返回令牌屬性實(shí)現(xiàn)。經(jīng)過(guò)這些處理,即可繪制范圍線(xiàn)內(nèi)部的圖幅圖廓線(xiàn)。
在復(fù)雜的程序操控下,圖幅接合表圖形基本繪制完成。為防止范圍線(xiàn)外有意外的圖形生產(chǎn),需要檢驗(yàn)和清除,其自動(dòng)化步驟為:①范圍線(xiàn)轉(zhuǎn)換為范圍面,利用增密線(xiàn)的各點(diǎn)坐標(biāo)生成面,這樣二者契合嚴(yán)密,而線(xiàn)轉(zhuǎn)面函數(shù)會(huì)“疏松”點(diǎn)間距,面邊緣與線(xiàn)有裂隙;②圖層定義和調(diào)入,顯示到“內(nèi)容列表”中,根據(jù)位置選擇對(duì)范圍面和圖廓面進(jìn)行內(nèi)存操作,刪除多余圖廓,同時(shí)銷(xiāo)毀一些中間生成的文件;③在屬性表中按照規(guī)則利用CalculateField方法生成圖號(hào)信息。
圖名不同于圖號(hào),是在作業(yè)過(guò)程中逐步形成的,根據(jù)圖幅內(nèi)地名或企、事業(yè)單位名稱(chēng)來(lái)命名,困難時(shí)才可只注圖號(hào),因此可單獨(dú)或批量采集,數(shù)據(jù)源為dwg分幅成果數(shù)據(jù)。ArcMap的dwg數(shù)據(jù)集包括點(diǎn)、線(xiàn)、面、注記等數(shù)據(jù),圖名、圖號(hào)信息在注記數(shù)據(jù)中。利用圖名、圖號(hào)的圖式標(biāo)準(zhǔn)化位置,通過(guò)調(diào)入、顯示、訪問(wèn)地圖文檔和數(shù)據(jù)框架、圖層定義和添加、格網(wǎng)規(guī)范化定位、指定位置矩形選擇等一系列程序方法完成圖名信息的自動(dòng)提取。
接合表圖名、圖號(hào)一體顯示方法替代繁瑣手工操作的技巧在于,由程序?qū)崿F(xiàn)地圖文檔和圖層設(shè)置,將定制的分行顯示控制代碼傳遞給圖層標(biāo)注表達(dá)式,實(shí)現(xiàn)對(duì)圖名、圖號(hào)的自動(dòng)標(biāo)識(shí)。在ArcMap中可設(shè)定合適比例、紙張尺寸,在布局視圖里可利用地圖導(dǎo)出功能,實(shí)現(xiàn)接合表的分發(fā)服務(wù),這是人工的。從范圍線(xiàn)到繪制接合表圖形以及圖名、圖號(hào)標(biāo)注內(nèi)存中的變化過(guò)程如圖3所示。
圖3 自動(dòng)繪制歷變圖
測(cè)區(qū)工作不是一蹴而就的,從任務(wù)分配到成果完成,每幅圖都經(jīng)歷了待測(cè)、在測(cè)、一檢、二檢、接邊、成果等不同階段和狀態(tài),生產(chǎn)過(guò)程中需對(duì)此進(jìn)行管理,了解圖幅流向和作業(yè)進(jìn)度。采用的方式是在接合表中以不同的符號(hào)或顏色進(jìn)行標(biāo)識(shí),可人工紙質(zhì)標(biāo)識(shí)或人機(jī)交互標(biāo)識(shí),但缺乏信息豐富的渠道,難以實(shí)現(xiàn)自動(dòng)統(tǒng)計(jì)。在接合表自動(dòng)繪制的基礎(chǔ)上,通過(guò)指定圖幅號(hào)和圖幅狀態(tài)參數(shù),根據(jù)圖號(hào)自動(dòng)匹配到接合表,更新?tīng)顟B(tài)信息。接合表參照?qǐng)D層分色顯示模板,實(shí)現(xiàn)對(duì)圖幅不同情形的表達(dá),利用統(tǒng)計(jì)功能掌握進(jìn)度狀況,服務(wù)生產(chǎn)管理。接邊狀況記載,是通過(guò)指定圖幅號(hào)以及與其完成接邊的邊的方位,利用接合表中圖廓點(diǎn)西南角坐標(biāo)推算鎖定,在線(xiàn)要素?cái)?shù)據(jù)中自動(dòng)繪制該邊線(xiàn)的方法實(shí)現(xiàn)的。線(xiàn)要素和接合表結(jié)合顯示,表明接邊情況。圖幅作業(yè)狀態(tài)和接邊情況管理功能如圖4所示。
圖4 圖幅作業(yè)狀態(tài)和接邊情況標(biāo)示
接合表圖形繪制、圖名提取、圖名圖號(hào)標(biāo)注顯示、圖幅狀態(tài)、接邊情況等程序均通過(guò)制作腳本工具來(lái)使用,利用加載項(xiàng)技術(shù)將腳本工具順序集成為工具條實(shí)現(xiàn)功能調(diào)用。由于涉及文件數(shù)量多,為方便使用,將相關(guān)程序文件制作為安裝程序,通過(guò)自動(dòng)安裝對(duì)復(fù)雜過(guò)程進(jìn)行簡(jiǎn)化。工具條界面如圖5所示。接合表工具屬性參數(shù)設(shè)定如圖6所示,其他工具條屬性參數(shù)設(shè)定與此類(lèi)似,這里不再一一列出。
圖5 工具條界面
圖6 接合表工具屬性參數(shù)設(shè)定
接合表自動(dòng)繪制方法應(yīng)用于全域測(cè)繪取得了明顯效果,具有繪制速度快、使用簡(jiǎn)捷、成果正確可靠等特點(diǎn)。其服務(wù)生產(chǎn)管理功能,不僅能實(shí)現(xiàn)對(duì)各種狀況的準(zhǔn)確管理,還能快速生成和呈報(bào)任務(wù)快報(bào),效率明顯。整個(gè)測(cè)區(qū)任務(wù)完成后,還可再次全面提取更新一次,從而避免生成過(guò)程中可能的遺漏。
該方法尚缺乏對(duì)圖幅質(zhì)量責(zé)任主體的信息管理,這是改進(jìn)的方向之一。如果已有圖幅成果,在缺乏接合表的情況下,要清楚了解圖幅分布狀況,利用成果反向生成接合表,這也是改進(jìn)的方向之一。
在ArcMap中利用Python語(yǔ)言合理組織ArcPy地理處理函數(shù),在適當(dāng)參數(shù)的支持和漢語(yǔ)環(huán)境下,以測(cè)區(qū)范圍線(xiàn)為數(shù)據(jù)源,解析并推算得到覆蓋邊界的圖幅和圖幅圖廓坐標(biāo),自動(dòng)繪制圖幅接合表,利用dwg圖幅數(shù)據(jù)圖名標(biāo)準(zhǔn)位置定位、采集圖名和圖號(hào),以圖號(hào)匹配圖名,將二者一體標(biāo)注顯示,完備接合表的核心元素形態(tài)。作為拓展應(yīng)用,該方法實(shí)現(xiàn)了圖幅作業(yè)狀況和接邊情況的管理。通過(guò)在全域測(cè)繪、數(shù)字縣域等項(xiàng)目中的應(yīng)用發(fā)現(xiàn),工具界面簡(jiǎn)潔明了,功能設(shè)置與作業(yè)和管理順序協(xié)調(diào),操作簡(jiǎn)便,具有一鍵式服務(wù)的特點(diǎn),提高了工作效率,有效避免了錯(cuò)漏;還拉長(zhǎng)了接合表的使用鏈條,可持續(xù)應(yīng)用于后期的建庫(kù)階段或元數(shù)據(jù)制作中。