GIS地圖工具 (二)

 

李泉 陳玉進 (南京跬步科技有限公司http://www.creable.cn

13.2 選擇工具

       許多軟件都有選擇工具,地理信息系統也不例外,選擇工具供用戶選中圖元之後,進行相應的操作。選擇工具可分爲二類:點選和框選。點選需要用戶在地圖窗口中點擊一個位置來選中圖元,框選則需要用戶在地圖窗口中拉一個框來選擇,被框包含或與框相交的即被選中。圖3說明的是點選的流程

 

該流程與信息工具類似,只是最終的操作是“選中該要素”,顯示選中了之後的效果,並記下該要素的指針,供用戶使用相應的命令操作該對象。框選則需要判斷地圖要素是否被框包含或者與框相交,這要用的前面章節介紹的算法。

 

13.3 編輯工具

       支持編輯的地理信息系統軟件都有一系列的編輯工具,通常包含添加點、線、面,刪除地圖要素,修改地圖要素的圖形,修改地圖要素的屬性等等。地理信息系統軟件的底層能支持編輯需要符合幾個條件:

1.圖層中容納要素的集合必須能夠動態添加刪除修改。通常爲了加快隨機訪問的速度,圖層中用來管理地圖要素的集合類會採用數組(數組隨機訪問最快)。而數組動態添加一個要素很慢,需要再申請一個比之前大一個的內存塊,將原來的拷貝進這個新的內存塊。鏈表結構則能夠在不需要複製原來信息的前提加快速添加一個要素。故可採用數組和鏈表相結合的方式來管理地圖要素。

2.文件結構能夠支持動態添加刪除修改。在執行保存操作的時候,如果文件結構不支持動態添加刪除修改,勢必要從頭到尾將所有地圖要素寫入到文件中,對於大數據量這顯然不合適。欲達到此要求可採用二種結構:

設置標記。即在每個要素前面添加一個標記位來表示是否被刪除了。添加的要素寫入到文件末尾,修改的要素首先將原始要素標記爲刪除,然後將新要素寫入到文件末尾。

預留空間。即在文件中預留一些空間供添加要素使用,每個要素之後預留空間供修改使用。如出現預留空間不足的情況,需要在預留空間中寫入一個指針,表示這個新要素存放在文件中的位置。

 

       添加點線面的流程差不多,僅以添加點爲例。待用戶輸入好新要素的圖形和屬性之後,將新要素加入內存中和老要素統一管理,並可以寫入到文件中持久化。添加線和添加面的時候會用到捕捉功能,這裏大致說明一下捕捉功能如何實現。用戶開啓捕捉功能之後,需要先將屏幕上相關的節點(包括點要素、線上和麪上的節點)轉換爲窗口座標添加到一個鏈表裏,用戶鼠標單擊之後,判斷這個單擊位置是否靠近鏈表中的某一個點,靠近則自動將光標移動到該點上。

       修改地圖要素的圖形主要是修改點的位置、線和麪上節點的位置,刪除線和麪上的節點等操作。修改工具的流程是這樣的:首先用戶選擇一個圖元,然後進入編輯模式,這時候用戶移動節點位置之後,通過單擊鼠標右鍵結束脩改工作,修改工具再調用引擎中相應的函數來保存用戶的更改。刪除節點的操作也是如此流程。

       修改地圖要素的屬性工具的流程:首先用戶選擇一個圖元,然後該工具讀取這個圖元所在圖層的屬性結構(一個圖層上所有圖元共享同一種屬性結構),再讀取該圖元的屬性值,並以對話框的形式展現在用戶面前,供用戶修改,最後該工具調用引擎相應函數保存對屬性的修改。

13.4 鷹眼工具

       鷹眼在地理信息系統中屬於一個基礎功能,許多這類軟件都提供了該功能。鷹眼能夠給用戶一個更廣闊的視野,用戶也可以在鷹眼窗口中點擊一個位置,主窗口也會跳轉到相應的位置。主窗口中顯示的實際地圖範圍也會在鷹眼窗口中體現出來。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章