小秋的家

          home

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

          1、為什么是ArcGIS server REST

            下面的兩幅圖分別描述了ArcIMS 和ArcGIS server REST的是請求機制

            ArcIMS 

           image001.png

            ArcGIS server REST

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

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

          image005.png 

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

          image007.png 

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

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

          image009.png

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

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

          為什么是 JavaScript ?

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

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

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

          2、信息的查詢 發(fā)送AJAX請求

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


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

          image013.png 

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

                   
             相對于ArcIMS而言 ArcGIS server REST地圖請求更為簡單,如下圖

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

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

          posted on 2009-11-25 17:30 棋劍小秋 閱讀(643) 評論(0)  編輯  收藏 所屬分類: GIS
          主站蜘蛛池模板: 贵阳市| 灯塔市| 卢龙县| 红河县| 襄垣县| 民乐县| 固始县| 深泽县| 平和县| 左贡县| 邢台县| 兴义市| 安康市| 克山县| 蒙城县| 临颍县| 襄汾县| 东台市| 昌吉市| 清新县| 黑山县| 英德市| 宝兴县| 固原市| 准格尔旗| 荃湾区| 巴青县| 沽源县| 河西区| 垣曲县| 龙州县| 修文县| 张家界市| 黑水县| 阿坝县| 台北县| 青田县| 三穗县| 彩票| 榆树市| 海南省|