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

基于ArcGIS API for Silverlight的Web應用初步實現

2015-02-09 07:55:20龍際夢蔡中祥劉宏建
地理空間信息 2015年4期
關鍵詞:服務

龍際夢,蔡中祥,劉宏建,李 欽,樊 江

(1.信息工程大學 地理空間信息學院,河南 鄭州 450000)

基于ArcGIS API for Silverlight的Web應用初步實現

龍際夢1,蔡中祥1,劉宏建1,李 欽1,樊 江1

(1.信息工程大學 地理空間信息學院,河南 鄭州 450000)

介紹了ArcGIS API for Silverlight及相關概念,舉例說明了Map、Navigation、Draw、MapTip等控件的使用,以及應用程序在IIS上的部署方法。

ArcGIS API for Silverlight;WebGIS;RIA;Silverlight;REST;Web應用

WebGIS是Internet技術與GIS相結合的產物,隨著互聯網的不斷發展和GIS 技術的廣泛應用,人們對基于網頁技術的WebGIS的交互性、視覺效果、響應速度以及功能體驗等有了更高的要求。RIA(rich internet applications,富因特網應用程序)技術[1]提供了全新的Web應用解決方案,給WebGIS帶來了新的發展契機,實現了更加直觀有效的應用服務。Flex與Silverlight是目前RIA技術的主要代表,Flex技術盡管在一定程度上可滿足現有需求,但存在不支持多線程、學習曲線較高、對大數量傳輸等支持不足等局限。與Flex相比較,雖然Silverlight瀏覽器插件安裝率不及Flash插件,但Silverlight平臺支持更多開發語言,學習成本低,開發效率高,發展迅速。基于ArcGIS Server,使用 ArcGIS API for Silverlight可以建立令人賞心悅目的RIA[2,3]。

1 ArcGIS API for Silverlight概述

1.1 ArcGIS Server API

ArcGIS Server可以使用的API有如下6種: .Net Web ADF、Java Web ADF、ArcGIS API for JavaScript、ArcGIS API for Flex、ArcGIS API for Silverlight、ArcObject API。

這6種API都能完成一些常見的功能,但是它們之間存在較大的差別。這6個API可分為兩大類,分別是“服務器端API”和“客戶端API”。.Net Web ADF、Java Web ADF和ArcObjects API可以算做“服務器端API”,因為使用這3類API所開發的程序代碼主要是在服務器端運行的,而使用ArcGIS API for JavaScript、ArcGIS API for Flex和ArcGIS API for Silverlight開發的程序代碼主要運行在客戶端的瀏覽器里[4]。

1.2 Silverlight

Microsoft Silverlight是一個跨瀏覽器、跨平臺的插件,為Web生成和提供下一代媒體體驗和豐富的RIA。Silverlight提供靈活的編程模型,并可以很方便地集成到現有的網絡應用程序中。Silverlight可以對運行在Mac或Windows上的主流瀏覽器提供高質量視頻信息快速、低成本的傳遞。若要運行 Silverlight Web 應用程序,用戶只需要在瀏覽器中安裝一個小插件。

1.3 ArcGIS API for Silverlight的構成

ArcGIS API for Silverlight主 要 由Maps、Graphics、Tasks、Toolkit、Access to Silverlight components幾部分組成[5]。開發者能夠在Silverlight應用程序中集成ArcGIS Server和Bing地圖的服務和功能,利用ArcGIS Server和Bing地圖的資源,如地圖、定位器、地理處理模型和Silverlight組件等,創建交互性和表達性很強的應用程序。

1.4 ArcGIS API for Silverlight與REST

REST(representational state transfer,表述性狀態轉移)是一個直觀的架構風格[6,7],通過網址提交到Web服務的請求來創建地圖圖像。REST允許程序在不同計算機上獨立于操作系統或平臺進行通信,通過發送一個http請求到網址,并獲取某種格式的返回數據,支持的格式包括XML或嵌入網址的XML。

Silverlight API負責客戶端的界面交互、地圖和相關數據的展現,REST API在服務器端提供GIS服務。這些REST API是ArcGIS Server軟件已經在服務器端封裝完成的,開發人員要做的工作是在Silverlight API里面去訪問REST API提供的GIS服務。

2 ArcGIS API for Silverlight應用程序的實現

ArcGIS API for Silverlight的開發環境包括配置Silverlight開發環境和安裝ArcGIS Silverlight API兩部分。

2.1 Map控件

Map控件是ArcGIS API for Silverlight的核心組件,主要用來展示各種各樣的數據,Map控件可與用戶進行交互。ArcGIS API for Silverlight提供了若干種圖層類型來承載不同來源的數據,主要分為Map Service Layers、Feature Layers、Graphics Layers 、Element Layers等。其中,Map Service Layers包括如下4種圖層:

1)ArcGIS Tiled Map Service Layer, 是 可 通 過REST接口來訪問的緩存地圖服務圖層。

2)ArcGIS Dynamic Map Service Layer,是可通過REST接口訪問的ArcGIS動態地圖服務圖層。該圖層類型可根據客戶端請求生成背景透明的實時圖片。

3)ArcGIS Image Service Layer,是可通過REST訪問的ArcGIS影像服務圖層。

4)Tile Layer,是緩存的微軟Bing地圖服務圖層。使用該圖層數據需提供令牌。

以添加ArcGIS Tiled Map Service Layer為例,XAML關鍵代碼如下:

〈esri:Map x:Name="MyMap" Extent="-120, 20, -100, 40" 〉

〈esri:Map.Layers〉

〈esri:ArcGISTiledMapServiceLayer ID="StreetMapLayer"

Url="http://server.arcgisonline.com/ArcGIS/rest/ services/ESRI_StreetMap_World_2D/MapServer" /〉

〈/esri:Map.Layers〉

〈/esri:Map〉

運行效果如圖1所示。

圖1 Map控件使用運行截圖

2.2 Navigation控件

Navigation控件即導航條控件,該控件與單個Map控件相關聯。提供了地圖的漫游、縮放、重置正北方向以及全圖顯示等功能。

運行效果如圖2所示,XAML關鍵代碼如下:

〈esri:Navigation HorizontalAlignment="Left" Name="Navigation1" VerticalAlignment="Top" Map="{Binding ElementName=MyMap}"/〉

圖2 Navigation控件使用運行截圖

2.3 Map Tip控件

Map Tip控件可顯示與該控件所關聯的Graphics Layer圖層中鼠標光標所停留位置的元素的屬性。

1)在Feature Layer元素中添加圖層的Map Tip屬性。

〈esri:FeatureLayer ID="MyFeatureLayer"

Url="http://sampleserver1.arcgisonline.com/ArcGIS/rest/ services/Demographics/ESRI_Census_USA/MapServer/5"

Where="POP07_SQMI 〉 150" Renderer= "{StaticResource MySimpleRenderer}" 〉

〈esri:FeatureLayer.OutFields〉

〈sys:String〉STATE_NAME〈/sys:String〉

〈sys:String〉POP07_SQMI〈/sys:String〉

〈/esri:FeatureLayer.OutFields〉

〈/esri:FeatureLayer〉

2)在Map Tip元素中,定義一個容器,用來顯示Map Tip的內容。

〈esri:FeatureLayer.MapTip〉

〈Grid Background="LightYellow"〉

〈StackPanel Margin="5"〉

〈/StackPanel〉

〈Border BorderBrush="Black" BorderThickness="1" /〉

〈/Grid〉

立足上述立法背景存在的現實需求,以《知識產權基本法》的指導思想為指導,《知識產權基本法》立法應當秉持如下原則。

〈/esri:FeatureLayer.MapTip〉

3)在Map Tip的Stack Panel控件中,添加Text Block用來顯示州名以及人口密度。

〈TextBlock Text="{Binding [STATE_NAME]}" FontWeight="Bold" /〉

〈StackPanel Orientation="Horizontal"〉

〈TextBlock Text="Population Density (2007): " /〉

〈TextBlock Text="{Binding [POP07_SQMI]}" /〉

〈/StackPanel〉

運行效果如圖3所示。

Draw工具提供了在客戶端繪制各種幾何對象的功能。

客戶端XAML關鍵代碼如下:

〈Grid x:Name="LayoutRoot" Background="White"〉

〈Grid.Resources〉

〈esri:SimpleFillSymbol x:Key="RedFillSymbol" Fill="#66FF0000" BorderBrush="Red" Border Thickness="2" /〉

圖3 MapTip使用運行截圖

〈esri:SimpleFillSymbol x:Key="BlueFillSymbol" Fill="#660000FF" BorderBrush="Blue" Border Thickness="2" /〉

〈/Grid.Resources〉

〈esri:Map x:Name="MyMap" Background="White" Extent="-120, 20, -100, 40" 〉

〈esri:Map.Layers〉

〈esri:ArcGISTiledMapServiceLayer ID= "StreetMapLayer"

Url="http://server.arcgisonline.com/ArcGIS/rest/ services/ESRI_StreetMap_World_2D/MapServer"/〉

〈esri:GraphicsLayer ID="MyGraphicsLayer" /〉

〈/esri:Map.Layers〉

〈/esri:Map〉

〈/Grid〉

后臺C#關鍵代碼如下:

1)創建一個新的Draw對象:

Draw MyDrawObject = new Draw(MyMap)

{

FillSymbol = LayoutRoot.Resources ["RedFillSymbol"] as FillSymbol

};

MyDrawObject.DrawComplete += MyDrawObject_ DrawComplete;

2)激活Draw工具:

MyDrawObject.DrawMode=DrawMode.Polygon;

MyDrawObject.IsEnabled=true;

3)定義一個Draw事件完成的處理程序:

private void MyDrawObject_DrawComplete(object sender, ESRI.ArcGIS.Client.DrawEventArgs args)

{

Graphic graphic = new Graphic()

{

Geometry = args.Geometry,

Symbol = LayoutRoot.Resources["BlueFillSymbol"] as FillSymbol

};

GraphicsLayer graphicsLayer = MyMap.Layers ["MyGraphicsLayer"] as GraphicsLayer;

graphicsLayer.Graphics.Add(graphic);

}

運行效果如圖4所示。

圖4 Draw工具使用運行截圖

2.5 查詢任務

查詢任務允許用戶從ArcGIS Server地圖服務圖層中通過某些條件過濾來獲取相關要素,可使用空間范圍或屬性條件或兩者組合方式來進行查詢。

這里以查詢美國2007年人口密度大于500人/km2的地區為例,客戶端XAML關鍵代碼如下:

〈Canvas HorizontalAlignment="Right" VerticalAlign ment="Top" Margin="0,15,7,0" Width="250"〉

〈Rectangle Fill="#CC5C90B2" Stroke="Gray" RadiusX="10" RadiusY="10" Width="230" Height="55"/〉

〈TextBlock Text="輸入查詢條件并點擊“查詢”按鈕" Foreground="White" FontSize="10" Margin="10,5,0,0"/〉

〈TextBlock x:Name="QueryTextBox" Width="150" Margin="15,22,0,0" Text="POP07_SQMI〉500"/〉

〈Button x:Name="QueryButton" Content="查詢" Margin= "168,23,0,0" Click="QueryButton_Click"/〉

〈/Canvas〉

后臺C#關鍵代碼如下:

private void QueryButton_Click(object sender, RoutedEventArgs e)

{

//初始化查詢任務

QueryTask queryTask = new QueryTask("http:// sampleserver1.arcgisonline.com/ArcGIS/rest/services/" + "Demographics/ESRI_Census_USA/MapServer/5");

queryTask.ExecuteCompleted += QueryTask_ ExecuteCompleted;

queryTask.Failed += QueryTask_Failed;

//查詢任務的參數

Query query = new Query();

query.ReturnGeometry = true;

query.OutFields.AddRange(new string[] { "STATE_NAME", "POP07_SQMI" });

//使用文本框的文本作為查詢條件

query.Where = QueryTextBox.Text;

queryTask.ExecuteAsync(query);

}

//查詢完成后繪制結果

private void QueryTask_ExecuteCompleted(object sender, ESRI.ArcGIS.Client.Tasks.QueryEventArgs args)

{

//清除以前的結果

GraphicsLayer graphicsLayer = MyMap.Layers ["MyGraphicsLayer"] as GraphicsLayer;

graphicsLayer.ClearGraphics();

//檢查新結果

FeatureSet featureSet = args.FeatureSet;

if (args.FeatureSet.Features.Count 〉 0)

{

//將結果添加到地圖

foreach (Graphic resultFeature in featureSet.Features)

{

r e s u l t F e a t u r e.S y m b o l = L a y o u t R o o t. Resources["ResultsFillSymbol"] as ESRI.ArcGIS.Client. Symbols.Symbol;

graphicsLayer.Graphics.Add(resultFeature);

}

}

else

{

MessageBox.Show("No feature found");

}

}

//查詢失敗時,提示錯誤信息

private void QueryTask_Failed(object sender, TaskFailedEventArgs args)

{

MessageBox.Show("Query failed:" + args.Error);

}

運行效果如圖5所示。

圖5 查詢任務運行截圖

3 部署應用程序

ArcGIS API for Silverlight應用程序的部署步驟為:①安裝。②配置IIS。右鍵點擊“IIS信息服務—網站—默認網站”,彈出“屬性”頁,選擇“http頭”標簽,點擊“MIME映射”的“文件類型”按鈕,彈出文件類型窗口,點擊新類型,新加.xap和.xaml兩個類型,點擊確定完成設置。③編譯網站程序并發布。編譯好Silverlight地圖應用程序,在IIS創建虛擬目錄,指向網站應用程序(后綴為.web的應用程序),完成發布。④在網頁中打開地圖應用程序查看是否部署成功[8]。

4 結 語

ArcGIS API for Silverlight使用起來比ADF框架更加輕巧,而且功能強大,可以與多種當今主流技術交互。本文只是介紹了ArcGIS API for Silverlight的入門知識,讀者可在此基礎上開發出界面更加友好、功能更加全面的WebGIS應用程序。

[1] 王京.基于Flex的WebGIS的設計與實現[D].西安:西安科技大學,2011

[2] 王天寶,王爾琪,盧浩,等.基于Silverlight的WebGIS客戶端技術與應用試驗[J].地球信息科學學報,2010,2(1):69-75

[3] Preciado J C,Linaje M,Sanchez F,et al.Necessity of Methodologies to Model Rich Internet Applications[C].Web Site Evolution(WSE 2005),Seventh IEEE International Symposium,2005

[4] 賈慶雷,萬慶,邢超.ArcGIS Server開發指南——基于Flex和.Net[M].北京:科學出版社,2011

[5] 何正國,杜娟,毛海亞.精通ArcGIS Server應用與開發[M].北京:人民郵電出版社,2013

[6] 劉光,唐大仕.ArcGIS Server JavaScript API開發GeoWeb2.0應用[M].北京:清華大學出版社,2010

[7] 賈靜,耿襯.基于ArcGIS API for Flex的Web應用初探[J].地理空間信息,2012,10(3):114-118

[8] 孫超,鐘珞.基于Silverlight的富界面應用研究[J].武漢理工大學學報,2008,12(12):95-97

P208

B

1672-4623(2015)04-0095-04

10.3969/j.issn.1672-4623.2015.04.034

龍際夢,碩士,主要從事軍事地理信息系統研究。

2014-06-27。

項目來源:國家自然科學基金資助項目(41301125)。

猜你喜歡
服務
服務在身邊 健康每一天
今日農業(2019年14期)2019-09-18 01:21:54
服務在身邊 健康每一天
今日農業(2019年12期)2019-08-15 00:56:32
服務在身邊 健康每一天
今日農業(2019年10期)2019-01-04 04:28:15
服務在身邊 健康每一天
今日農業(2019年15期)2019-01-03 12:11:33
服務在身邊 健康每一天
今日農業(2019年16期)2019-01-03 11:39:20
招行30年:從“滿意服務”到“感動服務”
商周刊(2017年9期)2017-08-22 02:57:56
主站蜘蛛池模板: 精品国产91爱| 精品视频一区二区三区在线播| 91蝌蚪视频在线观看| 一本久道热中字伊人| 精品无码国产自产野外拍在线| 无码区日韩专区免费系列| 老司机久久99久久精品播放| 青青国产成人免费精品视频| 91口爆吞精国产对白第三集| av一区二区三区高清久久| 亚洲91精品视频| 国产精品无码制服丝袜| 97国产在线播放| 亚洲男人天堂网址| 国产激情无码一区二区免费| 亚洲91精品视频| 自慰高潮喷白浆在线观看| 日韩精品无码不卡无码| 一级爆乳无码av| 久久99国产精品成人欧美| 久久精品国产91久久综合麻豆自制| AV无码国产在线看岛国岛| 四虎影视无码永久免费观看| 亚洲欧洲日本在线| 狼友视频国产精品首页| 中文字幕伦视频| 一本大道香蕉高清久久| 欧美a在线| 无码日韩视频| 国产第一页亚洲| 五月天香蕉视频国产亚| 色婷婷视频在线| 精品综合久久久久久97| 97精品久久久大香线焦| 国产中文一区a级毛片视频| 婷婷亚洲最大| 97视频精品全国在线观看| 亚洲狠狠婷婷综合久久久久| 最新亚洲av女人的天堂| 国产精品区网红主播在线观看| 永久成人无码激情视频免费| 久视频免费精品6| 爆乳熟妇一区二区三区| 99久久精品免费看国产电影| 在线国产资源| 国产黄色爱视频| 欧美综合区自拍亚洲综合天堂| 亚洲丝袜第一页| 欧美天天干| 日本精品一在线观看视频| 免费在线不卡视频| 重口调教一区二区视频| 亚洲中文久久精品无玛| 在线观看亚洲天堂| 国产人人干| 成人免费一区二区三区| 日韩精品无码一级毛片免费| 无码中文字幕乱码免费2| 国产精品视频导航| 国产无人区一区二区三区| 极品国产一区二区三区| 亚洲一区二区在线无码| 精品国产成人a在线观看| 色哟哟国产成人精品| 中文字幕首页系列人妻| 国产成人精品一区二区不卡| 日本欧美视频在线观看| 久久综合色视频| 欧美成人综合视频| 国产色图在线观看| 高清无码不卡视频| 日韩少妇激情一区二区| 日韩精品一区二区三区视频免费看| 一本大道东京热无码av| a级毛片免费播放| 欧美一区二区三区欧美日韩亚洲 | 亚洲国产日韩一区| 久久香蕉国产线看观| 国产情精品嫩草影院88av| 欧美精品在线视频观看| 十八禁美女裸体网站| 中国毛片网|