胡浩杰,張順喜,龐鵬
(78125部隊,成都 610000)
PDF地圖以其便于使用,數據量小的特點,在地圖產品網絡共享傳輸方面得到了廣泛的應用。PDF地圖可分為矢量PDF地圖和柵格PDF地圖。柵格PDF地圖由柵格地圖通過PDF轉換軟件生成,制圖簡單,容易制作成專題圖集是其優點。但因其數據量較大,不利于網絡共享,在數據量方面同圖片格式相比沒有優勢。矢量PDF地圖是由矢量元素組成的PDF格式的電子地圖。矢量PDF地圖的數據量受地圖元素數量和矢量元素的數據結構設計的影響很大,通過優化矢量PDF地圖的編碼結構,其數據量可以比柵格PDF地圖的數據量小很多。本文主要討論通過改進矢量PDF地圖數據結構,減少矢量PDF地圖數據量的方法。
制作矢量PDF地圖有2種方法,一是采用PDF轉換軟件生成;二是采用直接編寫PDF文檔編碼的方法生成[1]。
第一種方法是首先利用成熟的地理信息系統(或專業制圖系統),由數字地圖數據生成EPS出版地圖數據,再利用PDF轉換軟件(如PDF打印機、Adobe Acrobt等)生成矢量PDF地圖,如圖1所示。這種方法優點是簡單易操作,是目前生成矢量PDF地圖最簡單的方法。缺點是數據量太大,和柵格PDF地圖相比并沒有優勢。因為制作的矢量PDF地圖沒有根據地圖特點設計數據結構,其所有的地圖符號都被拆散為簡單圖元(直線、貝賽爾曲線、矩形)來存儲。導致矢量PDF地圖中存在大量的冗余數據,輸出的矢量PDF地圖的數據量并不比柵格PDF地圖的數據量小。并且由于地圖元素數量巨大,導致PDF地圖打開速度慢。這些缺點大大限制了矢量PDF地圖的使用,導致目前矢量PDF地圖的使用遠不如柵格PDF地圖。

圖1 使用EPS地圖數據制作矢量PDF地圖流程
第二種方法是開發矢量PDF地圖制圖系統并直接輸出矢量PDF地圖成果。Adobe公司公開了PDF文檔的編碼規則。因此可以結合地圖數據的特點,結合PDF文檔的編碼規則,重新設計矢量PDF地圖的數據結構,輸出優化的矢量PDF地圖,如圖2所示。用這種方法制作的矢量PDF地圖的編碼結構緊湊,數據量小,冗余數據少,地圖打開速度快,對系統資源的占用更少。缺點在于目前沒有成熟的專業制圖軟件,但顯然采用第2種方法生成的矢量PDF地圖優勢更明顯。

圖2 編寫PDF編碼輸出矢量PDF地圖流程
下面重點討論通過控制矢量PDF地圖數據精度、去除無用的冗余點,減少矢量PDF地圖數據量的幾種方法。
PDF格式是一種數據交換格式,相同的信息量而數據量更小的產品就能在網絡數據信息快速共享中獲得更大的優勢。因此減少矢量PDF地圖的數據量是矢量PDF地圖制圖的不懈追求。矢量PDF地圖編碼主要由地圖元素的狀態數據(顏色、線寬、線型等)、定位點的坐標數據和文字數據組成。而這3種數據中,坐標數據一般占比八成以上。通過減少矢量PDF地圖中存儲的大量定位點坐標的坐標位數可以顯著減少矢量PDF地圖的數據量。但是相對應的,減少定位點的坐標位數會降低矢量PDF地圖元素的精度。因此有必要研究如何控制這個度。
為了保證數字地圖的精度,其坐標數據的位數是很多的,一般能達到8位至10位甚至更多。
當前一般矢量地圖會采用分級顯示的方式,隨著地圖的放大,地圖會載入更大比例尺的地圖數據,從而使顯示的地圖要素更詳細。因此對其存儲的地圖數據會有比較大的精度要求。但因為PDF格式的特點,矢量PDF地圖不是這樣顯示的。
矢量PDF地圖是固定比例尺的地圖,實際上是類似柵格地圖的顯示樣式,其放大后的樣式如圖3所示。在地圖放大以后,地圖符號會變大,線寬會變大,就像一張印刷品上的內容放大了,但是地圖符號仍然是平滑的。而一般柵格地圖在放大后,圖像會變得粗糙,會出現明顯的馬賽克現象,如圖4所示。

圖3 矢量PDF地圖放大12倍后

圖4 柵格地圖放大12倍后
PDF格式是一種便捷的快速瀏覽的交換格式,有4個特點。一是追求能用最小的數據量交換最多的信息量,為了這個目的,PDF格式是一種自帶壓縮的格式,對文本的壓縮率特別大。二是最有利于打印和印刷。無論怎么放大縮小,頁面元素的相對位置都不會變。這是實現印刷和打印的“所見即所得”要求的最好方法。三是最便于用戶使用,特別強調不需要任何培訓,不需要閱讀說明書。而無處不在的PDF閱讀器已經成為了人們電腦上的必裝軟件,而且其可以完美跨手機、平板等多平臺使用,使PDF地圖的使用非常便捷。四是矢量元素的這種放大而不粗糙的顯示方式使矢量PDF地圖無論放大多少倍,其地圖元素的顯示都是光滑的,清楚的,真正實現了“看不清就放大了看”。
根據對矢量PDF地圖顯示機制的分析,其地圖元素的顯示精度并不會隨著地圖的放大而提高,而是隨著地圖的放大而放大。因此,放大矢量PDF地圖的主要目的是看得更清楚而不是看得更詳細。既然矢量PDF地圖使用了類似于柵格地圖的使用習慣,那么其存儲的地圖數據就沒有必要存儲那么多位數,因為即使是放大再多也看不到更加詳細的地圖元素。精度過高,小數點后位數過多的數據就成為了冗余的數據。因此可以通過減少矢量PDF地圖元素坐標的位數來大大減少矢量PDF地圖的數據量。這種方法會在一定程度上降低矢量PDF地圖元素的坐標精度,但是降低的精度是可以忍受的,而減少的矢量PDF地圖的數據量是顯著的。
下一個問題是如何確定矢量PDF地圖元素坐標的位數。既然矢量PDF地圖采用了類似柵格地圖的顯示方式,因此其數據精度也可以參照柵格地圖的數據精度來確定。紙質地圖的精度標準一般為0.1 mm。根據Adobe公司公開的描述PDF文檔編碼機制的《PDF Reference》規定,矢量PDF地圖的默認坐標尺寸為1/72英寸(1英寸等于2.54 cm)[2],約0.353 mm。0.1 mm轉為PDF坐標系為0.283。因此可將矢量PDF地圖坐標數據精度確定為0.1個PDF坐標,即所有矢量PDF地圖數據均保留1位小數。精度為0.035 mm,即可滿足矢量PDF地圖在放大到280%以后仍然有0.1 mm的精度。
在矢量地圖數據中,地圖數據為了空間統一,地圖坐標的原點(0,0)點大都不在地圖所在范圍內。那么每個地圖坐標的位數可能比較多。根據《PDF Reference》規定,PDF頁面坐標可以是正數,也可以是負數,而且頁面可以從任意坐標開始顯示,不必要從原點(0,0)點開始顯示。因此如果直接將坐標轉換為PDF地圖坐標,也能夠正確顯示,但是作為矢量PDF地圖數據這樣存儲會增大矢量PDF地圖的數據量。例如一幅長1 m,寬0.5 m的地圖A,左下角坐標為(35000,35000),右上角坐標為(36000,35500),數據單位為mm。那么整幅地圖的地圖坐標都是5位有效數字。為減少矢量PDF地圖的數據量,將所有地圖坐標進行平移,目的是將地圖坐標的原點(0,0)點移動到地圖范圍內。這樣在坐標原點附近的地圖坐標就只有1位,地圖坐標位數也可以達到最低。
現在需要確定原點的位置。如圖5所示,在一幅地圖中,原點可以放在地圖的4個角(A、B、C、D),也可以放在地圖的幾何中心(E)。PDF文檔頁面的坐標正方向和地圖平面直角坐標網的坐標方向相同,都是向右為正,向上為正。那么原點在B、C、D會導致地圖坐標出現負值,而且因為負值的存儲較正值多一位,因此B、C、D3點和A點比較顯然不具有優勢,被淘汰。E點在地圖正中心,好處是地圖坐標在0值周邊的地圖坐標會比A點多。但是同樣也會出現負數,因此也不一定比A點好。因此原點可以選擇A點也可以選擇E點。

圖5 可能的原點位置
但是地圖坐標在PDF文檔頁面上一般并不是平均分布的,因此最佳點并不一定在這些點上。如果把所有地圖坐標考慮進來計算最佳點的計算過于復雜,會大大增加地圖的生產時間,因此一般直接規定使用A點或者E點就可以了,一般為了便于計算選擇A點。
研究約定原點選擇在A點,以前面的地圖A為例。轉換為PDF坐標為,左下角(99213,99213),右上角(102047,100630)。將其左下角移動至(0,0)點,其右上角為(2834,1417),移動后所有地圖坐標均減去99213點。這樣移動以后,地圖中很多坐標值的位數都減少了,在左下角原點(0,0)點附近,坐標位數從4位減少為最少1位。最大坐標位數(右上角)從6位減少為4位。
在矢量PDF地圖中,點狀符號數據只占地圖數據的很少一部分。使用曲線的線狀與面狀符號也很少。地圖數據中70%左右的數據量是在記錄折線上的點。因此,去除折線上的冗余點可以明顯減少矢量PDF地圖數據量。但是一定要注意把握好度,去掉有意義的點會承受地圖精度降低的后果。
2.3.1 去除無意義的冗余點
這是一種尋找去掉冗余點位的方法,其特點和要求是去掉的必須是完全無意義的點位。
一是去除折線上的重疊點,也就是坐標完全相同的點。有些地圖數據的精度很高,其有些折線上的2個相鄰的定位點相隔很近,從坐標數據來看有細微差別但是按照前面所述的在轉為矢量PDF地圖坐標后,只保留了小數點后1位,有些點就重疊到了一起。例如點D0(1.01,1.01),D1(1.02,1.02)。轉為PDF后為P0(2.9,2.9),P1(2.9,2.9)。2個點就重疊到了一起,這2個點就可以去掉1個。在實際應用中,這樣的點總是存在的,而且因為是完全相同的重疊點,可以放心去掉。
二是去除沒有拐彎的折線上的點。在地圖數據中,有些折線本身拐彎就比較小,在轉為矢量PDF地圖坐標后,由于坐標位數的減少,有的折線上的點會出現不拐彎的現象。如點P0(0.388,0.388)、P1(0.777,0.387)、P3(1.165,0.388),3個點之間的角度本來就很小,在轉為PDF坐標并保留一位小數后就成為了P0(1.1,1.1)、P1(2.2,1.1)、P2(3.3,1.1)。這時候,P1點就是直線(P0,P2)上的一個點,P1點可以直接去除掉。
去掉這樣無意義的重復點,不僅可以減少矢量PDF地圖的數據量,還因為減少了矢量PDF地圖元素的數量,會在一定程度上加快矢量PDF地圖的打開速度。
2.3.2 可能會降低精度的去除定位點的方法
一是去除距離過近的點。為減少數據量,兩點之間的距離可以用橫坐標和縱坐標的變化值的和來比較。如有相鄰兩點坐標為P1(x1,y1),P2(x2,y2),其距離可以用公式L=(x2-x1)+(y2-y1)來確定。這里需要確定一個值,如0.2,那么當L小于0.2時,P2點就可以去掉了。
二是去除拐彎特別小的中間點。例如折線上有3個點,P1、P2、P3。如果P2點距離P1到P3的連線距離小,則P2點可以去掉。
這2種方法可能會在一定程度上降低矢量PDF地圖元素坐標的精度,而且有時候會對地圖符號的形狀產生較明顯影響。他們的使用價值主要在對地圖精度要求不高的時候使用,而一般情況下慎用。
通過實驗,證明通過優化矢量PDF地圖的編碼結構、控制坐標精度,可以大大減少矢量PDF地圖的數據量。
數據源:以20幅1∶100萬數字地圖數據為數據源。
實驗過程:①使用通用地理信息系統生成EPS出版地圖數據;②使用通用地理信息系統生成柵格地圖(jpeg格式);③以第一步生成的EPS出版地圖數據為數據源,使用Adobe Acrobat生成矢量PDF地圖;④利用自行研發的實驗系統,重新優化矢量PDF地圖編碼結構,生成矢量PDF地圖。執行控制矢量PDF地圖坐標精度為0.1個PDF坐標,將地圖原點移動到地圖左下角,刪除折線上無意義的冗余點的優化,不執行可能會降低坐標精度的優化方法。
表1中顯示了由10幅數字地圖生成的數字地圖、EPS出版地圖、柵格地圖、通過EPS生成的矢量PDF地圖和優化編碼生成的矢量PDF地圖的數據量。在最后一行“總計”中,統計了全部20幅圖的總和數據。
從實驗得出的表1中可以分析出以下結論:

表1 各類地圖成果數據量比較圖 MB
(1)EPS出版數據的數據量大大多于其他格式,一般只用于印刷出版,不作為電子地圖使用。
(2)柵格地圖使用了jpeg這種高壓縮格式,數據量較小,是網絡上使用的最多的格式。
(3)矢量PDF地圖的數據量較EPS出版數據低很多。因為PDF文檔是一種壓縮格式,默認使用zip格式壓縮,好處是基本不影響矢量PDF地圖的打開數據。而矢量PDF地圖是由文本或者二進制編碼構成,壓縮率非常高。
(4)利用EPS出版數據轉換而成的矢量PDF地圖的數據量與柵格地圖相比較并無優勢。但是因其制作流程較柵格地圖復雜,因而限制其在網絡傳播方面的使用。
(5)在優化編碼結構以及控制坐標精度后,矢量PDF的數據量可以大大低于柵格地圖,其數據量只有柵格地圖的4.63%~7.6%,平均6.1%。表明制作專業矢量PDF地圖系統是必要的,矢量PDF地圖在網絡應用領域的前景是光明的。
本文采用直接編寫PDF文檔編碼的方法輸出矢量PDF地圖。這種方法雖然較使用現成的PDF文檔轉換軟件困難,但是能夠充分發揮地圖的特點,靈活設計矢量PDF地圖的數據結構,最大程度上減少矢量PDF地圖的數據量。本文提出了幾種通過控制矢量PDF地圖元素坐標精度減少數據量的方法。實驗證明,這些方法都可以大大減少矢量PDF地圖的數據量。