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

關于GIS的圖形繪制方法的分析

2016-05-30 10:48:04王盼
科技風 2016年14期
關鍵詞:方法

摘 要:地理信息系統是空間信息系統的一種特定形式,本文通過介紹地理信息系統(GIS)、函數轉換、繪圖、封裝地圖等基本知識,詳細的分析了GIS的圖形繪制方法。

關鍵詞:地理信息系統(GIS);地圖繪制

地理信息系統(Geographic Information System或 Geo-Information system,GIS)稱為“地理學信息系統”,是空間信息系統的一種特定形式。需要在計算機硬、軟件系統的支持下,對整個或部分地球表層空間中的有關地理分布的數據進行采集、儲存、運算、分析、管理、描述、顯示的技術系統。

地理位置中的經緯度坐標只能在地理信息中代表為某個地點、標志或方位,對于用戶理解和認識周邊信息有一定的局限;在通過相關技術獲取到位置之后,了解了所處的地理環境,通過查詢和分析環境信息,為用戶的活動提供信息支持與服務,更注重用戶的需求,滿足用戶的各種體驗。

一、地圖是通過函數的調用繪制出來的

地圖的繪制是對函數的基本操作,即使用繪圖語句畫出來的。從基礎的底層地圖繪制,就是使用繪圖函數繪制點、線、面、標準、柵格等組合起來,就形成了一張地圖。

二、地圖繪制中的關鍵——坐標轉換

.NET提供了大量繪圖方法,基本上都是以Graphics類的函數形式提供,包括各類幾何形狀、圖像、文字的繪制,通過這些方法可以畫出各種圖形。但是圖形的繪制和坐標方位有著贊揚聯系,使我們繪制的地圖可以轉換為地圖元素,即地理坐標的經緯度,需要解決坐標轉換問題。

首先了解一下轉換函數:

///經緯度

///屏幕坐標

public Point WorldToScreen(PointF xy)

再一個,有時,還需要根據屏幕上點位置反算出它的經緯度,如在需要顯示鼠標指針處的經緯度,所以還需要這么一個函數:

///屏幕坐標

///經緯度

public PointF ScreenToWorld(Point xy)

有了這兩個函數,就可以將以經緯度表示的地理坐標轉換為屏幕坐標,然后再屏幕繪圖了。

三、繪圖

有了坐標轉換類Coordinator,就可以用經緯度數據來繪圖了,如得到了經緯度坐標數據,就可以將經緯度數據轉換為屏幕坐標,然后用Graphics的方法來畫出來了,Graphics對象又從哪里來呢?可以從一個Image對象創建,也可以從一個控件的Paint事件中取得。

為了使用方便,FreeMicaps把符號繪制功能封裝到三個符號類中,以靜態方法提供。

.NET的繪圖是對GDI+的封裝,包括了對點、線、面等各種圖形元素的封裝,圖形圖像的繪制、坐標旋轉,各種反走樣和平滑等功能,功能十分強大,利用它可以繪出各種圖形。

四、圖層

為了使繪圖過程便于管理,可將繪圖過程分為組,如可以將一張地圖的繪制分為:交通地圖、建筑地圖、管道地圖、區域地圖等幾個過程,每次繪圖好像就是在一張玻璃上繪制,疊加起來就形成了一張地圖,這里把每次繪圖過程形象地稱為一個圖層。地圖分層后,圖層可以增刪,每個圖層可以單獨進行隱藏、設置屬性等,更重要的是可以將利用面向對象技術把每個圖層當做一個對象進行管理。

對圖層進行抽象,需要調用圖層繪制方法(Render),圖層標題(LayerName)和用于表示數據源的字符串(DataSource)。用于表示繪圖樣式的設置的LayerStyle,加上一些輔助方法屬性,最終形成如下抽象圖層類(CustomLayer)。

FreeMicaps中,每種數據對應一種圖層類,為了使圖層類編寫方便,使用了設計模式中的模板方法,定義繪制流程,主程序在調用圖層的Render()方法時,會自動判斷是否已經讀入數據,根據需要分析數據繪圖。

對于同一種類型數據,需要從CustomLayer繼承新建一個圖層類。各種類型數據圖層的工作方式一樣,僅在數據讀取和繪制方面不同。所以,寫新圖層類時,僅需實現DoLoad()和DoRender()兩個抽象方法,完成讀取數據和繪制圖層代碼即可。FreeMicaps里使用了字符串作為數據源標識,通用GIS系統對數據源進行了抽象。

一張地圖有多個圖層,所以還需要將圖層放入一個列表,用于繪制地圖時遍歷圖層。調用每個圖層的Render()方法,形成一張完整的地圖。

圖層繪制是需要有順序的,在圖層的樣式(LayerStyle)中放了一個ZOrder屬性,通過它來控制圖層順序。但由于List本身的排序方法是一種“非穩固排序”,也就是說當兩個圖層的ZOrder相等時,它們的順序是不確定的,為了避免這個問題,FreeMicaps從CollectionBase繼承了一個類LayerList,實現對圖層的管理,并實現了IXmlSerializable接口,完成圖層序列化功能。

FreeMicaps中,每種數據對應一種圖層類,為了使圖層類編寫方便,使用了設計模式中的模板方法,定義繪制流程,主程序在調用圖層的Render()方法時,會自動判斷是否已經讀入數據,根據需要讀數據繪圖。

五、封裝地圖

有了坐標轉換類、圖層類、圖層列表類,就可以利用它們做出一個具有縮放平移、圖層管理等功能的地圖了,但為了更方便地對地圖進行操作,還需要對這些類進行組合封裝。

新建一個類WeatherMap,添加Coordinator和LayerList類的實例作為它的屬性,將Coordinator類的實例作為私有成員,將地圖坐標轉換等方法加入WeatherMap類,調用WeatherMap類的方法。

再回到抽象圖層類CustomLayer,它有一個成員Map,即為WeatherMap對象,在將圖層加入圖層列表時會自動賦值。在編寫CustomLayer的子類時,可調用它來進行坐標轉換和地圖操作。

為了使地圖在繪制復雜圖形過程中不至于BUG,需要在繪圖過程中能隨時中斷繪圖,如快速縮放平移地圖中,可終止前次繪圖過程直接繪制最后一次,就實現了地圖繪制的多線程,特別是多線程操作UI,對程序流程造成了一定混亂。

六、再次封裝-增加UI

上面已完成了地圖繪制的核心代碼,為了使代碼編寫更加容易,需要對WeatherMap類再次進行封裝(MapView類),加入UI部分,即給地圖加一個具有界面的殼,并在上面實現地圖的操作如縮放、拖動功能。

MapView從PictureBox類繼承,內建了WeatherMap類的實例,在MapView的Refresh()方法中調用WeatherMap.Render()對地圖進行繪制。

為了完成對地圖的操作,FreeMicaps定義一個IMapTool接口,包含了鼠標和鍵盤操作方法,MapView類內建一個IMapTool接口成員,MapView的鼠標和鍵盤操作,將被IMapTool接口的實例接管,在實現IMapTool接口的類中,可對地圖做各種操作,如平移、縮放等操作,這個對象可隨時替換以實現不同方式的地圖操作。

在FreeMicaps中,已完成一個實現IMapTool接口的類ZoomTool,此類為默認的地圖縮放和平移工具。

另外,在MapView中,還引入了一個當前圖層的概念CurrentLayer,用它來表示當前操作的圖層,后面用它來實現圖層元素拾取、圖層工具條等功能。

通過以上論述的方法,可以對地圖的開發有了全面、透徹的了解,便于開發人員對地圖系統的優化和升級。文章對GIS系統的論述僅限于基礎應用和開發,不妥之處請批評指正。

參考文獻:

[1] 朱洪軍.基于GIS的移動終端LBS系統建設與實現[D].華東師范大學,2008.

[2] 李海艷.移動GIS的概念體系研究[D].長安大學,2006.

作者簡介:

王盼(1985-),男,漢族,北京人,本科,工程師,單位:國家新聞出版廣電總局北京廣播電視維護中心,研究方向:廣電系統節目傳輸和調度。

猜你喜歡
方法
學習方法
用對方法才能瘦
Coco薇(2016年2期)2016-03-22 02:42:52
四大方法 教你不再“坐以待病”!
Coco薇(2015年1期)2015-08-13 02:47:34
賺錢方法
捕魚
主站蜘蛛池模板: 国产av无码日韩av无码网站| 色噜噜综合网| 国产精品粉嫩| 国产不卡国语在线| 99精品热视频这里只有精品7| 永久免费精品视频| 69视频国产| 欧美成人午夜在线全部免费| 国产不卡国语在线| 久久精品91麻豆| 亚洲国产无码有码| 美女无遮挡免费视频网站| 国产在线视频欧美亚综合| 国产精品一老牛影视频| 波多野结衣一区二区三区四区视频 | 91小视频版在线观看www| 波多野结衣一区二区三视频| 人妻无码中文字幕一区二区三区| 真人高潮娇喘嗯啊在线观看 | 国产午夜不卡| 成人一区专区在线观看| 找国产毛片看| 五月天综合网亚洲综合天堂网| 亚洲国产精品久久久久秋霞影院| 91www在线观看| 在线观看亚洲天堂| 亚洲欧美国产高清va在线播放| 露脸国产精品自产在线播| 久久久久国产一级毛片高清板| 99视频精品在线观看| 污网站在线观看视频| 日韩色图在线观看| 国产欧美性爱网| 亚洲高清无码久久久| 亚洲v日韩v欧美在线观看| 91香蕉视频下载网站| 97在线免费| 精品一区二区三区水蜜桃| 亚洲一区波多野结衣二区三区| 国产色婷婷视频在线观看| 亚洲成人免费看| 精品国产网| 热久久综合这里只有精品电影| 国产午夜人做人免费视频中文| 小说 亚洲 无码 精品| 国产视频一二三区| 亚洲精品亚洲人成在线| 成人免费视频一区二区三区| 黄片一区二区三区| 国产精品第页| 一本一本大道香蕉久在线播放| 四虎成人精品| 91丝袜在线观看| 国产成人乱无码视频| 精品91在线| 色婷婷综合激情视频免费看| 久久性视频| 久草视频中文| 色综合久久88| 国产日韩久久久久无码精品| 国产办公室秘书无码精品| 国产AV无码专区亚洲精品网站| 亚洲黄色视频在线观看一区| 日韩毛片在线播放| 国产一级片网址| 色综合久久久久8天国| 四虎亚洲国产成人久久精品| 国产在线精彩视频二区| 一本大道香蕉高清久久| 欧美区日韩区| 黄片在线永久| 黄色成年视频| 久久6免费视频| 久久久亚洲色| 日韩免费毛片| 国产极品美女在线播放| a毛片基地免费大全| jijzzizz老师出水喷水喷出| 色屁屁一区二区三区视频国产| 中文字幕亚洲综久久2021| 深爱婷婷激情网| swag国产精品|