(上海市測繪院第四分院 200333)
隨著新技術的發(fā)展,地圖用戶的閱圖習慣和用圖需求產(chǎn)生了重大的變化,讀圖人群知識結構和生活習慣的改變,都促使了傳統(tǒng)紙質(zhì)地圖需要做出新的變革。因此,研究實現(xiàn)地圖產(chǎn)品的移動化和移動輔助閱圖技術顯得越來越重要。
隨著“智能化”大潮來襲,智能終端在全球市場的地位逐步提升,智能手機和平板電腦等消費電子市場正處在快速上升時期。在平板電腦領域,蘋果自2010年推出首款iPad 之后,就統(tǒng)領了平板電腦市場,iPad 無疑是平板電腦領域的領軍者。有調(diào)查預測數(shù)據(jù)顯示,雖然后有微軟的首款平板電腦Surface 和谷歌的Nexus7 陸續(xù)發(fā)布,但是蘋果iPad 平板電腦仍將長期占據(jù)全球市場大量份額。
基于目前iPad 在平板電腦領域領先的市場占有率,本論文立足IOS系統(tǒng),以屏幕更大、地圖閱讀體驗更好的iPad 為應用終端,開展基于平板電腦的地圖發(fā)布技術研究。通過研究現(xiàn)有的地圖產(chǎn)品《上海地圖-大城區(qū)詳圖》,嘗試在發(fā)布紙質(zhì)地圖時同步推出iPad 版,提高地圖用戶閱圖的便捷性,豐富地圖的對外服務方式,大幅提高地圖服務的受眾面,逐漸吸引年輕用戶群體關注的地圖產(chǎn)品。
《上海地圖-大城區(qū)詳圖》是上海市測繪院在2012年1月份推出的新款地圖產(chǎn)品。該地圖具有了紙質(zhì)地圖的主要特征:紙張幅面大,《上海地圖-大城區(qū)詳圖》大全張地圖,尺寸達到了1024mm×1248mm;雙拼地圖,《上海地圖-大城區(qū)詳圖》的正反兩面分別表示了上海的浦東和浦西地區(qū),如果用戶購買兩張地圖,就可以拼合起來使用;此外,還有地圖成果數(shù)據(jù)量大的特征。
本論文的主要研究內(nèi)容包括以下幾方面:
1、研究地圖的發(fā)布流程。如何有效地實現(xiàn)地圖數(shù)據(jù)從CDR 文件轉(zhuǎn)換成iPad 平板電腦可使用的圖片文件成為了本論文研究的首要內(nèi)容。
2、突破圖片緩存瓶頸。由于地圖幅面大,iPad 平板電腦的緩存受到了極大的挑戰(zhàn),如果將整幅圖片直接導入使用,則會出現(xiàn)程序閃退的現(xiàn)象。因此,如何解決iPad 平板電腦對于圖片緩存瓶頸是本論文關鍵的研究內(nèi)容。
3、解決數(shù)據(jù)壓縮問題。為了保證地圖的展示質(zhì)量,確保用戶能清晰地查看地圖和標注,圖片必須具有高精度的DPI 輸出作為保證。因此,地圖圖片數(shù)據(jù)量將會比較大,作為一個APP 應用,在不影響使用的前提下,如何壓縮數(shù)據(jù),成為了本論文的另一個關鍵的研究內(nèi)容。
通過《上海地圖-大城區(qū)詳圖》項目的開展和制作,解決了本論文的主要研究內(nèi)容,以下介紹一下具體的解決方案。
以CDR格式存儲的矢量地圖產(chǎn)品為例,形成相應的地圖發(fā)布流程,流程包括制作、輸出和在移動終端的發(fā)布流程如圖1所示:
圖1 紙質(zhì)圖發(fā)布流程
1、進行CDR 文件處理,形成需要展現(xiàn)的地圖內(nèi)容。輸出400DPI 精度的圖片,保存為JPG格式圖片;
在CDR 環(huán)境中,由于數(shù)據(jù)量較大且圖框外有白邊,所以采用圖框精確裁剪的方法將數(shù)據(jù)分為尺寸左框1024×624 右框1024×650(26mm 重疊邊)兩幅圖,完成裁剪后導出EPS格式數(shù)據(jù)。使用Acrobat Distiller 軟件將EPS 文件轉(zhuǎn)成PDF格式使圖幅不會出現(xiàn)黑邊,然后用PS 軟件打開進行柵格化處理,打開PDF 數(shù)據(jù)設置圖幅尺寸為左框1024×624,右框1024×650(重疊邊)、顏色模式為RGB、分辨率為400dpi 保存為PSD格式,完成后再在PS 軟件中設置畫布大小1024×1248 將兩幅圖幅拼接最后導出符合系統(tǒng)所需的400dpi-JPG格式。
2、開發(fā)切圖工具,采用Python 語言結合IDLE圖形管理控件自行開發(fā)自動切圖工具,切割形成行列矩陣瓦片。
為實現(xiàn)在ipad 端流暢顯示離線電子地圖的效果,解決圖片緩存瓶頸,避免程序閃退。項目在開發(fā)中采用了CAlayer 類來管理圖片。CAlayer的工作原理是把大尺寸的圖片切割成小切片,例如1000×1000 像素。然后每次在視圖內(nèi)加載對應的切片。這樣可以實現(xiàn)大尺寸圖片在APP 內(nèi)的快速加載。并且CAlayer 類集成了對手勢操作的應對方法,可以流暢的進行圖片的拖動、單擊、縮放等。
為了提供系統(tǒng)需要的數(shù)據(jù),首先要把電子底圖成品切割成自定義大小的切片。以大城區(qū)詳圖電子圖為例,切片大小統(tǒng)一定義為1000×1000 像素。這幅圖的尺寸為19663×16133 像素。本例中把它切割成20 行,17 列共340幅切片。每幅圖的命名規(guī)則采用name_row_coloume的方式。在CAlayer 類中,自動根據(jù)行(row)、列(colume)加載切片。為了達到快速切圖的效果,項目組采用Python 和IDLE 接口開發(fā)了一個自動切圖程序,這個程序可以快速的對多幅電子圖進行切片,提高了工作效率。
自動切圖程序關鍵代碼如下:
下圖2是切圖成果,從圖片的命名可以看出,是遵照上述命名方式命名的。APP 程序會根據(jù)命名規(guī)則加載切片。
圖2 成果命名方式
3、為了進一步壓縮數(shù)據(jù),減小數(shù)據(jù)容量,我們再次開發(fā)數(shù)據(jù)導入工具,通過SQLite 數(shù)據(jù)庫存儲長二進制圖片數(shù)據(jù),以進一步壓縮圖片。
我們采用SQLite 3 作為數(shù)據(jù)庫,管理數(shù)據(jù),這是一種開源輕型數(shù)據(jù)庫,整個數(shù)據(jù)庫存儲為一個單一文件中,存儲用于瀏覽的圖片長二進制數(shù)據(jù)。在數(shù)據(jù)制作過程中,根據(jù)SQLite 3的結構特點和功能需要,進行了數(shù)據(jù)庫表的設計,表結構如下表1:
表1 瓦片數(shù)據(jù)庫結構
最后,通過數(shù)據(jù)導入工具,根據(jù)數(shù)據(jù)庫表的設計,導入最終的圖片數(shù)據(jù)。
數(shù)據(jù)導入程序關鍵代碼如下:
表完成"+dt2.Rows.Count.ToString()+"條記錄的SQL 語句寫入!");
4、調(diào)用數(shù)據(jù)在移動終端顯示,實現(xiàn)圖片在iPad終端的離線瀏覽。
在開發(fā)過程中,采用Xcode 4.5 平臺直接讀取SQLite 3 數(shù)據(jù)庫的方式,把功能需要的數(shù)據(jù)讀取,并在平板電腦上顯示出來,并最終實現(xiàn)了大圖片在i-Pad 終端的離線瀏覽、平移、縮放等功能。
基于平板電腦的地圖發(fā)布技術研究克服了平板電腦緩存瓶頸、數(shù)據(jù)壓縮等關鍵技術,形成了較完整地地圖發(fā)布流程,拓寬了紙質(zhì)地圖在移動終端的應用,為基于蘋果系統(tǒng)Xcode 平臺開發(fā)APP 產(chǎn)品提供了借鑒。
論文中所示例的《大城區(qū)詳圖HD》最終形成了面向公眾服務的一款APP 產(chǎn)品,用戶可通過App-Store 商店免費下載使用。