尤西霞,李成名,武鵬達,殷 勇
(中國測繪科學研究院,北京100830)
不同界線符號實部相交的自動化處理方法
尤西霞,李成名,武鵬達,殷 勇
(中國測繪科學研究院,北京100830)
制圖規范中要求不同界線實部相交,然而當前制圖軟件多未考慮界線相交處虛線的處理,而且國內外文獻針對實部相交的研究較少,尚未形成完整的解決方案,基于此,本文根據單元循環配置法繪制地圖線狀符號的基本思想,首先拆分原始單元塊,然后分解原始的數據圖層,最后將新單元塊和新圖層對應配置,并據此設計了自動化處理方法。通過實際數據驗證了算法的有效性和合理性,該方法顧及了不同等級、不同類別界線的差異,并通過自動化的處理方法提高了地圖編輯的效率。
界線符號;單元循環配置;單元塊;實部相交
界線作為地圖諸多要素中最基本的要素之一,是國家實施有效行政管理必不可少的依據[1]。制圖對象中的界線主要包括:政治區界線、行政區劃界、地理區域界,甚至還有經濟、人文區域界等[2]。在制圖規范中,界線的表示方法要求:境界線的形狀按實地位置描繪,其轉折處用點或實線段繪出,境界交會處也應當是點或實線[3],當不同界線相交時,最好能保證其實線部分相交。
目前,現有的制圖軟件(如ArcGIS、MapGIS等)中的界線符號,只是由固定單元塊沿著界線循環配置而成,后期依賴制圖人員用CorelDRAW、AI等軟件進行界線相交處虛線的處理。國內學者中鮮有提出解決方案,其中張曉通提出利用配對法[4],找到與線目標相連的同一符號的線目標,并通過調整符號模板的長度,保證線末端以實部結束,這種方法對于不同等級的界線相交不適用,并且要動態進行配對,比較耗時,而且顯示速度較慢。本文根據單元塊線狀符號設計的循環配置的基本思想[5],從符號繪制的根本方法入手,在原始符號單元塊基礎上分解出半實部單元和去半實部單元,在相交的結點處,按照弧段端點與結點的關系,截取相應的長度,并輸出到新的數據圖層中,最后將不同圖層的數據按照對應的單元塊進行配置,從而解決繪制中要求的不同等級界線符號實部相交的自動化處理問題。
不同制圖規范中符號長度、寬度、面積等有差別,本文中以第一次地理國情普查數據作為試驗數據,以2016年國務院全國地理國情普查領導小組下發的第9號文件《地理國情普查成果圖技術規定》[6]為制圖規范。圖1為規范對于不同種類界線的符號樣式的規定。
從圖1可看出,界線符號具有共同的特征:都是實虛相間的線符號,只是實部、虛部的具體特征不同。本文所講到虛線包括一線一點、一線多點、多線多點等多種組合的虛線;實部指的是符號中的實線,虛部指與實線相鄰的點及空白。制圖規范中要求的界線實部相交,就是指與不同界線在相交處需為符號中實線的一部分,而非空白;同時還要求在重復單元長度大致相等的前提下保證符號的完整性。
因為國界關乎我國的政治主張與外交立場,稍有不慎會帶來不可估量的后果[7],因此國界線繪制的基本規則和規范與其他符號并不完全相同,所以本文并不考慮國界這種特殊的界線,只對其他一般行政區界線進行處理。
界線符號屬于符號數據模型中的線狀符號數據模型。目前的研究中成果中,線狀符號的設計方法一般分為3種[8]:單元循環配置法(橫向循環配置法)、線型疊加法(縱向線型疊加法)和函數法(程序法線符號)。根據圖1中界線符號的構圖規律來看,可以根據單元循環配置的方法繪制界線符號。
2.1 單元塊
單元塊是指線狀符號可以由固定圖元塊沿著線狀要素的骨架線循環配置而成[9],實質就是最小的循環單元。圖2中列舉了幾種界線符號,第三列矩形框內為其對應的單元塊(包括實線、實線間空白、點、點前空白及點后空白)。

圖2 幾種界線符號和其對應的單元塊
2.2 單元塊的拆分
要保證實部相交,需要在交點處均配置實線,若將原始符號中的線段直接放到交點處,會使符號化后的虛線中出現明顯的過長實線段,不符合地圖制圖的基本原則。因此,需要將一個完整的單元塊拆分為半實部和去半實部兩部分,這樣在交點處一個半實部加上一個去半實部,恰好能組成一個完整的符號單元,其中,半實部指的是原始單元塊實線長度的一半,去半實部指的是原始單元塊除去半實部以后剩余的部分。
圖3列舉了圖2單元塊對應的半實部單元和去半實部單元,并在圖上標注對應的長度(單位為mm),其中(a)單元塊的線寬為0.5 mm,(b)、(c)單元塊的線寬為0.4 mm,(d)單元塊的線寬為0.3 mm。

圖3 幾種行政區界線單元塊的拆分
2.3 單元塊的繪制
圖3中不同界線的單元塊、半實部單元塊、去半實部單元塊的繪制方法大致相同,以省級行政區界線的原始單元塊為例進行說明:
步驟1:在編輯器中新建符號庫-地理國情線(全開),并添加分類5-行政區劃與管理單元。
步驟2:確定符號的編號22,可改線寬0.5(單元塊的線寬),符號的寬度和高度8(一個單元塊的總長度),符號名稱:省級界線,繪制方式:循環配置,符號顏色43(即黑色)。

圖4 配置符號參數
步驟3:選擇菜單中選項-鍵盤輸入圖形,根據單元塊上3條線的位置分別輸入相應的起始點坐標,點擊確定,坐標原點為(0,0),其中的點為邊長等于0.5 cm的正方形。圖5中前3幅圖依次為鍵盤輸入線時起始點坐標,最后為編輯完成的最后效果。
步驟4:編輯完成后右鍵-保存為新符號即可。
3.1 對界線原始數據的預處理
3.1.1 統一方向
首先將同一圖層的界線方向統一為順時針方向或逆時針方向,具體方法不在本文中描述。若不進行此操作,交點恰好均為所關聯的2條同類界線的起點或終點,會在交點處全部配置為該界線所對應的半實部單元或去半實部單元,從整體看并不是正確的循環單元。圖6以地、市、州級行政區界線(L1、L2)與縣級行政區界線(L3)相交為例,在交點A處,由于L1、L2的起點均為A點,因此在矩形框區域內,配置的均為地、市、州級行政區界線的去半實部單元,從整體來看,導致在交點處的循環單元中多出一條實線,不符合制圖規范,因此必須將同一圖層的界線數據統一方向。
3.1.2 構建點線拓撲
每條弧都有一個首結點和一個末結點;每個結點都有一個弧的鏈表,記錄與該結點相連的弧。只與結點和弧相關的拓撲稱為點線拓撲[10]。本文中,建立點線拓撲的主要步驟為:弧段自相交處理、弧段之間相交的處理、去除冗余節點、結點擬合、去除重復弧、去除假結點、延伸長懸線、刪除短懸線。建立點線拓撲后,就可以得到每個結點關聯的弧段信息。

圖5 單元塊的繪制

圖6 同類界線在交點處均配置去半實部單元
3.2 結點處弧段的拆分
對于結點處關聯的每條弧段進行相似的處理:
(1) 根據弧段L所在圖層DataStore,得到其所對應的半實部單元的長度HalfLength和去半實部單元的長度RestLength。
(2) 判斷結點A為L的起點還是終點。若為起點,則進行步驟a;若為終點,則進行步驟b:
a. 從A起沿L方向截取RestLength,將截取的弧段存儲到去半實部輸出圖層RestStore中;
b. 從A起沿L的反方向截取HalfLength,將截取的弧段存儲到半實部輸出圖層HalfStore中。
(3) 將截取后剩余的弧段存儲到正常界線輸出圖層NormalStore中。
通過這樣的處理以后,每一個DataStore被分解為RestStore、HalfStore、NormalStore 3個圖層。
3.3 圖層拆分的程序實現過程
(1) 定義分割點信息的結構體PointInformation,包含成員變量Split1(從起點沿弧段截取RestLength得到的分割點)、Split2(從終點沿弧段反方向截取HalfLength得到的分割點)、FirstIndex(Split1前一點的索引)、SecondIndex(Split2前一點的索引),后文會涉及弧段重新組裝的過程,由于線上的點只能通過點的索引得到,因此必須記錄點的索引。還需定義map容器SplitPointsMap,使當前處理弧段和弧段上分割點信息相對應。如圖7所示,弧段由P0~P(N-1)的N個點組成,從起點0截取RestLength長度得到分割點Split1(位于Pi和P(i+1)之間), FirstIndex的值為i;從終點沿弧段反方向截取HalfLength長度得到分割點Split2(位于Pj和P(j+1)之間),SecondIndex的值為j。
(2) 定義每個圖層用來存儲截取的半實部弧段容器HalfArcVec,去半實部弧段容器RestArcVec,正常弧段容器NormalArcVec。

圖7 弧段分割示意圖
(3) 外部for循環每個結點,若當前節點關聯的所有弧段屬于同一圖層,則將每條弧段放入原始圖層對應的NormalArcVec中(保證處理的為不同界線);內部for循環結點Node關聯的每條弧段,對于長度小于一個單元塊長度的弧段不作處理,直接放入圖層對應的NormalArcVec中。
對于當前處理弧段Arc,若Node為Arc的起點,計算Split1和FirstIndex;若Node為Arc的終點,計算Split2和SecondIndex;并將處理過的弧段放入SplitPointsMap中。
(4) 結點循環完畢后,所有的弧段都已處理,然后for循環SplitPointsMap中的所有值,其中弧段所對應的分割點信息有以下3種情況:
a. 只有Split1一個分割點,說明該弧段為懸掛弧,并且終點只關聯當前弧段;
b. 只有Split2一個分割點,說明該弧段為懸掛弧,并且起點只關聯當前弧段;
c. 有Split1、Split2兩個分割點。
如圖6中所示,將弧段上從P0~Pi之間的點(包含首尾點,下文同此)及點Split1組成新的弧段用part1表示;由Split1、P(i+1)~Pj、Split2組成新的弧段用part2表示;由Split2和P(i+1)~P(N-1)的點組成新的弧段用part3表示;由Split1、P(i+1)~P(N-1)組成新的弧段用part4表示;由P0~Pj、Split2組成新的弧段用part5表示。
對于以上3種不同情況,處理方式分別為:
a. 將原始弧段組裝為新的弧段part1、part4兩部分,并將part1放入圖層對應的RestArcVec中,part4放入圖層對應的NormalArcVec中。
b. 將原始弧段組裝為新的弧段part3、part5兩部分,并將part3放入圖層對應的HalfArcVec中,part5放入圖層對應的NormalArcVec中。
c. 將原始弧段組裝為新的弧段part1、part2、part3這3部分,并將part1放入圖層對應的RestArcVec中,part2放入圖層對應的NormalArcVec中,part3放入圖層對應的HalfArcVec中。
(5) 利用拓撲標準化輸出,分別將不同圖層對應的RestArcVec、HalfArcVec、NormalArcVec中的弧段輸出到原始圖層對應的RestStore、HalfStore、NormalStore這3個圖層中。
(1) 半實部單元的配置。由于原始DataStore分解出的HalfStore中每個弧段的長度與半實部單元長度相同,因此,恰好能配置一個圖層相對應的半實部符號。
(2) 去半實部單元的配置。同半實部單元的配置方法相同,RestStore中的每條弧段,恰能配置一個完整的去半實部符號。
(3) NormalStore圖層中符號的配置。對于圖層中每條弧段,根據弧段長度自動調整單元塊的長度,從而保證能循環配置完整個符號的長度,這種微調對于一條完整的弧段來說是極其微小的調整,幾乎看不到其變化。
本文選取第一次地理國情普查數據中某縣綜合到1∶100 000后的境界層數據作為試驗數據,符號的制作要求為圖2中第3列中列舉的規范。基于VC++平臺開發的WJ-Ⅲ自動制圖綜合平臺,編輯并存儲所需要的符號單元,然后將算法的實現程序嵌入其中。算法調用的XML文檔主要包含以下內容:
(1) 需要處理的邊界線圖層路徑。
(2) 定義各圖層對應的半實部單元和去半實部單元長度。
(3) 制圖比例尺和構建點線拓撲時所用的容差值。
(4) 各圖層對應的半實部數據、去半實部數據、原始單元塊數據輸出圖層路徑。
原始數據中A→B之間的線為省級行政區界線, B→A之間的線為縣級行政區界線,內部的線為鄉、鎮級界線,圖8(a)為原始界線的shape數據,圖8(b)為直接配置不同圖層對應的符號后得到的數據。

圖8 處理前數據
將圖8(b)中框①區域放大后,得到圖9(a);框②區域放大后,得到圖9(c);可看到在界線相交處,均沒有實部相交。將圖8(b)中A點周圍區域放大后,得到圖9(e),在交點A關聯的省級行政區界線弧段Arc1和縣級行政區界線弧段Arc2的起點均為A,因此在A點出現了一個很長的實線部分;將圖8(b)中B點周圍區域放大后,得到圖9(g),在交點B處,兩條關聯的弧段的終點均為B,因此B點出現了3點聚集的情況。

圖9 處理前后對比
經過本算法的處理以后,框①、框②、點A、點B區域的處理結果分別對應中圖9中的(b)、(d)、(f)、(b),在交點處均實現了實部相交,并且從整體來看符號循環單元保持了一致性和完整性,并且具有良好的視覺效果。
本文從基本單元塊的繪制入手,依據點、線的拓撲關系,通過對結點處的弧段進行拆分形成界線單元塊新的組合單元:半實部單元塊、去半實部單元塊,并據此實現了不同界線符號在相交結點處的實部相交。依托中國測繪科學研究院研制的WJ-Ⅲ地圖工作站,嵌入上述綜合處理算法,以地理國情普查境界線為實驗案例,進行了實部相交自動化處理。結果表明,本文提出的方法簡單易行,提高了地圖編輯的效率及實部相交的準確率。本文目前的研究僅針對不同界線相交時的符號處理,同種界線之間相交時會出現很多相鄰閉合環,即使統一方向以后,公共弧兩個端點處仍然會出現兩個及以上弧段同時配置為半實部單元或去半實部單元,效果不是很好,有待進一步研究。
[1] 劉戎. 省級行政區域界線標準畫法數據編輯方法研究[D]. 西安:西北大學,2005.
[2] 許華燕,殷國臣,王金月,等. 地圖制圖中界線套繪色帶的原則[J]. 測繪與空間地理信息,2013,36(11):203-207.
[3] 祝國瑞,郭禮珍,尹貢白,等. 地圖設計與編繪[M]. 武漢:武漢大學出版社, 2001.
[4] 張曉通,朱海紅,李霖. 境界符號中虛線實部相交問題的研究[J]. 測繪科學,2006,31(5):104-106.
[5] 黃瑞陽. 地圖符號共享關鍵技術研究[D]. 鄭州:信息工程大學,2013.
[6] 地理國情普查成果圖技術規定:GDPJ 17—2016[S].
[7] 周昕薇,張小霞,楊國東,等. 地圖中的國界線繪制方法探析[J]. 測繪與空間地理信息,2013,36(11):211-214.
[8] 駱琪. GIS與CAD地圖符號共享方法研究[D]. 南京:南京師范大學,2012.
[9] 蔡先華,武利. 基于特征元的符號庫數據結構及算法探討[J]. 測繪學報,2004,33(3):269-273.
[10] 程雙偉. GIS中拓撲關系的建立與更新[D]. 鄭州:信息工程大學,2002.
AutomaticProcessingMethodforDifferentBorderlineSymbolsIntersectingontheSolidPart
YOU Xixia,LI Chengming,WU Pengda,YIN Yong
(Chinese Academy of Surveying and Mapping,Beijing 100830,China)
According to the Specifications for Cartographic Symbols, different borderline symbols should intersect on the solid part. However, most of graphics software doesn’t consider the problem and few research articles are devoted to finding a complete solution. Based on the principle of cell cycle configuration method to design symbol, this paper provides a new algorithm to realize the intersecting of solid parts in the dashed line and designs an automatic processing method. First, the original cell block is split into two parts. Then, the original data layer is broken up into three new layers. Finally, match the new cell block with the new data layer. Practical data are used to validate the method. The results show that our method is highly reasonable and efficient. This paper provides an automatic processing method to improve the efficiency of map editing which takes into account of different grades and different types of borderlines.
borderline symbols; cell cycle configuration; cell block; intersecting on the solid part
尤西霞,李成名,武鵬達,等.不同界線符號實部相交的自動化處理方法[J].測繪通報,2017(10):62-67.
10.13474/j.cnki.11-2246.2017.0317.
2017-02-08;
2017-08-21
國家科技支撐計劃(2015BAJ06B01);測繪地理信息公益性行業科研專項(201512020);中國測繪科學研究院基本科研業務費項目(7771606)
尤西霞(1991—),女,碩士生,研究方向為自動化制圖綜合和空間數據處理與挖掘。E-mail:yxxgis@163.com
李成名。E-mail: cmli@casm.ac.cn
P28
A
0494-0911(2017)10-0062-06