日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

怎样在ArcIMS 上实现专题图

發布時間:2025/3/17 编程问答 14 豆豆
生活随笔 收集整理的這篇文章主要介紹了 怎样在ArcIMS 上实现专题图 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

怎樣在ArcIMS 上實現專題圖

?

在現實應用中,用戶經常會需要用地理數據形成專題圖。ArcIMS用戶會發現在用ArcIMS Author定制地圖服務時,并不能象在ArcMap中那樣通過定制圖層屬性實現專題地圖,而是需要通過ArcIMS的客戶端的開發接口來實現。下面就以在ArcIMS的HTML Viewer中實現專題圖為例闡述這個問題。

1、HTML Viewer的文件組織結構
通常情況下,用ArcIMS Designer生成地圖服務站點以后,會形成上面的目錄結構。在虛擬目錄的根目錄下會有ArcIMSParam.js以及大量的HTML頁面。同時還會生成兩個子目錄:JavaScript和Images。如果要做專題圖,還需要手工將aimsClassRenderParam.js放在此根目錄下,在JavaScript目錄下添加aimsClassRender.js。

ArcIMSParam.js文件包含大量的配置參數,可以通過調整里面的參數改變Viewer的外觀,例如OverView窗口的位置,是否顯示層信息,是否顯示圖例,是否顯示指北針,指北針的形狀等等。HTML頁面包含了頁面元素在瀏覽器中顯示的信息。JavaScript目錄下是HTML Viewer的JavaScript類庫。類庫中包含了大量的JavaScript函數,HTML Viewer就是通過這些函數和后臺服務器進行交互的。

2、 開發步驟
(1)用一種網頁開發工具在Viewer.htm中加一個新框架FieldlistFrame。如下圖所示:

?

在FieldlistFrame.htm中動態加入當前活躍圖層的字段名以及幾個功能按鈕。字段名主要用來選擇要做專題圖的字段,功能按鈕主要用來觸發一些特定的功能,如生成餅圖,生成直方圖,顯示圖例等。

(2)在Viewer.htm中定義FieldVisible數組,并初始化。
var FieldVisible=new Array(); //define a new array and initialize it.
for (var i=0;i<100;i++)
{
FieldVisible[i]=0;
}
FieldVisible保存了哪些字段用來做專題圖,這樣在刷新地圖時字段信息不會被刷新。

(3)設置當前活動層,并更新FieldlistFrame中顯示的字段信息。
在toc.htm中,更改setActiveLayer()函數,每次設置完當前活動層后,重新載入FieldlistFrame中的內容
parent.FieldlistFrame.location.reload(); //refresh the content of FieldlistFrame.

這樣,就保證了每次更改當前活動層時,當前字段值也會隨著刷新。

(4)在MapFrame.htm中,在適當的位置加入如下兩行:
<SCRIPT TYPE="text/javascript" LANGUAGE="JavaScript" SRC="javascript/aimsClassRender.js"></SCRIPT>
<SCRIPT TYPE="text/javascript" LANGUAGE="JavaScript" SRC="aimsClassRenderParam.js"></SCRIPT>

這樣,當MapFrame.htm被加入到瀏覽器中時,上面兩個JavaScript文件中的函數就被載入到當前頁面中。AimsClassRender.js中定義了一些做專題圖時要用到的函數,aimsClassRenderParam.js中定義了一些做專題圖時要用到的參數,開發人員可以自己定義所需要的參數。

(5)設置aimsClassRenderParam.js文件。
AimsClassRenderParam.js文件需要用戶根據實際情況手工編輯。
這里用的數據是ArcIMS帶的教學數據(d:\Program Files\ESRI\ArcIMS3.1\Samples\Viewers\Data\SanFrancisco)。

在aimsClassRenderParam.js中存放了一些做專題圖時要用到的參數,如圖層的名稱。

(6)在aimsClassRender.js中加如兩個函數:
function startChart_Bar()和function startChart_Pie()
在這兩個函數中設置ClassRenderString[ActiveLayerIndex],使之等于一個ArcXML字符串,這個字符串決定了地圖的表現方法(分類,直方圖,餅圖等等)。然后調用系統提供的函數sendMapXML()就可以向服務器發送XML指令,并在客戶端顯示查詢結果。

(7)最終效果如下:

?

3.總結:
HTML Viewer通過sendMapXML()函數向空間服務器發出請求,在此過程中會觸發writeXML()和sendToServer()函數。開發的關鍵就是以writeXML()為線索,找出要客戶化的地圖元素,用程序生成相應的ArcXML代碼,然后調用sendMapXML()函數向服務器發請求。返回的ArcXML由processXML()函數處理,用戶不用更改此函數,就可以得到查詢結果。

總結

以上是生活随笔為你收集整理的怎样在ArcIMS 上实现专题图的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。