尤西霞,李成名,武鵬達,殷 勇
(中國測繪科學(xué)研究院,北京100830)
不同界線符號實部相交的自動化處理方法
尤西霞,李成名,武鵬達,殷 勇
(中國測繪科學(xué)研究院,北京100830)
制圖規(guī)范中要求不同界線實部相交,然而當前制圖軟件多未考慮界線相交處虛線的處理,而且國內(nèi)外文獻針對實部相交的研究較少,尚未形成完整的解決方案,基于此,本文根據(jù)單元循環(huán)配置法繪制地圖線狀符號的基本思想,首先拆分原始單元塊,然后分解原始的數(shù)據(jù)圖層,最后將新單元塊和新圖層對應(yīng)配置,并據(jù)此設(shè)計了自動化處理方法。通過實際數(shù)據(jù)驗證了算法的有效性和合理性,該方法顧及了不同等級、不同類別界線的差異,并通過自動化的處理方法提高了地圖編輯的效率。
界線符號;單元循環(huán)配置;單元塊;實部相交
界線作為地圖諸多要素中最基本的要素之一,是國家實施有效行政管理必不可少的依據(jù)[1]。制圖對象中的界線主要包括:政治區(qū)界線、行政區(qū)劃界、地理區(qū)域界,甚至還有經(jīng)濟、人文區(qū)域界等[2]。在制圖規(guī)范中,界線的表示方法要求:境界線的形狀按實地位置描繪,其轉(zhuǎn)折處用點或?qū)嵕€段繪出,境界交會處也應(yīng)當是點或?qū)嵕€[3],當不同界線相交時,最好能保證其實線部分相交。
目前,現(xiàn)有的制圖軟件(如ArcGIS、MapGIS等)中的界線符號,只是由固定單元塊沿著界線循環(huán)配置而成,后期依賴制圖人員用CorelDRAW、AI等軟件進行界線相交處虛線的處理。國內(nèi)學(xué)者中鮮有提出解決方案,其中張曉通提出利用配對法[4],找到與線目標相連的同一符號的線目標,并通過調(diào)整符號模板的長度,保證線末端以實部結(jié)束,這種方法對于不同等級的界線相交不適用,并且要動態(tài)進行配對,比較耗時,而且顯示速度較慢。本文根據(jù)單元塊線狀符號設(shè)計的循環(huán)配置的基本思想[5],從符號繪制的根本方法入手,在原始符號單元塊基礎(chǔ)上分解出半實部單元和去半實部單元,在相交的結(jié)點處,按照弧段端點與結(jié)點的關(guān)系,截取相應(yīng)的長度,并輸出到新的數(shù)據(jù)圖層中,最后將不同圖層的數(shù)據(jù)按照對應(yīng)的單元塊進行配置,從而解決繪制中要求的不同等級界線符號實部相交的自動化處理問題。
不同制圖規(guī)范中符號長度、寬度、面積等有差別,本文中以第一次地理國情普查數(shù)據(jù)作為試驗數(shù)據(jù),以2016年國務(wù)院全國地理國情普查領(lǐng)導(dǎo)小組下發(fā)的第9號文件《地理國情普查成果圖技術(shù)規(guī)定》[6]為制圖規(guī)范。圖1為規(guī)范對于不同種類界線的符號樣式的規(guī)定。
從圖1可看出,界線符號具有共同的特征:都是實虛相間的線符號,只是實部、虛部的具體特征不同。本文所講到虛線包括一線一點、一線多點、多線多點等多種組合的虛線;實部指的是符號中的實線,虛部指與實線相鄰的點及空白。制圖規(guī)范中要求的界線實部相交,就是指與不同界線在相交處需為符號中實線的一部分,而非空白;同時還要求在重復(fù)單元長度大致相等的前提下保證符號的完整性。
因為國界關(guān)乎我國的政治主張與外交立場,稍有不慎會帶來不可估量的后果[7],因此國界線繪制的基本規(guī)則和規(guī)范與其他符號并不完全相同,所以本文并不考慮國界這種特殊的界線,只對其他一般行政區(qū)界線進行處理。
界線符號屬于符號數(shù)據(jù)模型中的線狀符號數(shù)據(jù)模型。目前的研究中成果中,線狀符號的設(shè)計方法一般分為3種[8]:單元循環(huán)配置法(橫向循環(huán)配置法)、線型疊加法(縱向線型疊加法)和函數(shù)法(程序法線符號)。根據(jù)圖1中界線符號的構(gòu)圖規(guī)律來看,可以根據(jù)單元循環(huán)配置的方法繪制界線符號。
2.1 單元塊
單元塊是指線狀符號可以由固定圖元塊沿著線狀要素的骨架線循環(huán)配置而成[9],實質(zhì)就是最小的循環(huán)單元。圖2中列舉了幾種界線符號,第三列矩形框內(nèi)為其對應(yīng)的單元塊(包括實線、實線間空白、點、點前空白及點后空白)。
圖2 幾種界線符號和其對應(yīng)的單元塊
2.2 單元塊的拆分
要保證實部相交,需要在交點處均配置實線,若將原始符號中的線段直接放到交點處,會使符號化后的虛線中出現(xiàn)明顯的過長實線段,不符合地圖制圖的基本原則。因此,需要將一個完整的單元塊拆分為半實部和去半實部兩部分,這樣在交點處一個半實部加上一個去半實部,恰好能組成一個完整的符號單元,其中,半實部指的是原始單元塊實線長度的一半,去半實部指的是原始單元塊除去半實部以后剩余的部分。
圖3列舉了圖2單元塊對應(yīng)的半實部單元和去半實部單元,并在圖上標注對應(yīng)的長度(單位為mm),其中(a)單元塊的線寬為0.5 mm,(b)、(c)單元塊的線寬為0.4 mm,(d)單元塊的線寬為0.3 mm。
圖3 幾種行政區(qū)界線單元塊的拆分
2.3 單元塊的繪制
圖3中不同界線的單元塊、半實部單元塊、去半實部單元塊的繪制方法大致相同,以省級行政區(qū)界線的原始單元塊為例進行說明:
步驟1:在編輯器中新建符號庫-地理國情線(全開),并添加分類5-行政區(qū)劃與管理單元。
步驟2:確定符號的編號22,可改線寬0.5(單元塊的線寬),符號的寬度和高度8(一個單元塊的總長度),符號名稱:省級界線,繪制方式:循環(huán)配置,符號顏色43(即黑色)。
圖4 配置符號參數(shù)
步驟3:選擇菜單中選項-鍵盤輸入圖形,根據(jù)單元塊上3條線的位置分別輸入相應(yīng)的起始點坐標,點擊確定,坐標原點為(0,0),其中的點為邊長等于0.5 cm的正方形。圖5中前3幅圖依次為鍵盤輸入線時起始點坐標,最后為編輯完成的最后效果。
步驟4:編輯完成后右鍵-保存為新符號即可。
3.1 對界線原始數(shù)據(jù)的預(yù)處理
3.1.1 統(tǒng)一方向
首先將同一圖層的界線方向統(tǒng)一為順時針方向或逆時針方向,具體方法不在本文中描述。若不進行此操作,交點恰好均為所關(guān)聯(lián)的2條同類界線的起點或終點,會在交點處全部配置為該界線所對應(yīng)的半實部單元或去半實部單元,從整體看并不是正確的循環(huán)單元。圖6以地、市、州級行政區(qū)界線(L1、L2)與縣級行政區(qū)界線(L3)相交為例,在交點A處,由于L1、L2的起點均為A點,因此在矩形框區(qū)域內(nèi),配置的均為地、市、州級行政區(qū)界線的去半實部單元,從整體來看,導(dǎo)致在交點處的循環(huán)單元中多出一條實線,不符合制圖規(guī)范,因此必須將同一圖層的界線數(shù)據(jù)統(tǒng)一方向。
3.1.2 構(gòu)建點線拓撲
每條弧都有一個首結(jié)點和一個末結(jié)點;每個結(jié)點都有一個弧的鏈表,記錄與該結(jié)點相連的弧。只與結(jié)點和弧相關(guān)的拓撲稱為點線拓撲[10]。本文中,建立點線拓撲的主要步驟為:弧段自相交處理、弧段之間相交的處理、去除冗余節(jié)點、結(jié)點擬合、去除重復(fù)弧、去除假結(jié)點、延伸長懸線、刪除短懸線。建立點線拓撲后,就可以得到每個結(jié)點關(guān)聯(lián)的弧段信息。
圖5 單元塊的繪制
圖6 同類界線在交點處均配置去半實部單元
3.2 結(jié)點處弧段的拆分
對于結(jié)點處關(guān)聯(lián)的每條弧段進行相似的處理:
(1) 根據(jù)弧段L所在圖層DataStore,得到其所對應(yīng)的半實部單元的長度HalfLength和去半實部單元的長度RestLength。
(2) 判斷結(jié)點A為L的起點還是終點。若為起點,則進行步驟a;若為終點,則進行步驟b:
a. 從A起沿L方向截取RestLength,將截取的弧段存儲到去半實部輸出圖層RestStore中;
b. 從A起沿L的反方向截取HalfLength,將截取的弧段存儲到半實部輸出圖層HalfStore中。
(3) 將截取后剩余的弧段存儲到正常界線輸出圖層NormalStore中。
通過這樣的處理以后,每一個DataStore被分解為RestStore、HalfStore、NormalStore 3個圖層。
3.3 圖層拆分的程序?qū)崿F(xiàn)過程
(1) 定義分割點信息的結(jié)構(gòu)體PointInformation,包含成員變量Split1(從起點沿弧段截取RestLength得到的分割點)、Split2(從終點沿弧段反方向截取HalfLength得到的分割點)、FirstIndex(Split1前一點的索引)、SecondIndex(Split2前一點的索引),后文會涉及弧段重新組裝的過程,由于線上的點只能通過點的索引得到,因此必須記錄點的索引。還需定義map容器SplitPointsMap,使當前處理弧段和弧段上分割點信息相對應(yīng)。如圖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循環(huán)每個結(jié)點,若當前節(jié)點關(guān)聯(lián)的所有弧段屬于同一圖層,則將每條弧段放入原始圖層對應(yīng)的NormalArcVec中(保證處理的為不同界線);內(nèi)部for循環(huán)結(jié)點Node關(guān)聯(lián)的每條弧段,對于長度小于一個單元塊長度的弧段不作處理,直接放入圖層對應(yīng)的NormalArcVec中。
對于當前處理弧段Arc,若Node為Arc的起點,計算Split1和FirstIndex;若Node為Arc的終點,計算Split2和SecondIndex;并將處理過的弧段放入SplitPointsMap中。
(4) 結(jié)點循環(huán)完畢后,所有的弧段都已處理,然后for循環(huán)SplitPointsMap中的所有值,其中弧段所對應(yīng)的分割點信息有以下3種情況:
a. 只有Split1一個分割點,說明該弧段為懸掛弧,并且終點只關(guān)聯(lián)當前弧段;
b. 只有Split2一個分割點,說明該弧段為懸掛弧,并且起點只關(guān)聯(lián)當前弧段;
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放入圖層對應(yīng)的RestArcVec中,part4放入圖層對應(yīng)的NormalArcVec中。
b. 將原始弧段組裝為新的弧段part3、part5兩部分,并將part3放入圖層對應(yīng)的HalfArcVec中,part5放入圖層對應(yīng)的NormalArcVec中。
c. 將原始弧段組裝為新的弧段part1、part2、part3這3部分,并將part1放入圖層對應(yīng)的RestArcVec中,part2放入圖層對應(yīng)的NormalArcVec中,part3放入圖層對應(yīng)的HalfArcVec中。
(5) 利用拓撲標準化輸出,分別將不同圖層對應(yīng)的RestArcVec、HalfArcVec、NormalArcVec中的弧段輸出到原始圖層對應(yīng)的RestStore、HalfStore、NormalStore這3個圖層中。
(1) 半實部單元的配置。由于原始DataStore分解出的HalfStore中每個弧段的長度與半實部單元長度相同,因此,恰好能配置一個圖層相對應(yīng)的半實部符號。
(2) 去半實部單元的配置。同半實部單元的配置方法相同,RestStore中的每條弧段,恰能配置一個完整的去半實部符號。
(3) NormalStore圖層中符號的配置。對于圖層中每條弧段,根據(jù)弧段長度自動調(diào)整單元塊的長度,從而保證能循環(huán)配置完整個符號的長度,這種微調(diào)對于一條完整的弧段來說是極其微小的調(diào)整,幾乎看不到其變化。
本文選取第一次地理國情普查數(shù)據(jù)中某縣綜合到1∶100 000后的境界層數(shù)據(jù)作為試驗數(shù)據(jù),符號的制作要求為圖2中第3列中列舉的規(guī)范。基于VC++平臺開發(fā)的WJ-Ⅲ自動制圖綜合平臺,編輯并存儲所需要的符號單元,然后將算法的實現(xiàn)程序嵌入其中。算法調(diào)用的XML文檔主要包含以下內(nèi)容:
(1) 需要處理的邊界線圖層路徑。
(2) 定義各圖層對應(yīng)的半實部單元和去半實部單元長度。
(3) 制圖比例尺和構(gòu)建點線拓撲時所用的容差值。
(4) 各圖層對應(yīng)的半實部數(shù)據(jù)、去半實部數(shù)據(jù)、原始單元塊數(shù)據(jù)輸出圖層路徑。
原始數(shù)據(jù)中A→B之間的線為省級行政區(qū)界線, B→A之間的線為縣級行政區(qū)界線,內(nèi)部的線為鄉(xiāng)、鎮(zhèn)級界線,圖8(a)為原始界線的shape數(shù)據(jù),圖8(b)為直接配置不同圖層對應(yīng)的符號后得到的數(shù)據(jù)。
圖8 處理前數(shù)據(jù)
將圖8(b)中框①區(qū)域放大后,得到圖9(a);框②區(qū)域放大后,得到圖9(c);可看到在界線相交處,均沒有實部相交。將圖8(b)中A點周圍區(qū)域放大后,得到圖9(e),在交點A關(guān)聯(lián)的省級行政區(qū)界線弧段Arc1和縣級行政區(qū)界線弧段Arc2的起點均為A,因此在A點出現(xiàn)了一個很長的實線部分;將圖8(b)中B點周圍區(qū)域放大后,得到圖9(g),在交點B處,兩條關(guān)聯(lián)的弧段的終點均為B,因此B點出現(xiàn)了3點聚集的情況。
圖9 處理前后對比
經(jīng)過本算法的處理以后,框①、框②、點A、點B區(qū)域的處理結(jié)果分別對應(yīng)中圖9中的(b)、(d)、(f)、(b),在交點處均實現(xiàn)了實部相交,并且從整體來看符號循環(huán)單元保持了一致性和完整性,并且具有良好的視覺效果。
本文從基本單元塊的繪制入手,依據(jù)點、線的拓撲關(guān)系,通過對結(jié)點處的弧段進行拆分形成界線單元塊新的組合單元:半實部單元塊、去半實部單元塊,并據(jù)此實現(xiàn)了不同界線符號在相交結(jié)點處的實部相交。依托中國測繪科學(xué)研究院研制的WJ-Ⅲ地圖工作站,嵌入上述綜合處理算法,以地理國情普查境界線為實驗案例,進行了實部相交自動化處理。結(jié)果表明,本文提出的方法簡單易行,提高了地圖編輯的效率及實部相交的準確率。本文目前的研究僅針對不同界線相交時的符號處理,同種界線之間相交時會出現(xiàn)很多相鄰閉合環(huán),即使統(tǒng)一方向以后,公共弧兩個端點處仍然會出現(xiàn)兩個及以上弧段同時配置為半實部單元或去半實部單元,效果不是很好,有待進一步研究。
[1] 劉戎. 省級行政區(qū)域界線標準畫法數(shù)據(jù)編輯方法研究[D]. 西安:西北大學(xué),2005.
[2] 許華燕,殷國臣,王金月,等. 地圖制圖中界線套繪色帶的原則[J]. 測繪與空間地理信息,2013,36(11):203-207.
[3] 祝國瑞,郭禮珍,尹貢白,等. 地圖設(shè)計與編繪[M]. 武漢:武漢大學(xué)出版社, 2001.
[4] 張曉通,朱海紅,李霖. 境界符號中虛線實部相交問題的研究[J]. 測繪科學(xué),2006,31(5):104-106.
[5] 黃瑞陽. 地圖符號共享關(guān)鍵技術(shù)研究[D]. 鄭州:信息工程大學(xué),2013.
[6] 地理國情普查成果圖技術(shù)規(guī)定:GDPJ 17—2016[S].
[7] 周昕薇,張小霞,楊國東,等. 地圖中的國界線繪制方法探析[J]. 測繪與空間地理信息,2013,36(11):211-214.
[8] 駱琪. GIS與CAD地圖符號共享方法研究[D]. 南京:南京師范大學(xué),2012.
[9] 蔡先華,武利. 基于特征元的符號庫數(shù)據(jù)結(jié)構(gòu)及算法探討[J]. 測繪學(xué)報,2004,33(3):269-273.
[10] 程雙偉. GIS中拓撲關(guān)系的建立與更新[D]. 鄭州:信息工程大學(xué),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);測繪地理信息公益性行業(yè)科研專項(201512020);中國測繪科學(xué)研究院基本科研業(yè)務(wù)費項目(7771606)
尤西霞(1991—),女,碩士生,研究方向為自動化制圖綜合和空間數(shù)據(jù)處理與挖掘。E-mail:yxxgis@163.com
李成名。E-mail: cmli@casm.ac.cn
P28
A
0494-0911(2017)10-0062-06