999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

矢量PDF 地圖中“圓”的處理方法研究

2022-12-04 02:31:32胡浩杰李中全張順喜
中文信息 2022年9期
關(guān)鍵詞:頁面設(shè)置

胡浩杰 李中全 張順喜

(78125 部隊,四川 成都 610066)

矢量PDF地圖是用矢量元素描述的PDF格式的電子地圖。和在網(wǎng)絡(luò)數(shù)據(jù)交換領(lǐng)域廣泛使用的柵格PDF地圖相比,矢量PDF地圖因其制圖相對困難的原因而鮮有使用。但矢量PDF地圖具有數(shù)據(jù)量較柵格PDF地圖小很多(10倍以上)的原因,矢量PDF地圖一直以來都有著較好的使用前景。

Adobe公司提供了轉(zhuǎn)換軟件(如Adobe Acrobat)可以將EPS地圖數(shù)據(jù)轉(zhuǎn)換成矢量PDF地圖。這樣生產(chǎn)的矢量PDF地圖用于出版是完美的,但用作電子地圖使用就存在地圖數(shù)據(jù)量大(和柵格PDF地圖差不多)和地圖打開速度慢的問題(慢到用戶無法忍受)。這也導(dǎo)致了目前矢量PDF地圖一般僅用于地圖出版,而在網(wǎng)絡(luò)交換領(lǐng)域很少使用。

因此,有必要利用公開的PDF編碼機制結(jié)合矢量地圖的特點制作適合于電子地圖使用的矢量PDF地圖。因為數(shù)據(jù)量越小的電子地圖越能實現(xiàn)快速共享,因此在保持豐富的地圖符號的基礎(chǔ)上,極限追求最小的數(shù)據(jù)量就是研究矢量PDF地圖的目標(biāo)。本文主要研究解決矢量PDF地圖中描繪“圓”的問題。通過分析PDF編碼機制中“圓”的編碼方法,提出了一種在矢量PDF地圖中描述“圓”的方案,減少了矢量PDF地圖的數(shù)據(jù)量。

一、PDF編碼規(guī)則中對圓的特殊規(guī)定

根據(jù)《PDF Reference》中關(guān)于形狀路徑的構(gòu)建規(guī)定,構(gòu)建矢量路徑只有折線、三次貝塞爾曲線和矩形,并沒有能夠直接構(gòu)建圓的路徑構(gòu)建操作符。因此,矢量PDF地圖中的圓只有利用三次貝塞爾曲線來描繪,但三次貝塞爾曲線是無法精確描繪一個圓的,而且用一條三次貝塞爾曲線來擬合的圓會出現(xiàn)肉眼可見的誤差。目前比較好的方法是采用四條三次貝塞爾曲線來擬合圓,雖然仍然無法描繪完美的圓,但是已經(jīng)可達肉眼不可覺察的要求了[1]。

圖1顯示了用四條三次貝塞爾曲線擬合圓的示意圖。將一個圓分為四段,每段都用下面的公式來確定P0、P1、P2、P3四個控制點。

根據(jù)Adobe公司公開的PDF編碼規(guī)則文檔《PDF Reference》,構(gòu)建一條三次貝塞爾曲線有三步。

第一步:使用“m”操作符開始一條路徑。操作數(shù)為路徑第一個點的坐標(biāo),例如:0 0 m,表示在(0,0)點開始以一條路徑。

第二步:使用“c”操作符構(gòu)建一條三次貝塞爾曲線。它有三個操作數(shù),按照順序分別是兩個控制點和一個路徑的終點。在圖1中構(gòu)建了一個四分之一的圓,其三次貝塞爾曲線的操作數(shù)按照順序就是P1,P2,P3。

因此,構(gòu)建圖1中的一條四分之一圓的格式就是:

x1y1m %開始一條路徑

X y1x2Y x2y2c %構(gòu)建三次貝塞爾曲線

而構(gòu)建一個完整圓就是連續(xù)的四條三次貝塞爾曲線。例如構(gòu)建一個中心點在100 100,半徑為100的圓的PDF編碼如下。

二、處理圓的目的

在一幅矢量地圖中存在大量的“圓”,如圖2所示的地圖符號都包含圓,特別是一個小圓點也要用實心圓來表示。矢量PDF地圖中的一個“圓”需要用四條三次貝塞爾曲線來描繪。以固定三位數(shù)定位點坐標(biāo)做比較,描繪一個圓需要占用117個字節(jié)而描繪一段直線需要22字節(jié),矩形需要20字節(jié),可見描繪一個圓的數(shù)據(jù)量大大多于其他圖元。因此為了減少數(shù)據(jù)量,需要專題研究矢量PDF地圖中“圓”的描繪方法(如圖2)。

三、利用X對象避免圓的多次描繪

在PDF編碼規(guī)則中,X對象是一種可以在頁面中多次重復(fù)使用的頁面資源。因此可以做一個基準(zhǔn)“圓”,在矢量PDF地圖頁面中,任何使用圓的地方都可以調(diào)用這個基準(zhǔn)圓。X對象可以是一個矢量圖形,也可以是一個柵格圖像。不建議使用柵格圖像。第一,柵格圖像本身的數(shù)據(jù)量不小,根據(jù)清晰度的不同幾KB至十幾KB不等。但對于一幅本身1MB左右的矢量PDF地圖來說,已經(jīng)很大了。第二,柵格圖像在放大率較大的時候會出現(xiàn)模糊甚至是馬賽克現(xiàn)象。第三,柵格圖像是不透明的,無法實現(xiàn)空心圓。因此本文只討論使用矢量圖形來構(gòu)建基準(zhǔn)圓的方法。

1.X對象的編碼機制

下面簡要討論X對象的編碼方法[2]。

X對象是資源對象序列中的一種對象,如圖3所示。設(shè)置兩個X對象(填充圓和描邊圓)就可以表示矢量PDF地圖中的所有的圓。在資源對象序列中設(shè)置X對象后,需要在頁面對象的Resource屬性中注冊,然后就可以在頁面對象中使用了,在頁面對象中使用只需要使用操作符Do即可。

上面的編碼示例是在頁面對象中注冊了一個名為X1201的X對象。

上面的編碼示例是在矢量PDF地圖頁面上放置了一個X對象。通過設(shè)置變形矩陣可以設(shè)置圓的大小,也可以把圓放到正確的位置,下面分別描述兩個X對象的設(shè)置。

2.填充圓的設(shè)置

填充圓是既設(shè)置描邊又設(shè)置填充的圓。填充圓的另一個重要作用是表示“點”。

上面的編碼設(shè)置了一個填充圓。在構(gòu)建了圓的路徑后,采用路徑描繪操作符“B”(作用是填充及描繪路徑),將路徑描繪在PDF頁面中。在這個X對象中,沒有設(shè)置任何的圖形狀態(tài),如顏色、線寬、虛線樣式等,這些屬性都可以在頁面對象中去設(shè)置,一旦在X對象中設(shè)置,在頁面對象中的圖形狀態(tài)設(shè)置就無效了。這樣就保證了這個X對象可以表達矢量PDF地圖中的所有填充圓。對于“點”來說,實際上就是半徑很小的黑色填充圓。在頁面對象中不需要設(shè)置任何的圖形狀態(tài),只需要設(shè)置變形矩陣cm,將填充圓設(shè)置的足夠的小并且放置到正確的位置就可以了。

3.描邊圓的設(shè)置

描邊圓是只描邊的圓,是一個空心圓。其X對象的編碼和填充圓的編碼幾乎完全一樣,只是將填充圓編碼中采用的路徑描繪操作符“B”改為“S”(作用是僅描邊)。

考慮到既然描邊圓和填充圓的代碼幾乎完全相同,能不能夠在X對象中只設(shè)定路徑而不描繪,在頁面中去描繪呢。在《PDF Reference》并沒有明確的相關(guān)規(guī)定。為此,專門進行了實驗,試圖在X對象中只描述路徑,而既不加入圖形狀態(tài)操作符代碼,也不用路徑描繪抄作符來描繪。而實驗結(jié)果并不支持使用這種方法,在X對象中如果不進行描繪,在頁面對象中,即使使用了X對象,也無法完成對X對象路徑的描繪。因此得出了PDF的X對象的必須要使用路徑描繪操作符完成對路徑的描繪的結(jié)論。

4.圓的大小和位置的控制

圓的大小和位置依靠在執(zhí)行操作符Do前設(shè)置變形矩陣cm來實現(xiàn)。cm操作符有6個操作數(shù)a b c d e f,設(shè)置cm可以使X對象產(chǎn)生各種位移和變形,其中最簡單的是縮放和位移。設(shè)置操作數(shù)中的a和d實現(xiàn)圓的縮放,這里的數(shù)字就是縱向和橫向的縮放倍數(shù),設(shè)置為2就是放大兩倍,設(shè)置為0.1就是縮小10倍。這兩個數(shù)字應(yīng)設(shè)置為相同的數(shù)字,如果不這樣設(shè)置圓就會形變?yōu)闄E圓。操作數(shù)e和f實現(xiàn)圓的定位。因為X對象中設(shè)置的圓的中心點是(0 0)點,這里設(shè)置的e、f就是矢量PDF地圖中圓的中心點的位置。例如設(shè)置為0.1 0 0 0.1 100 100 cm,就是放置了一個中心點為(100 100)的,半徑為10的圓。

5.圖形狀態(tài)設(shè)置的注意事項

因為圓的大小和虛線樣式都是用變形矩陣來控制的,而變形矩陣的縮放是對整個圓進行了縮放,對線寬和虛線都有影響。實際上,變形矩陣的縮放倍數(shù)對線寬和虛線樣式的設(shè)置具有同樣的縮放效果,如下例所示。

在上面的編碼中,在描繪X對象X0前設(shè)置了線寬、虛線樣式和變形矩陣,這樣畫出來的圓事實上是線寬為1,虛線樣式為[2 1] 0 d的圓。

注意:圖形狀態(tài)不是一步一步起作用的,而是在執(zhí)行圖形描繪操作的時候才起作用的。交換圖形狀態(tài)的設(shè)置順序?qū)D形沒有影響。例如,上例中交換圖形狀態(tài)的設(shè)置順序為:

描繪出來的圓和前例相比沒有任何變化。

四、效果分析

設(shè)置一個X對象的標(biāo)準(zhǔn)圓需要258個字節(jié),設(shè)置兩個標(biāo)準(zhǔn)圓需要516個字節(jié)。在矢量PDF地圖中執(zhí)行操作符Do描繪一個圓需要30個字節(jié)(包含設(shè)置cm變形矩陣)。和利用三次貝塞爾曲線描繪圓(需要117個字節(jié))相比,數(shù)據(jù)量減少了75%。而因為設(shè)置兩個基準(zhǔn)圓的X對象(描邊圓和填充圓)而增加的數(shù)據(jù)量只有0.5KB左右。地圖中的圓越多,對地圖數(shù)據(jù)量的減少也明顯,一幅有1000個圓的地圖,地圖數(shù)據(jù)量的減少能達到87KB,而對于一幅1MB左右的矢量PDF地圖,這樣的數(shù)據(jù)量的減少已經(jīng)很可觀了。

對于單幅矢量PDF地圖來說,使用這種方法減少的數(shù)據(jù)量并不是很大,對于目前高速的網(wǎng)絡(luò)帶寬和存儲空間來說,這幾十KB的優(yōu)化看起來很小。但這樣做的有以下幾點好處。一是數(shù)據(jù)量是矢量PDF地圖在網(wǎng)絡(luò)數(shù)據(jù)交換領(lǐng)域的生命線,任何能夠減少數(shù)據(jù)量的方法都是一次性能的提升。二是地理信息數(shù)據(jù)從來都是海量的數(shù)據(jù)。不論是存儲還是網(wǎng)絡(luò)傳輸,一旦和龐大的數(shù)量相乘就會發(fā)生質(zhì)變。

五、結(jié)論

本文設(shè)計了一種利用X對象設(shè)置基準(zhǔn)圓,在矢量PDF地圖頁面中利用變形矩陣描繪需求圓的方法。此方法避免了在矢量PDF頁面中多次描繪需要用四條三次貝塞爾曲線來描繪的圓。另一方面,由于使用了X對象避免了大量三次貝塞爾曲線的生成,制作矢量PDF地圖系統(tǒng)也減少了很多的計算量,也加快了矢量PDF地圖的制圖速度。在保證矢量PDF地圖質(zhì)量的情況下,不斷減少矢量PDF地圖的數(shù)據(jù)量,必將使矢量PDF地圖的應(yīng)用更加廣泛。

猜你喜歡
頁面設(shè)置
大狗熊在睡覺
刷新生活的頁面
中隊崗位該如何設(shè)置
少先隊活動(2021年4期)2021-07-23 01:46:22
本刊欄目設(shè)置說明
中俄臨床醫(yī)學(xué)專業(yè)課程設(shè)置的比較與思考
地鐵出入段線轉(zhuǎn)換軌設(shè)置
同一Word文檔 縱橫頁面并存
淺析ASP.NET頁面導(dǎo)航技術(shù)
主站蜘蛛池模板: 天天色天天综合网| 国产精品人成在线播放| 网友自拍视频精品区| 片在线无码观看| 欧美精品成人一区二区在线观看| 97在线国产视频| 国产小视频a在线观看| 欧美在线导航| 国产第一页第二页| 亚洲第七页| 婷婷伊人久久| 欧美一级在线看| 波多野结衣无码视频在线观看| 日本在线免费网站| 日韩国产欧美精品在线| 一区二区午夜| 成人亚洲视频| 国产精品香蕉| 亚洲欧美日韩成人在线| 成人欧美日韩| 亚洲精品第一页不卡| 老汉色老汉首页a亚洲| 久久香蕉国产线看精品| 国产污视频在线观看| 日韩视频福利| 国产成人精品视频一区二区电影 | 免费a在线观看播放| 国产又爽又黄无遮挡免费观看| 亚洲精品大秀视频| 成年人国产视频| 伊人天堂网| 国产成人8x视频一区二区| 国内精品视频在线| 欧美午夜在线视频| 久操线在视频在线观看| 国产手机在线ΑⅤ片无码观看| 2020国产精品视频| 成人91在线| 在线播放真实国产乱子伦| 欧美精品影院| 亚洲成综合人影院在院播放| 亚洲品质国产精品无码| 亚洲无码精品在线播放| 国产欧美日韩91| 四虎精品国产AV二区| 国产女人18毛片水真多1| 国产jizz| 久久精品人妻中文视频| 国产欧美在线观看一区| 97se亚洲综合| 久久黄色视频影| 亚洲天堂网在线播放| 2022国产无码在线| 成人va亚洲va欧美天堂| 成人欧美在线观看| 91在线无码精品秘九色APP| 色妞www精品视频一级下载| 欧美精品H在线播放| 亚洲精品天堂自在久久77| 亚洲精品国产综合99久久夜夜嗨| 国产h视频在线观看视频| 久久不卡国产精品无码| 精品一区二区三区中文字幕| 91精品亚洲| 视频国产精品丝袜第一页| 97色婷婷成人综合在线观看| 高h视频在线| 免费高清自慰一区二区三区| 国产精鲁鲁网在线视频| 人妻丰满熟妇αv无码| 日韩精品免费在线视频| 亚洲国产精品一区二区第一页免 | 黄色网址手机国内免费在线观看| 久久久久人妻一区精品色奶水| 在线色国产| 久草网视频在线| 国产人成乱码视频免费观看| 久久久精品久久久久三级| 一级毛片在线播放免费| 天天色天天操综合网| 欧美亚洲一区二区三区导航 | 精品成人一区二区|