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

基于Qt的輕量級電子地圖的設計與實現

2021-04-25 14:05:34梅榮月
電腦知識與技術 2021年9期
關鍵詞:瓦片

梅榮月

摘要:提出并實現了一種基于Qt的輕量級電子地圖。該地圖在墨卡托投影坐標系下,使用當前流行的地圖瓦片技術,利用nginx搭建地圖瓦片服務器,滿足企業輕量級應用業務開發需求,具有跨平臺、功能豐富、效率高等特性,具有良好的移植性、維護性和擴展性。

關鍵詞:電子地圖;地圖瓦片;墨卡托投影;Qt;Nginx

中圖分類號:TP311? ? ? 文獻標識碼:A

文章編號:1009-3044(2021)09-0076-02

開放科學(資源服務)標識碼(OSID):

1 背景

隨著社會和科技的發展,地理信息系統(GIS)在社會信息化的進程中起到了不可或缺的作用。地理信息系統作為人口、資源與環境問題的公共展示平臺,在國家推動信息化和現代化的過程中起到非常重要的作用[4]。地理信息系統以其跨行業、多功能的優勢,不斷開拓新的應用領域,廣泛應用于教育、醫療、自動駕駛、建筑等行業。為了滿足自動化辦公需求,企業在業務開發中對地理信息系統的需求日益增加。當前流行的Arc GIS平臺以及開源的Geo Server平臺對計算機的硬件配置要求非常高,而在輕量級業務開發中,由于成本問題,大型商用GIS平臺都不適用。所以輕量級的電子地圖在小型業務開發中具有廣闊的應用場景。

2 概述

眾所周知地球是一個三維的橢圓球體,人們平時使用的地圖都是在一個二維平面上,將三維的經緯度信息(即球面坐標信息)轉換成二維的平面坐標信息的過程就稱為投影。本文中的電子地圖使用的是墨卡托(Mercator) 投影[3],墨卡托投影具有等角特性,在當今的導航產業中發揮著重要的作用。

投影完成后,橢圓的地球就變成了一幅正方形的平面地圖。在投影的過程中存在不可避免的誤差,本文中的電子地圖緯度表示范圍為(-85.09—85.09),但這并不影響正常的使用。由于地球上的元素信息太多太多,一張圖片肯定不能涵蓋全部信息,本文中的電子地圖使用了當前流行的地圖瓦片技術,地圖瓦片按層級存儲在地圖瓦片服務器中。在第0級的時候,世界地圖用1張256 × 256像素的圖片就可以表示,地圖上只有一些宏觀的地理信息;在第1級的時候,世界地圖用4張256 × 256像素的圖片表示,地圖上的地理信息更豐富一些;依次類推,在第n級的時候,世界地圖用張256 × 256像素的圖片表示。隨著圖片數量的增加,地圖上的地理信息會越來越豐富,人們可以根據自己不同的需求查看不同層級的地圖。

本文的電子地圖使用的地圖瓦片是從Google地圖瓦片服務器上下載下來的,具體的瓦片地址如下:http://mt2.google.cn/vt/lyrs=m@167000000&hl=zh-CN&gl=cn&x=420&y=193&z=9&s=Galil。其中mt2.google.cn表示Google地圖瓦片服務器地址,替換為mt1.google.cn依然有效,為減輕服務器負載,提高網絡訪問效率,Google提供多臺瓦片服務器;lyrs表示的是瓦片類型,具體含義如下,m:路線圖,t:地形圖,p:帶標簽的地形圖,s:衛星圖,y:帶標簽的衛星圖,h:標簽層(路名,地名等);x表示瓦片的橫向索引,起始位置在最左邊,數值為0,向右+1遞增;y表示瓦片的縱向索引,起始位置在最上面,數值為0,向下+1遞增;z表示地圖的級別,最高一級為0,向下+1遞增[1]。為方便瓦片地圖的拼接,本文將地圖瓦片以x_y_z.png格式命名,分類型按層級保存在服務器上,將同一層級的地圖瓦片存儲在同一個文件夾中。

3 設計

3.1 架構設計

為了滿足電子地圖的跨平臺需求,本文選擇具有跨平臺特性的開發庫Qt。Qt 是一個1991年由Qt Company開發的跨平臺C++圖形用戶界面應用程序開發框架,具有優良的跨平臺特性、良好的封裝機制、豐富的API以及大量的開發文檔[5]。為了滿足電子地圖的可移植性和可維護性需求,本文使用nginx搭建圖片服務器。nginx 是一個高性能的HTTP和反向代理web服務器,同時也提供了IMAP/POP3/SMTP服務,因它的穩定性、豐富的功能集、示例配置文件和低系統資源的消耗而聞名[6]。

本文的電子地圖可以分為服務器和客戶端兩部分,客戶端使用Qt開發,封裝成庫,可以在應用軟件開發中直接調用,服務器使用nginx配置圖片服務器,存儲地圖瓦片,客戶端和服務器之間的通信使用HTTP協議,Qt提供了QNetworkAccessManager類。服務器和客戶端獨立設計、獨立實現,可以使本文的電子地圖具有良好的維護性和移植性。

3.2 功能設計

本文中的電子地圖功能豐富,交互性強,實現了地圖顯示、地圖縮放、地圖漫游和地圖標繪等功能。地圖顯示功能:根據用戶的個性化選擇,顯示用戶需要的地圖,支持多種類型的地圖(例如:路線圖、地形圖、衛星圖等);縮放功能:本文在圖片服務器上存儲了多個層級的地圖瓦片,可以根據用戶的需求顯示對應層級的地圖,地圖層級的變換就是地圖的縮放,放大地圖時用戶可以看到更多的細節,縮小地圖時,用戶可以看到更廣闊的范圍;漫游功能:在比例尺不變的情況下,用戶通過拖曳等操作對地圖內容進行選擇,調整地圖的表達區域,在屏幕上形成一張新的地圖;標繪功能:為了增強人機交互體驗,本文中的電子地圖提供了輔助標繪接口,用戶可以使用這些接口在地圖上繪制點、線、多邊形、矢量圖、圖片和文字等信息。

從業務邏輯出發,本文的電子地圖分為地圖層、事件層和標繪層。地圖層負責顯示各種類型的地圖,如路線圖、地形圖和衛星圖等;事件層負責處理鼠標事件(如點擊、移動、滾輪等)和鍵盤事件(如上、下、左、右和Enter等),電子地圖在事件層捕捉事件,在地圖層做出對應的操作,如滾動鼠標滾輪,放大或縮小地圖比例尺;標繪層是本文的電子地圖對外提供的接口,用戶可根據自身需求調用相應接口在地圖上繪制需要顯示的信息。

4 實現

Qt的2D繪圖功能非常強大,使用Qt提供的繪圖引擎可以直接在設備屏幕或圖片上繪制圖形,本文中的電子地圖就是先將地圖瓦片繪制在QPixmap之上,然后通過引擎顯示在屏幕上,用這種方式用戶可以很方便地將當前地圖保存為本地圖片。本文中的電子地圖基于Qt的繪圖系統實現了地圖層和標繪層的各項功能,基于Qt的事件處理機制實現了事件層的各項功能。

4.1 地圖層

為了在客戶端得到一幅完整的地圖,本文需要將服務器中的一張張256 × 256像素的地圖瓦片拼接起來,而實現上述功能,最重要的就是完成屏幕像素與墨卡托投影坐標系下地理經緯度之間的相互轉換。在此基礎上,只要知道地圖中心點的經緯度、屏幕像素大小和地圖層級,就可以拼接出一幅完整的地圖。

式(1)和式(2)中已知一個點的經緯度和地圖層級,計算該點所在地圖瓦片的索引值,其中longitude為已知的經度,latitude為已知的緯度,zoom為當前地圖層級,tileX為當前層級下所求地圖瓦片的橫向索引,tileY為當前層級下所求地圖瓦片的縱向索引。根據上述兩個公式,已知屏幕中心點經緯度和地圖層級,可以計算出屏幕中心點所在的瓦片索引,再根據顯示設備的屏幕大小計算出鋪滿整個屏幕所需要的所有瓦片的起始索引和結束索引,遍歷就可以將得到的地圖瓦片拼接成一幅完整的地圖。利用式(1)和式(2)也可以實現地圖縮放功能,地圖縮放時,屏幕中心點的經緯度不變,地圖層級發生變化,根據當前層級重新計算地圖瓦片的起始索引和結束索引,遍歷就可以得到縮放后的地圖。

4.2 事件層

根據式(1)和式(2)拼接出的地圖只是一幅靜態的地圖,并不能滿足用戶地圖漫游需求。本文利用Qt的事件機制,重寫了鼠標事件和鍵盤事件,實現了地圖縮放和地圖漫游功能。在地圖進行縮放或漫游時,一個點在地圖上的像素值是相對的,跟屏幕的大小相關,而它的經緯度是絕對的,和屏幕的大小無關。為了保證地圖顯示的正確性,需要將點在屏幕上的像素值轉換為點在地圖上的經緯度。

式(3)和式(4)中,已知一個點的地圖瓦片索引值和該點在瓦片上的相對像素值以及地圖層級,計算該點的經緯度,其中longitude為所求的經度,latitude為所求的緯度,zoom為當前地圖層級,tileX為當前層級下的地圖瓦片的橫向索引,tileY為當前層級下的地圖瓦片的豎向索引,pixelX為該點在當前瓦片上的橫向像素值,pixelY為該點在當前瓦片上的豎向像素值。通過上述公式就可以將鼠標拖動造成的像素變化轉換為中心點的經緯度變化,再依據4.1中的式(1)和式(2)就可以得到一張新的地圖,這樣就實現了地圖漫游功能。

4.3 標繪層

為了實現信息表達的多樣性,本文中的電子地圖在地圖層和事件層的基礎上實現了標繪層。利用標繪層,用戶可以在地圖上繪制點、線、面、矢量圖和文字等多種類型的信息。線、面和矢量圖等信息所占用的像素大小與地圖標尺息息相關,它們會隨著地圖標尺的變化而變化,這時就需要知道地圖的地面分辨率。地面分辨率是一個像素(pixel)代表的地面尺寸(米),單位為米/像素[2]。

式(5)中已知地圖層級以及當前層級下屏幕中心點的緯度,計算當前層級地圖的地面分辨率,其中D為常量,是墨卡托投影下地球周長的一半,值為20037508.3427892,zoom為地圖層級,centerLatitude為屏幕中心點的緯度,resolution為地面分辨率。

利用屏幕像素與經緯度之間的轉換公式和地面分辨率就可以在地圖上繪制各種復雜的標繪信息。本文中的電子地圖對外提供了點、線、面、矢量圖和文字等接口,用戶也可根據自身的信息表達需求自定義標繪內容。在智慧哨兵項目中,利用標繪層實現了攝像頭、警戒區和影響區域等繪制。

4.4 瓦片服務器

由于地圖瓦片的數量多,占用的磁盤空間大,為了使電子地圖具有更好的移植性和維護性,本文使用了nginx創建圖片服務器。在一臺裝有Linux RedHat7.6系統的服務器上安裝nginx1.18.0,配置nginx.conf文件,修改root路徑為地圖瓦片存儲的根目錄,通過ftp將地圖瓦片上傳到服務器。以本文為例,圖片服務器創建成功后,帶標簽衛星圖第七層橫向索引102縱向索引48的瓦片url地址為192.168.1.100/map/y/7/7_102_48.png,在客戶端使用該url地址就可以訪問此瓦片。

5 結束語

本文設計并實現了一種基于Qt的輕量級電子地圖,具有跨平臺、功能豐富和效率高等特性,兼顧了可移植性、可維護性和可擴展性,對現行的大型地理信息系統具有良好的補充作用。本文中的電子地圖在多個輕量級的應用開發中表現良好,能夠很好地滿足用戶的需求。

參考文獻:

[1] 崔金紅,王旭.Google地圖算法研究及實現[J].計算機科學,2007,34(11):193-195.

[2] 胡水平,岳淑英,張求喜.谷歌地圖衛星影像數據獲取關鍵技術研究[J].測繪與空間地理信息,2018,41(10):79-81,85.

[3] 任留成,楊曉梅,趙忠明.空間墨卡托投影研究[J].測繪學報,2003,32(1):78-81.

[4] 龍毅,溫永寧,盛業華.電子地圖學[M].北京:科學出版社,2006.

[5] 布蘭切特,薩默菲爾德.C++ GUI Qt4編程:C++ GUI programming with Qt 4[M]. 閆鋒欣,曾泉人, 張志強,等譯.北京:電子工業出版社,2008.

[6] Reese W.Nginx:the high-performance web server and reverse proxy[EB/OL].[2020-08-20].https://www.linuxjournal.com/article/10108.

【通聯編輯:謝媛媛】

猜你喜歡
瓦片
打水漂
揚子江詩刊(2021年4期)2021-11-11 15:58:35
打水漂
揚子江(2021年4期)2021-08-09 18:37:31
一種基于主題時空價值的服務器端瓦片緩存算法
慣性
揚子江(2019年1期)2019-03-08 02:52:34
基于NoSQL數據庫的瓦片地圖服務
主站蜘蛛池模板: 欧美中文字幕一区| 99精品在线视频观看| 亚洲午夜综合网| 国产9191精品免费观看| 欧美激情二区三区| 91色综合综合热五月激情| 亚洲一区二区三区中文字幕5566| 狠狠躁天天躁夜夜躁婷婷| 91po国产在线精品免费观看| 亚洲一区二区三区麻豆| 亚洲欧美日韩综合二区三区| 久久久久久久97| 天天综合色天天综合网| 国产一区二区三区免费| 色播五月婷婷| 亚洲欧洲自拍拍偷午夜色| 成人免费一级片| 国产91麻豆视频| 欧美日韩动态图| 国产午夜一级毛片| 久久久久人妻一区精品| av免费在线观看美女叉开腿| 亚洲娇小与黑人巨大交| 青青草综合网| 国产chinese男男gay视频网| 91国语视频| 亚洲国产成人久久77| 免费高清毛片| 国产精品视频免费网站| 人与鲁专区| 午夜小视频在线| 免费国产不卡午夜福在线观看| 成年人视频一区二区| 亚洲大尺度在线| 久久亚洲精少妇毛片午夜无码| 亚洲高清在线天堂精品| 亚洲欧美日本国产综合在线| 欧美成人亚洲综合精品欧美激情| 国产精品任我爽爆在线播放6080| 中文字幕乱码二三区免费| 伊人AV天堂| 人妻21p大胆| 国产主播喷水| 视频在线观看一区二区| 亚洲中字无码AV电影在线观看| 国产精品网曝门免费视频| 国产精品lululu在线观看| 国产亚洲精品精品精品| 国产精品部在线观看| 综合久久五月天| 国产欧美性爱网| 韩国v欧美v亚洲v日本v| 亚洲国产欧美中日韩成人综合视频| 欧美啪啪网| 亚洲va欧美va国产综合下载| 日本精品视频一区二区| 国产精品99久久久| 亚洲人成网站在线观看播放不卡| 91精品专区国产盗摄| 亚洲天堂视频网| 全部免费特黄特色大片视频| 在线精品亚洲一区二区古装| 一本大道无码高清| 精品一区二区三区四区五区| 午夜激情福利视频| 91无码视频在线观看| 国产中文在线亚洲精品官网| 97精品久久久大香线焦| 亚洲中文字幕久久精品无码一区| 欧洲亚洲一区| 视频一区视频二区日韩专区| 中文字幕自拍偷拍| 久久国产亚洲欧美日韩精品| 精品视频一区二区三区在线播| 国产成人综合网| 99久久免费精品特色大片| 免费无遮挡AV| 色成人综合| 久久精品国产亚洲麻豆| 国产成人亚洲欧美激情| 97国产一区二区精品久久呦| 久久综合伊人77777|