- WebGIS之ECharts大數(shù)據(jù)圖形可視化
- 郭明強(qiáng)等編著
- 1602字
- 2022-08-16 18:02:37
1.5.2 實(shí)現(xiàn)第一個(gè)WebGIS后臺(tái)REST服務(wù)接口
在創(chuàng)建后臺(tái)REST服務(wù)接口之前,首先創(chuàng)建一個(gè)名為“WCFService+OpenLayer+ECharts”的文件夾;接著在該文件夾下創(chuàng)建一個(gè)app文件夾;然后在app文件夾下分別創(chuàng)建data_shp文件夾和lib文件夾,lib文件夾用于存放項(xiàng)目中需要引用的本地資源;最后在lib文件夾中創(chuàng)建ECharts文件夾、jQuery文件夾、OpenLayers文件夾,將下載的ECharts文件、jQuery文件和OpenLayers文件分別放在所對(duì)應(yīng)的文件夾中。自定義的目錄如圖1-5所示,項(xiàng)目的目錄結(jié)構(gòu)也可以根據(jù)個(gè)人的習(xí)慣來定義。

圖1-5 自定義的目錄
在開發(fā)Web系統(tǒng)時(shí),會(huì)經(jīng)常出現(xiàn)跨域問題。跨域問題是指瀏覽器不能執(zhí)行其他網(wǎng)站的腳本,這是由瀏覽器的同源(是指協(xié)議、域名、端口三者相同)策略造成的,是瀏覽器對(duì)JavaScript施加的安全限制。由于存在跨域問題,使得AJAX請(qǐng)求無法發(fā)送,所以需要調(diào)用編寫的ResponseMsgFactory.cs來解決該問題。首先將ResponseMsgFactory.cs放到WCFService文件夾下;然后在Visual Studio 2012中右鍵單擊項(xiàng)目名稱“WCFService”,在彈出的右鍵菜單中依次選擇“現(xiàn)有項(xiàng)”→“添加”,將ResponseMsgFactory.cs添加到項(xiàng)目中,如1-6所示。

圖1-6 添加現(xiàn)有項(xiàng)
通過調(diào)用ResponseMsgFactory.cs中ProcessHttpOPTIONS方法,可判斷服務(wù)器接收到的是不是OPTIONS請(qǐng)求,如果是,則返回服務(wù)器信息,并通過ResponseMsgFactory類獲得指定格式的數(shù)據(jù),調(diào)用代碼如程序代碼1-3所示。ResponseMsgFactory.cs中ProcessHttpOPTIONS方法的具體實(shí)現(xiàn)如程序代碼1-4所示。
程序代碼1-3 調(diào)用ProcessHttpOPTIONS方法

程序代碼1-4 ProcessHttpOPTIONS方法的實(shí)現(xiàn)

由于本書需要調(diào)用ArcGIS數(shù)據(jù)庫來存儲(chǔ)后臺(tái)所使用的疫情數(shù)據(jù),因此后臺(tái)需要獲得ArcGIS數(shù)據(jù)庫的許可,這可以通過調(diào)用InitializePlatform.cs中的InitializeApplication方法來實(shí)現(xiàn)。添加InitializePlatform.cs中的方法同添加ResponseMsgFactory.cs中的方法一樣,調(diào)用代碼如程序代碼1-5所示。InitializePlatform.cs中InitializeApplication方法的具體實(shí)現(xiàn)如程序代碼1-6所示。
程序代碼1-5 調(diào)用InitializeApplication方法

程序代碼1-6 InitializeApplication方法的實(shí)現(xiàn)

為了方便后臺(tái)讀取ArcGIS中shp文件的屬性表數(shù)據(jù),可以通過引用ArcGIS中的部分動(dòng)態(tài)鏈接庫文件來調(diào)用ArcGIS中的查詢方法,從而獲得shp文件的屬性表數(shù)據(jù)。想要獲得動(dòng)態(tài)鏈接庫文件,首先要在ArcGIS安裝包中,找到并單擊SDK_dotnet文件夾,接著雙擊setup.exe,然后一直單擊“Next”按鈕,安裝完成后,可在“%ArcGIS%\DeveloperKit10.2\DotNet”下找到本書使用的動(dòng)態(tài)鏈接庫文件,將這些動(dòng)態(tài)鏈接庫文件放到項(xiàng)目的“bin”文件夾下的“Debug”文件夾中,最后在Visual Studio 2012中右鍵單擊項(xiàng)目名稱“WCFService”,在彈出的右鍵菜單中依次選擇“添加引用”→“瀏覽”,可將“Debug”文件夾下的動(dòng)態(tài)鏈接庫文件添加到項(xiàng)目中,如圖1-7所示。

圖1-7 在項(xiàng)目中添加動(dòng)態(tài)鏈接庫文件
通過ServiceBehavior中的一些屬性可以控制服務(wù)的實(shí)例、線程等。其中InstanceContextMode用于設(shè)置服務(wù)實(shí)例的生命周期,其值是Single;ConcurrencyMode用于設(shè)置服務(wù)以單線程模式運(yùn)行,其值是Single。如果要把未處理的異常作為SOAP錯(cuò)誤消息發(fā)送給客戶端,就需要把IncludeExceptionDetailInFaults設(shè)置為true。AspNetCompatibilityRequirements用于啟用ASP.NET兼容性模式,如程序代碼1-7所示。
程序代碼1-7 設(shè)置ServiceBehavior屬性

接下來設(shè)置疫情數(shù)據(jù)存儲(chǔ)的路徑,即“path=@"..\..\..\data_shp"”,該路徑是數(shù)據(jù)文件夾的相對(duì)路徑,每一個(gè)“..\”代表的是上一級(jí)目錄。首先調(diào)用IFeatureWorkspace接口中的OpenFromFile方法打開data_shp文件夾,再調(diào)用OpenFeatureClass方法打開該文件夾下名為HBconfirmed_0302的shp文件,讀者可以根據(jù)自身需要設(shè)置其他的shp文件名。設(shè)置shp文件所在路徑及工作空間的代碼如程序代碼1-8所示。
程序代碼1-8 設(shè)置shp文件所在路徑及工作空間

由于本書使用的疫情數(shù)據(jù)時(shí)間字段名中含有字母“T”,為了使后續(xù)的折線圖不出現(xiàn)“T”,需要首先調(diào)用fields.get_Field方法獲取屬性表中所有字段,然后調(diào)用get_Field方法獲得含有字母“T”的字段名,最后調(diào)用Substring方法去掉時(shí)間字段名中的字母“T”,如程序代碼1-9所示。
程序代碼1-9 獲取字段名并去掉字段名中的首字母“T”

處理完字段名之后,還需要調(diào)用IFeatureClass.Search方法來查詢屬性表中的字段值。“WhereClause=""”表示查詢所有的數(shù)據(jù)。IFeatureClass.Search(pQueryFilter,false)的作用是根據(jù)pQueryFilter從FeatureClass中選取特定的Feature,該方法會(huì)返回一個(gè)IFeatureCursor對(duì)象。IFeatureCursor對(duì)象用于指向被篩選出來的符合條件的Feature。IFeatureCursor.NextFeature方法將游標(biāo)指向下一個(gè)滿足條件的Feature,第一次使用該方法時(shí)會(huì)返回第一個(gè)Feature,再次調(diào)用會(huì)返回第二個(gè)Feature,最后一個(gè)要素被遍歷后再次調(diào)用該接口,則會(huì)返回null。IFeatureClass.Search方法的第二個(gè)參數(shù)設(shè)置為false,也就是說每執(zhí)行一次IFeatureClass.NextFeautre方法,上一條記錄的Feature值都會(huì)保存在內(nèi)存中,如程序代碼1-10所示。
程序代碼1-10 查詢屬性表中的字段值

在遍歷所有要素后,調(diào)用pFeature.get_Value方法獲取屬性表的時(shí)間字段值,如程序代碼1-11所示。
程序代碼1-11 獲取屬性表的時(shí)間字段值

- EJB 3.0 Database Persistence with Oracle Fusion Middleware 11g
- Illustrator CC 2018中文版入門與提高
- UG NX 9.0中文版基礎(chǔ)與實(shí)例教程
- 計(jì)算機(jī)圖形圖像處理Photoshop CS6項(xiàng)目教程
- 中文版Dreamweaver基礎(chǔ)培訓(xùn)教程
- Premiere Pro CC 2018基礎(chǔ)教程(第3版)
- Elgg Social Networking
- Backbone.js Cookbook
- 三維建模與3D打印從入門到精通
- CAXA 實(shí)體設(shè)計(jì)2013案例課堂
- IBM Lotus Notes and Domino 8.5.1
- Photoshop后期強(qiáng):多重曝光專業(yè)技法寶典
- Photoshop+Firefly從入門到精通
- Photoshop人像精修秘笈
- Autodesk Maya 2015標(biāo)準(zhǔn)教材II