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

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

怎样在ArcIMS 上实现专题图

發(fā)布時(shí)間:2025/3/17 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 怎样在ArcIMS 上实现专题图 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

怎樣在ArcIMS 上實(shí)現(xiàn)專(zhuān)題圖

?

在現(xiàn)實(shí)應(yīng)用中,用戶經(jīng)常會(huì)需要用地理數(shù)據(jù)形成專(zhuān)題圖。ArcIMS用戶會(huì)發(fā)現(xiàn)在用ArcIMS Author定制地圖服務(wù)時(shí),并不能象在ArcMap中那樣通過(guò)定制圖層屬性實(shí)現(xiàn)專(zhuān)題地圖,而是需要通過(guò)ArcIMS的客戶端的開(kāi)發(fā)接口來(lái)實(shí)現(xiàn)。下面就以在ArcIMS的HTML Viewer中實(shí)現(xiàn)專(zhuān)題圖為例闡述這個(gè)問(wèn)題。

1、HTML Viewer的文件組織結(jié)構(gòu)
通常情況下,用ArcIMS Designer生成地圖服務(wù)站點(diǎn)以后,會(huì)形成上面的目錄結(jié)構(gòu)。在虛擬目錄的根目錄下會(huì)有ArcIMSParam.js以及大量的HTML頁(yè)面。同時(shí)還會(huì)生成兩個(gè)子目錄:JavaScript和Images。如果要做專(zhuān)題圖,還需要手工將aimsClassRenderParam.js放在此根目錄下,在JavaScript目錄下添加aimsClassRender.js。

ArcIMSParam.js文件包含大量的配置參數(shù),可以通過(guò)調(diào)整里面的參數(shù)改變Viewer的外觀,例如OverView窗口的位置,是否顯示層信息,是否顯示圖例,是否顯示指北針,指北針的形狀等等。HTML頁(yè)面包含了頁(yè)面元素在瀏覽器中顯示的信息。JavaScript目錄下是HTML Viewer的JavaScript類(lèi)庫(kù)。類(lèi)庫(kù)中包含了大量的JavaScript函數(shù),HTML Viewer就是通過(guò)這些函數(shù)和后臺(tái)服務(wù)器進(jìn)行交互的。

2、 開(kāi)發(fā)步驟
(1)用一種網(wǎng)頁(yè)開(kāi)發(fā)工具在Viewer.htm中加一個(gè)新框架FieldlistFrame。如下圖所示:

?

在FieldlistFrame.htm中動(dòng)態(tài)加入當(dāng)前活躍圖層的字段名以及幾個(gè)功能按鈕。字段名主要用來(lái)選擇要做專(zhuān)題圖的字段,功能按鈕主要用來(lái)觸發(fā)一些特定的功能,如生成餅圖,生成直方圖,顯示圖例等。

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

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

這樣,就保證了每次更改當(dāng)前活動(dòng)層時(shí),當(dāng)前字段值也會(huì)隨著刷新。

(4)在MapFrame.htm中,在適當(dāng)?shù)奈恢眉尤肴缦聝尚?#xff1a;
<SCRIPT TYPE="text/javascript" LANGUAGE="JavaScript" SRC="javascript/aimsClassRender.js"></SCRIPT>
<SCRIPT TYPE="text/javascript" LANGUAGE="JavaScript" SRC="aimsClassRenderParam.js"></SCRIPT>

這樣,當(dāng)MapFrame.htm被加入到瀏覽器中時(shí),上面兩個(gè)JavaScript文件中的函數(shù)就被載入到當(dāng)前頁(yè)面中。AimsClassRender.js中定義了一些做專(zhuān)題圖時(shí)要用到的函數(shù),aimsClassRenderParam.js中定義了一些做專(zhuān)題圖時(shí)要用到的參數(shù),開(kāi)發(fā)人員可以自己定義所需要的參數(shù)。

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

在aimsClassRenderParam.js中存放了一些做專(zhuān)題圖時(shí)要用到的參數(shù),如圖層的名稱(chēng)。

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

(7)最終效果如下:

?

3.總結(jié):
HTML Viewer通過(guò)sendMapXML()函數(shù)向空間服務(wù)器發(fā)出請(qǐng)求,在此過(guò)程中會(huì)觸發(fā)writeXML()和sendToServer()函數(shù)。開(kāi)發(fā)的關(guān)鍵就是以writeXML()為線索,找出要客戶化的地圖元素,用程序生成相應(yīng)的ArcXML代碼,然后調(diào)用sendMapXML()函數(shù)向服務(wù)器發(fā)請(qǐng)求。返回的ArcXML由processXML()函數(shù)處理,用戶不用更改此函數(shù),就可以得到查詢結(jié)果。

總結(jié)

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

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。