《電子技術應用》
您所在的位置:首頁 > 通信與網絡 > 設計應用 > 基于ArcGIS Flex API的校園電子地圖研究與實現
基于ArcGIS Flex API的校園電子地圖研究與實現
來源:微型機與應用2014年第7期
姬英杰,徐 鵬,楊懷卿
(山西農業大學,山西 太谷 030801)
摘要: 將ArcGIS Server地圖服務、WebServer服務集成于Adobe Flash Builder 4下,研究開發了基于ArcGIS Flex API的校園電子地圖展示軟件。該軟件提供了山西某大學詳細的地圖信息,不僅擁有常規地圖導航、支持屬性模糊查詢空間要素等功能,而且還對任意兩個熱點間最短路徑分析功能進行合理定制,對校園風光和人文歷史的展示產生了很好的效果。
Abstract:
Key words :

摘  要: 將ArcGIS Server地圖服務、WebServer服務集成于Adobe Flash Builder 4下,研究開發了基于ArcGIS Flex API的校園電子地圖展示軟件。該軟件提供了山西某大學詳細的地圖信息,不僅擁有常規地圖導航、支持屬性模糊查詢空間要素等功能,而且還對任意兩個熱點間最短路徑分析功能進行合理定制,對校園風光和人文歷史的展示產生了很好的效果。
關鍵詞: WebGIS;ArcGIS Flex API;RIA;地圖控件;最短路徑分析

 隨著計算機技術的飛速發展,地理信息系統逐漸融入了人們生活的各個方面,作為其發展的必然趨勢之一的WebGIS也成為了諸多專家們所熱衷的研究領域。國內外的GIS廠家都推出各自的WebGIS產品,ArcGIS Flex API就是一種基于ArcGIS Server的一種客戶端應用開發框架。ArcGIS Flex API與Flash Builder 4結合可以構建出表現出色、交互體驗良好的富互聯網程序(RIA)。傳統的WebGIS電子地圖采用HTML頁面形式,在傳輸數據量大、實時性要求比較高時會存在一定延時,嚴重影響界面操作效率;富互聯網程序(RIA)可將桌面程序的表現力與瀏覽器的程序方便、快捷結合在一起,具有豐富的數據模型可將原來在后臺程序處理的問題現在轉移到客戶端,使數據能夠被緩存在客戶端,從而實現一個比基于HTML的響應速度更快、數據往返于服務器的次數更少的應用程序[1]。基于ArcGIS Flex API的校園電子地圖軟件針對地圖展示提供了山西某高校詳盡的地圖信息,不僅可以屬性模糊查詢定位目標,準確地對校園進行長度和面積的量算,為校園規劃管理提供參考;而且還可以準確地查找兩個關鍵點之間的最短路徑,為用戶進行簡潔的路線指引。
1 環境的搭建
 首先,安裝ArcMap 10軟件,用于原始數據源處理;其次,完成ArcGIS Server 10軟件的安裝,作為整個應用程序的GIS服務器,提供必要的地圖服務。ArcGIS相關軟件安裝完成后,進行Microsoft Visual studio 2010和Microsoft SQL Server 2008的安裝;在VS2010環境下可以發布WebServer服務供前臺調用,Microsoft SQL Server 2008存儲數據庫。最后安裝Adobe Flash Builder4.0用于開發RIA。
2 服務為主體的開發流程
 整個軟件基于B/S架構開發,因此如何合理發布、配置和調用服務自然而然成為整個開發過程的核心工作。在整個開發過程中主要涉及到地圖服務和WebServer服務兩大類,基于ArcGIS Server發布的不同種類的地圖服務是電子地圖展示功能實現的基礎,基于VS2010發布的WebServer服務是對客戶端管理員信息處理的后臺服務。服務為主體的開發流程如圖1所示。

3 基于ArcGIS Flex API地圖功能的實現
 作為一套基于Flex開發運行在瀏覽器端的地圖API,ArcGIS Flex API可以滿足一些GIS開發需求,如地圖瀏覽、多個專題圖層疊加、地圖符號的客戶端繪制、動態對象跟蹤顯示(車輛、飛機等)、運行GIS相關的空間分析模型、屬性條件查詢、空間條件查詢和編輯適量數據[2]。把ArcGIS Flex API類庫文件添加到新工程中的library path選項卡里,就可以開始開發工作。基于ArcGIS Flex API的校園電子地圖主要功能包括地圖導航功能、地圖面積和距離量算、空間要素查詢定位、最短路徑分析等;按功能發布了相應的地圖服務和管理用戶信息的WebServer服務。
3.1 Map控件的使用
 Map控件可以說是整個WebGIS程序開發的核心,它是一個粗粒度的類,其中封裝了大量的細粒度接口,如地圖空間范圍、空間參考、圖層集合和比例級別等[2]。Map控件相當于一個容器,可以包含多個地圖服務圖層,用來交互式瀏覽地圖。軟件設計中Map控件實現主要代碼如下。
<esri:Map id="mainMap" logoVisible="false"
mouseUp="mainMap_mouseUpHandler(event)
doubleClick="mainMap_doubleClickHandler(event)"
    mouseOver="mainMap_mouseOverHandler(event)"
extentChange="mainMap_extentChangeHandler(event)"
left="0" right="1" top="78" bottom="0"
    >
<!&mdash;用于顯示的動態地圖服務圖層-->
<esri:ArcGISDynamicMapServiceLayer
url="http://mypc/ArcGIS/rest/services/sxauGIS/MapServer" />
    <!&mdash;用于氣泡顯示的矢量服務圖層-->
<esri:FeatureLayer
    url="http://mypc/ArcGIS/rest/services/sxauFeatureLayer/
MapServer/0"
                   mode="selection"
                   id="myFeatureLayer"visible="false"
                   outFields="[imageSource,url,infor]"/>
<!&mdash;用于渲染查詢元素的圖層-->
<esri:GraphicsLayer id="myFindGraphicsLayer"  
            symbol="{baseSfs}"/>            
    &hellip;&hellip;
</esri:Map>
 id為mainMap的Map控件,其不僅包含了用于地圖直觀顯示的動態地圖服務圖層、用于氣泡顯示的矢量服務圖層,還包含了一系列作為客戶端渲染幾何矢量圖形(如查詢結果高亮顯示、路徑渲染等)載體的GraphicsLayer類型圖層。這些圖層為應用程序地圖功能實現提供了有利的保障。
3.2 地圖導航功能
 NavigationTool是一個非可視化控件,常常要與界面控件結合,用于地圖的導航操作。由于Map控件內部本身就集成了鼠標滾輪放大、縮小及左鍵平移的功能;因此,在工具欄地圖導航功能添加了上一視圖、下一視圖(需對上下視圖不可用情況進行處理)、全圖顯示作為補充。應用程序工具欄如圖2所示。
首先定義NavigationTool控件實例,指定相關Map控件實例:
 <esri:NavigationTool id="navigationTool"map="{mainMap}"/>
 工具欄上3個導航功能實現方法類似,以全圖顯示(工具欄第3個)為例進行說明,在其對應的Image控件 實例單擊事件里添加如下代碼。
if(navigationTool.isFirstExtent==false&&this.initMapExtent!=this.mainMap.extent.extent)
    {
//調用NavigationTool全圖顯示方法
        navigationTool.zoomToFullExtent();
        this.initMapExtent=this.mainMap.extent.extent;
}
    else
    {
        Alert.show("當前視圖已為全圖顯示!","提示");
    }
 單擊事件處理函數里對當前地圖顯示狀態進行了判斷,若不為全圖顯示狀態則設定為全圖顯示狀態,為全圖顯示則彈框提示。
3.3 建筑物信息氣泡提示
 氣泡是一種把業務數據和地圖結合在一起的有效方式[2]。地圖控件(Map)提供了一個infoWindow屬性用來在地圖上顯示氣泡信息,氣泡內容通過其infoWindowContent屬性控制,標題則是由其infoWindow屬性下label次級屬性控制。軟件中的氣泡提示格式是對氣泡內容進行了定制(自定義LabelDataRenderer組件,包含建筑物名稱、建筑物圖片和相關網址鏈接3部分內容,數據源則是通過對FeatureLayer服務圖層查詢得到,并在LabelDataRenderer實例加載時對實例屬性初始化),每次觸發氣泡提示實際上是目標建筑物對infoWindow的infoWindowContent屬性重新賦值;建筑物氣泡提示包含了兩種類型:展示狀態下氣泡提示和管理員編輯狀態下氣泡提示。管理員登錄后可以對建筑物氣泡屬性進行編輯并直接保存到后臺GIS服務器,如圖3所示。

 

 

3.4 模糊查詢建筑物中心定位
 實現建筑物名稱模糊查詢(全部建筑物名稱綁定到ComboBox可初步實現)和建筑物查詢結果中心定位,如圖4所示。建筑物查詢采用QueryTask(可以執行空間查詢,又可以執行屬性查詢),會涉及到QueryTask、Query和FeatureSet 3個類。

 第一步,實例化QueryTask,url屬性指向將要查詢的地圖服務圖層。
 <!&mdash;定義查詢任務-->
 <esri:QueryTask id="myQueryTask" url="http://mypc/ArcGIS/rest/services/sxauFeatureLayer/MapServer/0"/>
 第二步,在查詢按鈕單擊事件里設置搜索參數Query實例。
//屬性查詢條件
query.where="NAME="+"&prime;"+this.qText.textInput.text+"&prime;";
myQueryOutFieldArr=new Array();
myQueryOutFieldArr.push("NAME");
//指定返回的字段
query.outFields=myQueryOutFieldArr;
query.returnGeometry=true;
第三步,提交請求注冊處理函數,渲染查詢結果到目標圖層上。
/*提交注冊處理函數,onNameQueryResult為結果回調函數,onNameQueryFault是錯誤處理函數*/
myQueryTask.execute(query,newAsyncResponder(onNameQueryResult
,onNameQueryFault));
最后,onNameQueryResult函數中派發事件向主程序傳遞Graphic類型的數組,在主程序中將查詢結果添加到相應的GraphicLayer圖層上,中心地位的功能則是參照查詢結果Graphic的extent屬性加入一定偏移量賦值給地圖控件的extent屬性,從而間接地達到查詢結果中心定位顯示。
3.5 距離測量和面積測量
 將距離測量和面積測量設計到了管理員權限范圍,它們屬于地圖空間分析的范疇,在客戶端完全實現不太現實,ArcGIS Flex API中GeometryService類提供了各種空間分析功能,客戶端請求服務器端,等待服務器端返回結果,最后計算完成事件,整個過程異步執行。首先發布一個幾何服務(Geometry)供GeometryService類實例引用,設定距離所需參數、面積所需參數傳入GeometryService類實例的用于測距離(lengths)、用于測面積(areasAndLengths)方法,最后在GeometryService類實例中lengthsComplete、areasAndLengthsComplete屬性處理函數里面獲取相對應的測量結果。
3.6 關于起點終點的最短路徑分析
 最短路徑的求取問題是可以拓展為許多方面的最高效率問題,最短路徑不僅是指一般意義上的距離最短,還可以是時間最短、費用最少、線路利用率最高等標準[3]。針對展示功能設計了兩點間最短路徑分析,網絡數據集中邊權重屬性默認長度字段即可。實現大致分為數據源處理,地圖服務發布和RouteTask類、RouteParameters類的實例相結合從而得到路徑。
 第一步,數據源處理(構建網絡數據集以及建立地圖文檔)和地圖服務發布。
網絡數據集的優劣性直接影響了后續路徑分析的正確與否,為了提高路徑分析正確率,采用一套科學的數據源規范化處理流程至關重要。數據源處理流程如圖5所示。

 在ArcMap10中新建地圖文檔,將網絡數據集加入該文檔中,并在文檔中新建路徑(Network Analyst模塊內),把圖層精簡后,用作路徑分析地圖服務的數據源,效果如圖6所示。

 將處理后的數據源發布成用于路徑分析的地圖服務。
 第二步,RouteTask類和RouteParameters類的實例相結合得到路徑。
 RouteTask是一個非可視化的控件,可針對相應地圖服務進行最短路徑分析,可以根據提供的參數(RouteParameters類實例)求解得到相應最短路徑。關于起點終點的最短路徑分析:將起點終點名稱作為查詢條件對網絡數據集端點圖層(一系列帶屬性端點)進行查詢,把查詢結果賦值給stops屬性(RouteParameters子組件對應路徑中停靠點屬性)即可,調用RouteTask實例中solve方法(需傳入RouteParameters實例)并在其solveComplete屬性的事件處理函數里渲染起點終點提示以及兩點間最短路徑。
3.7 管理員信息管理
 采用客戶端調用ASP.NET Web服務的方式對服務器端的關系數據庫(存有管理員信息)進行增、刪、改操作。整個軟件界面狀態分為展示狀態和管理員登錄狀態,管理員登錄狀態相比前者增加了測量和管理員信息編輯等模塊。
綜上所述,地圖服務和WebServer服務合理的發布和調用是基于ArcGIS Flex API電子地圖開發的基礎,也是地圖功能實現的有力保障。這類便捷的開發方式必將長時間流行于WebGIS領域。
參考文獻
[1] 賈靜,耿襯.基于ArcGIS API for Flex的Web應用初探[J].地理空間信息,2012(6):114-118.
[2] 賈慶雷,萬慶.ArcGIS Server開發指南&mdash;&mdash;基于Flex和 .NET[M].北京:科學出版社,2011.
[3] 高晟.基于ArcGIS對矢量數據模型的最短路徑分析[J].微型機與應用,2011,36(15):84-87.

此內容為AET網站原創,未經授權禁止轉載。
亚洲一区二区欧美_亚洲丝袜一区_99re亚洲国产精品_日韩亚洲一区二区
在线观看国产欧美| 久久国产精品72免费观看| 国产日韩精品一区二区| 国产日韩欧美精品在线| 欧美在线free| 欧美aⅴ99久久黑人专区| 伊人色综合久久天天五月婷| 亚洲欧美偷拍卡通变态| 美女国产精品| 国产亚洲一区二区在线观看| 99精品久久久| 日韩网站在线看片你懂的| 亚洲欧美国产制服动漫| 亚洲国产婷婷| 亚洲香蕉网站| 久久精品人人| 最新日韩中文字幕| 亚洲人成欧美中文字幕| 国产精品成人播放| 在线亚洲欧美视频| 欧美尤物巨大精品爽| 欧美一级久久久| 日韩午夜电影av| 亚洲一卡二卡三卡四卡五卡| 欧美视频不卡中文| 亚洲午夜日本在线观看| 日韩一区二区精品视频| 韩国女主播一区| 一区二区日韩精品| 国产精品亚洲综合一区在线观看| 欧美中文字幕在线播放| 欧美在线一二三区| 夜夜嗨av一区二区三区中文字幕| 久久久www免费人成黑人精品| 亚洲视频免费观看| 久久久久久久网站| 亚洲天堂av高清| 亚洲一区二区在线免费观看| 夜夜夜久久久| 在线一区视频| 亚洲一区二区在线视频| 香蕉久久夜色精品| 久久精品日产第一区二区| 亚洲第一级黄色片| 亚洲精品裸体| 亚洲一区视频在线观看视频| 午夜精品在线观看| 久久久久网址| 欧美精品一区二区三区四区| 国产精品扒开腿爽爽爽视频| 国产精品尤物| 精品动漫一区| 日韩视频第一页| 亚洲欧美国产日韩天堂区| 亚洲国产精品ⅴa在线观看 | 在线观看中文字幕不卡| 亚洲精品日本| 亚洲女人天堂av| 亚洲国产天堂久久国产91| 一本久久青青| 久久久久国产免费免费| 欧美激情一区二区三区在线视频观看 | 欧美成年人网站| 国产精品ⅴa在线观看h| 国产综合av| 一本久久青青| 亚洲国产成人一区| 亚洲一区二区三区影院| 久久久久久亚洲精品不卡4k岛国| 欧美人妖在线观看| 国产日本精品| 亚洲毛片在线观看| 欧美在线免费视屏| 在线综合亚洲| 猫咪成人在线观看| 国产精品视区| 亚洲精选久久| 亚洲黑丝一区二区| 欧美在线综合| 欧美日韩一区在线观看| 狠狠色综合色区| 亚洲网在线观看| 亚洲精品自在在线观看| 久久精品在线播放| 国产精品毛片va一区二区三区| 在线播放亚洲| 小嫩嫩精品导航| 亚洲无限av看| 欧美精品日韩三级| 韩日欧美一区二区三区| 亚洲免费视频观看| 亚洲伊人色欲综合网| 欧美激情一区二区三区在线| 韩日午夜在线资源一区二区| 亚洲午夜久久久久久久久电影网| 亚洲精品美女在线| 久久影院亚洲| 国产午夜精品在线观看| 亚洲一级二级| 亚洲一区二区三区在线播放| 欧美精品成人91久久久久久久| 黑人中文字幕一区二区三区| 亚洲欧美日本国产有色| 亚洲免费视频网站| 欧美日韩视频在线观看一区二区三区| …久久精品99久久香蕉国产| 欧美在线播放高清精品| 性色av一区二区三区在线观看| 欧美日韩在线不卡一区| 最近中文字幕日韩精品| 亚洲三级电影在线观看| 久久综合五月| 激情视频一区| 亚洲国产欧美不卡在线观看 | 麻豆精品一区二区综合av| 国产一区二区三区最好精华液| 午夜国产精品影院在线观看| 亚洲一区二区三区四区在线观看 | 久久成人免费| 久久久国产一区二区| 国产美女搞久久| 午夜精品久久久久久久白皮肤 | 亚洲欧美日韩在线观看a三区 | 国产精品久久久久久户外露出| 亚洲精品之草原avav久久| 9人人澡人人爽人人精品| 欧美国产一区在线| 亚洲欧洲一区二区三区| 亚洲免费成人av| 欧美精品一区二| 亚洲精品在线电影| 亚洲特色特黄| 久久亚洲高清| 亚洲一区在线播放| 欧美三级乱人伦电影| 一本色道婷婷久久欧美| 亚洲一级二级在线| 国产精品免费福利| 午夜精品久久久久久久久久久久久| 香蕉成人伊视频在线观看| 国产精品一区免费视频| 午夜精品久久久久久久99热浪潮 | 国产日韩亚洲欧美综合| 亚洲欧美日韩另类| 久久久午夜精品| 136国产福利精品导航网址| 亚洲伦理网站| 欧美日韩一区二区三区视频| 一区二区三区精品视频在线观看| 亚洲男人的天堂在线观看| 国产欧美日韩在线播放| 久久av红桃一区二区小说| 欧美.www| 99在线视频精品| 欧美一级大片在线观看| 国产综合久久| 9久草视频在线视频精品| 国产精品入口| 亚洲高清自拍| 欧美日韩中文字幕精品| 亚洲影院免费| 久久婷婷久久一区二区三区| 亚洲国产精品一区二区第四页av| 一区二区三区日韩精品| 国产精品日韩欧美综合| 久久精品国产在热久久| 欧美女同视频| 午夜在线成人av| 欧美岛国激情| 亚洲一二三区视频在线观看| 久久偷窥视频| 亚洲美女性视频| 久久精品一二三| 亚洲免费久久| 久久免费高清| 99这里只有精品| 久久婷婷影院| 亚洲色图综合久久| 久久男人资源视频| 一区二区三区欧美亚洲| 久久亚洲不卡| 99视频国产精品免费观看| 久久精品国产亚洲精品| 亚洲激情在线激情| 欧美中文字幕视频| 亚洲韩国青草视频| 久久se精品一区精品二区| 亚洲片在线观看| 久久国产免费| 日韩午夜在线视频| 蜜臀va亚洲va欧美va天堂| 一本久道久久综合中文字幕| 久久久久久久国产| 亚洲一二三区在线| 久久女同互慰一区二区三区| 欧美一区二区精美| 亚洲国产日韩精品| 久久久久9999亚洲精品| 中国成人黄色视屏| 中文久久精品|