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