鄭繼武,鄧學鋒*
(1.河南省測繪工程院,河南 鄭州 450003)
在國家基本比例尺地形圖測繪中,圖幅接合表是一個重要圖件,是用于標明某一區域多幅圖或分幅圖相關位置的略圖[1]。圖幅接合表可手工繪制或采用計算機繪圖軟件人機交互制作。手工繪制方式在區域小、圖幅數量較少的情況下具有優勢,圖形按比例縮小,制式單一,不擴充,圖號按照規則推算;人機交互方式適用于較大區域,可按實際坐標繪制,圖號按坐標依規則生成,相比手工繪制方法有很大改進,但操作起來仍需不少步驟。圖幅接合表至少包括區域范圍、圖幅四廓、鄰接關系、圖號、圖名等核心元素,前4個元素容易具備,圖名則需根據作業進展由人工添加,有一個多方協同的時序過程,易出現錯漏。隨著測繪地理信息的發展,圖幅接合表不僅應用于生產管理和應用檢索,還承載了更多信息,派生出其他數據信息。國家基本比例尺地形圖測繪時,中小比例尺地形圖圖幅接合表繼承使用上一代成果,圖名變動少,一般采用個別更新的方式,不存在重新制作問題;而1∶500、1∶1 000、1∶2 000比例尺地形圖,由于區域性強,與域外的統一性和連續性較弱,接合表多屬新制,典型代表為全域測繪。因此,本文提出了一種以范圍線為數據源自動繪制大比例尺地形圖圖幅接合表的方法,以期實現圖形自動繪制、圖名自動提取注記,完備接合表基本形態,并擴充屬性為應用擴展奠定基礎。
GB/T 13989-2012《國家基本比例尺地形圖分幅和編號》規定了各種比例尺地形圖的分幅和編號方法,其中1∶500、1∶1 000、1∶2 000地形圖分幅包括經緯度分幅、正方形分幅和矩形分幅[2],其編號則有與分幅相適應的多種方法,如坐標編號法、流水號法、行列編號法等,日常測繪工作中尤以正方形分幅的坐標編號法最為常用。坐標編號法一般采用圖廓西南角坐標編號,X坐標公里數在前,Y坐標公里數在后,1∶2 000、1∶1 000地形圖取至0.1 km,1∶500地形圖取至0.01 km。這是自動化繪制圖幅接合表的基礎約束條件。
實現自動化繪制的系統基礎包括硬件和軟件,硬件為目前主流的計算機;軟件包括Windows7或Windows10操作系統、ArcMap10.2應用軟件、ArcPy站點包和ArcGIS配裝的Python編程語言[3]。在ArcMap環境中利用ArcPy站點包,采用Python語言,將地理處理函數和方法有機地組合起來[4],實現圖幅接合表的自動繪制;再創建基本信息屬性,生成圖號,自動采集圖名,完善接合表核心元素。
測繪工作中,確定測區范圍線后,需確定圖幅數量和分布,因此需繪制圖幅接合表。手工繪制方法借助于公里格網分割制作,人機交互也類似,過程復雜。數字時代的范圍線是數字化的,包含坐標信息,因此自動化繪制的條件是具備的。根據范圍線數據以dwg格式居多,也有shp格式或地理數據庫的特點,基于要素復制、增密、分割、轉點等地理處理函數,利用編輯會話函數,按照分幅原則,首先自動繪制接合表圖形,創建并按幅一一充實基礎的圖號字段信息;再創建圖名字段,對以dwg格式存儲的成果分幅圖,在人工不接觸、無視感狀況下采集圖名信息,并根據圖號對號入座。圖名產生在作業過程中,具有隨時性,需相對獨立的功能支撐;圖名與圖號標注和注記功能、圖幅狀態設置、圖幅接邊狀況等制圖、生產管理功能同樣需要獨立。遵循該思路,具體繪制流程如圖1所示。

圖1 自動化繪制流程圖
自動繪制圖幅接合表需要解決的問題包括:①圖名為漢字,支持正確顯示的問題;②從數據源范圍線解析出覆蓋邊界的圖幅圖廓坐標的技術;③根據分幅原則,按照圖廓坐標繪制穿越邊界圖幅圖形的方法;④范圍線內部圖幅的繪制方法;⑤圖名信息自動提取技術;⑥圖名、圖號一體顯示方法;⑦圖幅作業狀況和接邊情況的管理技術。
在設置不正確的情況下,漢字信息的顯示常出現亂碼,處理方法為首先設置“#-*-coding:utf-8-*-”,再引入sys并按以下方法重載:

正確的自動繪制,需在參數控制下進行。輸入參數包括范圍線數據、生成的接合表數據存放位置、比例尺、坐標系統、數據模板等,前3個參數必須設置,后兩個可選。dwg數據在ArcMap中需要設定坐標系[5],便于成果后續使用。參數輸入界面如圖2所示,比例尺參數通過下拉框選擇。

圖2 參數輸入界面
比例尺和圖廓邊長處理函數需自定義,依據比例尺參數,獲得對應圖廓邊長,存入變量以待調用。
1)shp、mdb、gdb數據可直接使用,dwg數據在ArcMap中只能調入不能操作使用,需經過處理轉換為shp、mdb或gdb格式數據。根據CadDrawingDataset數據類型屬性描述信息判定dwg數據;通過CopyFeatures方法實現,涉及輸入、輸出數據[6],輸入為已有dwg數據,輸出為轉換后數據,由程序內定,屬臨時數據,用后銷毀。
2)數據源形態多樣,直線段與曲線段交替分布,互有交錯。直線兩點跨度大,曲線折點跨度不均,為統一量化,通過Densify方法實現。Densify直接操作元數據,應在復制數據上進行,結果為固定間隔的密集的點組成的線。控制Densify效果的DISTANCE參數內置為100.0 Meters,這是由于數值小將增加點的密度,將導致圖幅重復;而數值大有的圖幅則缺乏點數據支撐,形成圖幅漏洞,相對而言,重復比漏洞易于處理,后期處理的圖廓重復問題即來源于此。
3)對線數據進行SplitLine處理,按折點分解折線為線段,利用FeatureVerticesToPoints方法將線段首末端點轉化為點,為數據的進一步應用創造條件。
1)繼承的點數據,坐標值有隨意性,需歸化得到圖廓坐標。對應于比例尺,根據公里格網和內圖廓邊長,歸化得到點所在圖幅的圖廓左下角坐標。以1∶500比例尺為例,圖廓邊長為250 m,格網間隔為50 m,X、Y坐標各按int(x/a)a做兩次歸化,先格網再圖廓各取其長,得到m、n。以k=m-n-250為數組[-250,0,250]中值時,直接取m為圖廓坐標值;k為正數時,取n+250為圖廓坐標值;k為負數時,取n+500為圖廓坐標值,組對成為圖廓點坐標,以追加的方式將圖廓坐標聚合成數組。
2)數據歸化為圖廓點坐標后,重復較多,需清除重復值,進行輕量化處理。采用新建數組,唯一化復制原值的方法實現。
通過參數控制、數據處理、坐標歸化、輕量化處理等一系列程序從范圍線解析出覆蓋邊界的圖幅圖廓坐標。
接合表圖形為圖幅內圖廓面行列有序集合,起端為面要素創建;同步創建“Nx”、“Ey”、“tuming”、“tuhao”、“zhuangtai”等屬性字段用于保存圖廓縱橫坐標、圖名、圖號、作業狀態等內容[7]。
程序打開編輯器進行編輯會話,在操作狀態下進行自動繪制。這是一個循環過程,通過圖廓四角點坐標計算形成點對象數組,通過程序自動構建覆蓋范圍線的圖廓面[8],儲存圖廓西南角坐標屬性,銷毀中間文件,從而實現根據分幅原則,按照圖廓坐標繪制穿越邊界圖幅圖形的方法。
范圍線內部圖幅的圖廓線繪制,借助于已繪制的圖廓面要素,需自定義用于按縱坐標排序的函數和按圖廓邊長內插一排圖廓西南角坐標的函數,通過調用實現,后者與比例尺相關。調取生成的圖廓坐標,按縱坐標排序分類,定義數組、詞典、變量,通過數據訪問函數SearchCursor循環返回令牌屬性實現。經過這些處理,即可繪制范圍線內部的圖幅圖廓線。
在復雜的程序操控下,圖幅接合表圖形基本繪制完成。為防止范圍線外有意外的圖形生產,需要檢驗和清除,其自動化步驟為:①范圍線轉換為范圍面,利用增密線的各點坐標生成面,這樣二者契合嚴密,而線轉面函數會“疏松”點間距,面邊緣與線有裂隙;②圖層定義和調入,顯示到“內容列表”中,根據位置選擇對范圍面和圖廓面進行內存操作,刪除多余圖廓,同時銷毀一些中間生成的文件;③在屬性表中按照規則利用CalculateField方法生成圖號信息。
圖名不同于圖號,是在作業過程中逐步形成的,根據圖幅內地名或企、事業單位名稱來命名,困難時才可只注圖號,因此可單獨或批量采集,數據源為dwg分幅成果數據。ArcMap的dwg數據集包括點、線、面、注記等數據,圖名、圖號信息在注記數據中。利用圖名、圖號的圖式標準化位置,通過調入、顯示、訪問地圖文檔和數據框架、圖層定義和添加、格網規范化定位、指定位置矩形選擇等一系列程序方法完成圖名信息的自動提取。
接合表圖名、圖號一體顯示方法替代繁瑣手工操作的技巧在于,由程序實現地圖文檔和圖層設置,將定制的分行顯示控制代碼傳遞給圖層標注表達式,實現對圖名、圖號的自動標識。在ArcMap中可設定合適比例、紙張尺寸,在布局視圖里可利用地圖導出功能,實現接合表的分發服務,這是人工的。從范圍線到繪制接合表圖形以及圖名、圖號標注內存中的變化過程如圖3所示。

圖3 自動繪制歷變圖
測區工作不是一蹴而就的,從任務分配到成果完成,每幅圖都經歷了待測、在測、一檢、二檢、接邊、成果等不同階段和狀態,生產過程中需對此進行管理,了解圖幅流向和作業進度。采用的方式是在接合表中以不同的符號或顏色進行標識,可人工紙質標識或人機交互標識,但缺乏信息豐富的渠道,難以實現自動統計。在接合表自動繪制的基礎上,通過指定圖幅號和圖幅狀態參數,根據圖號自動匹配到接合表,更新狀態信息。接合表參照圖層分色顯示模板,實現對圖幅不同情形的表達,利用統計功能掌握進度狀況,服務生產管理。接邊狀況記載,是通過指定圖幅號以及與其完成接邊的邊的方位,利用接合表中圖廓點西南角坐標推算鎖定,在線要素數據中自動繪制該邊線的方法實現的。線要素和接合表結合顯示,表明接邊情況。圖幅作業狀態和接邊情況管理功能如圖4所示。

圖4 圖幅作業狀態和接邊情況標示
接合表圖形繪制、圖名提取、圖名圖號標注顯示、圖幅狀態、接邊情況等程序均通過制作腳本工具來使用,利用加載項技術將腳本工具順序集成為工具條實現功能調用。由于涉及文件數量多,為方便使用,將相關程序文件制作為安裝程序,通過自動安裝對復雜過程進行簡化。工具條界面如圖5所示。接合表工具屬性參數設定如圖6所示,其他工具條屬性參數設定與此類似,這里不再一一列出。

圖5 工具條界面

圖6 接合表工具屬性參數設定
接合表自動繪制方法應用于全域測繪取得了明顯效果,具有繪制速度快、使用簡捷、成果正確可靠等特點。其服務生產管理功能,不僅能實現對各種狀況的準確管理,還能快速生成和呈報任務快報,效率明顯。整個測區任務完成后,還可再次全面提取更新一次,從而避免生成過程中可能的遺漏。
該方法尚缺乏對圖幅質量責任主體的信息管理,這是改進的方向之一。如果已有圖幅成果,在缺乏接合表的情況下,要清楚了解圖幅分布狀況,利用成果反向生成接合表,這也是改進的方向之一。
在ArcMap中利用Python語言合理組織ArcPy地理處理函數,在適當參數的支持和漢語環境下,以測區范圍線為數據源,解析并推算得到覆蓋邊界的圖幅和圖幅圖廓坐標,自動繪制圖幅接合表,利用dwg圖幅數據圖名標準位置定位、采集圖名和圖號,以圖號匹配圖名,將二者一體標注顯示,完備接合表的核心元素形態。作為拓展應用,該方法實現了圖幅作業狀況和接邊情況的管理。通過在全域測繪、數字縣域等項目中的應用發現,工具界面簡潔明了,功能設置與作業和管理順序協調,操作簡便,具有一鍵式服務的特點,提高了工作效率,有效避免了錯漏;還拉長了接合表的使用鏈條,可持續應用于后期的建庫階段或元數據制作中。