小秋的家

          home

            BlogJava :: 首頁(yè) :: 聯(lián)系 :: 聚合  :: 管理
            1 Posts :: 91 Stories :: 17 Comments :: 0 Trackbacks

          1、為什么是ArcGIS server REST

            下面的兩幅圖分別描述了ArcIMS 和ArcGIS server REST的是請(qǐng)求機(jī)制

            ArcIMS 

           image001.png

            ArcGIS server REST

          image003.png   
                從圖中的我們可以清晰地看出,如果把黃色虛線(xiàn)內(nèi)看成是黑箱的話(huà),其兩種服務(wù)采用完全一樣的結(jié)構(gòu)(Webservice) 。 不同之處在于ArcIMS 應(yīng)用發(fā)送的是ArcXML 接收的是 ArcXML ,而ArcGIS server REST 應(yīng)用發(fā)送的是GET (POST)請(qǐng)求 接收的是 JSON。在之前 我們就說(shuō)過(guò) ArcIMS之所以廣受用戶(hù)的好評(píng),就是因?yàn)槠浼軜?gòu)優(yōu)秀,邏輯清晰,開(kāi)發(fā)方便,而ArcGIS server REST 也秉承了這個(gè)優(yōu)點(diǎn),其架構(gòu)也是這種發(fā)送請(qǐng)求 接受結(jié)果的模式,不但結(jié)構(gòu)清晰也利于開(kāi)發(fā)者的開(kāi)發(fā)調(diào)試。通過(guò)對(duì)其發(fā)送接受請(qǐng)求的分析能使我們更清楚地認(rèn)識(shí)這點(diǎn)。

          應(yīng)用向ArcIMS的發(fā)送請(qǐng)求   (getFeatures)

          image005.png 

             上面一個(gè)就是在ArcIMS里發(fā)送的查詢(xún)請(qǐng)求,請(qǐng)求是在cities圖層中查詢(xún)名稱(chēng)是San diego的地圖要素。而下面的Axl就是ArcIMS接受到請(qǐng)求返回的查詢(xún)結(jié)果。

          image007.png 

               從中我們可以看出San Diego地圖要素的一些信息

               下面這個(gè)請(qǐng)求是應(yīng)用向ArcGIS server REST的發(fā)送請(qǐng)求 (getFeatures)

          image009.png

                 不同于向ArcIMS發(fā)送的ArcXML 的POST方式,這個(gè)請(qǐng)求是通過(guò)GET方式發(fā)送的字符串,從字符串的參數(shù)中我們可以看出,其是向地圖服務(wù)為USA的第0圖層 (cities圖層)發(fā)送一個(gè)請(qǐng)求,查詢(xún)其 city_NAME=San Diego 的地圖要素
                 下面是ArcGIS server REST接受到請(qǐng)求后返回的查詢(xún)結(jié)果。

           image011.png
               從上面可以看出,ArcGIS server REST 和ArcIMS 是如此的相似,都是請(qǐng)求應(yīng)答模式,而相對(duì)于ArcIMS 的 AXL而言ArcGIS server REST的JSON更適于腳本語(yǔ)言的解析(xml在不同瀏覽器下解析方法有很大區(qū)別),而且相同內(nèi)容JSON比AXL更小,這個(gè)在大數(shù)據(jù)結(jié)果返回中是很重要的,不僅僅如此 ArcGIS server REST對(duì)于ArcIMS開(kāi)發(fā)人員 而言還具有不需要額外學(xué)習(xí)AO知識(shí) ,入門(mén)迅速,等諸多方面優(yōu)勢(shì)。

          為什么是 JavaScript ?

             在ArcIMS中使用最多的就是JavaScript開(kāi)發(fā)(其次是java connector~),在很多項(xiàng)目中都是JavaScript做GIS 應(yīng)用,DotNet或java(J2EE) 作業(yè)務(wù)邏輯,我相信大多數(shù)ArcIMS開(kāi)發(fā)人員對(duì)JavaScript開(kāi)發(fā)并不陌生。

          JavaScript 的WebGIS 開(kāi)發(fā)大致分為以下的三類(lèi):

          1、地圖的展示, DIV 里 IMG的抽換

          2、信息的查詢(xún) 發(fā)送AJAX請(qǐng)求

          3、動(dòng)態(tài)信息的地圖展示
                   對(duì)于marker  pop 就是DIV
                   對(duì)于Graphic 就是 VML/SVG


             下面這個(gè)是利用JavaScript向ArcIMS 請(qǐng)求地圖的全過(guò)程,其中 url為ArcIMS服務(wù)器servlet connector的地址,axl 為發(fā)送的getmap 請(qǐng)求。

          image013.png 

            其步驟:
                 1、客戶(hù)端JavaScript建立xmlhttprequest 通道,向ArcIMS的servlet connector 發(fā)送axl請(qǐng)求(黑色JavaScript代碼)
                 2、ArcIMS 接受到請(qǐng)求生成圖片
                 3、通過(guò)剛才客戶(hù)端發(fā)起建立的xmlhttprequest 通道,ArcIMS發(fā)送AXL給客戶(hù)端,告知生成的地圖圖片的url
                 4、客戶(hù)端JavaScript解析收到的AXL,并告知頁(yè)面html抽換DIV中的圖片指向url(紫色代碼)
                 5、頁(yè)面通過(guò)新的url地址取到ArcIMS剛才生成的地圖圖片,展示給客戶(hù)。

                   
             相對(duì)于ArcIMS而言 ArcGIS server REST地圖請(qǐng)求更為簡(jiǎn)單,如下圖

          image015.png
            其步驟:
                   1、利用JavaScript拼接請(qǐng)求的url串,傳給html
                   2、頁(yè)面請(qǐng)求url
                   3、ArcGIS server REST 接受這個(gè)URL 生成地圖圖片以流的方式傳給頁(yè)面
                   4、頁(yè)面展示地圖圖片給用戶(hù)

                以上的Javascript代碼沒(méi)有用到任何API,其主要目的就是向大家說(shuō)明,在有強(qiáng)大的服務(wù)端支持(ArcIMS/ArcGIS server REST)下利用JavaScript開(kāi)發(fā)WebGIS 應(yīng)用是一件多么愜意的事情。而且 不要忘了,我們還有封裝大量要素的Javascript API !
          本篇文章來(lái)源于 GIS空間站 轉(zhuǎn)載請(qǐng)以鏈接形式注明出處 網(wǎng)址:http://www.gissky.net/Article/1701.htm

          posted on 2009-11-25 17:30 棋劍小秋 閱讀(644) 評(píng)論(0)  編輯  收藏 所屬分類(lèi): GIS
          主站蜘蛛池模板: 类乌齐县| 台中市| 老河口市| 易门县| 武功县| 虎林市| 诏安县| 潜江市| 开远市| 宜宾市| 盈江县| 布拖县| 大悟县| 安阳市| 罗源县| 沂水县| 安图县| 建水县| 云阳县| 西乌珠穆沁旗| 河西区| 天等县| 灵石县| 延津县| 理塘县| 左云县| 大余县| 宜良县| 刚察县| 虹口区| 分宜县| 忻城县| 开平市| 丹寨县| 玉溪市| 余庆县| 临沭县| 丰城市| 绥滨县| 孟村| 阳春市|