版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、ArcGIS訪問WFS服務(wù)ESRI中國(guó)(北京)有限公司 廣州辦事處肖干林一、概述OGC全稱Open Geospatial Consortium,是一個(gè)非盈利的、國(guó)際化的、自愿協(xié)商的標(biāo)準(zhǔn)化組織,它的主要目的就是制定與空間信息、基于位置服務(wù)相關(guān)的標(biāo)準(zhǔn)。這些標(biāo)準(zhǔn)就是OGC的“產(chǎn)品”,而這些標(biāo)準(zhǔn)的用處就在于使不同廠商、不同產(chǎn)品之間可以通過(guò)統(tǒng)一的接口進(jìn)行互操作。這些標(biāo)準(zhǔn)中,一般我們接觸的都集中在數(shù)據(jù)交換和服務(wù)互操作方面,比如GML、KML和WFS、WMS等,其實(shí)這也是一些標(biāo)準(zhǔn)存在意義較大的場(chǎng)合。WFS(OpenGIS® Web Feature Service)當(dāng)前版本是1.1.0。WFS標(biāo)準(zhǔn)定
2、義了一些操作,這些操作允許用戶在分布式的環(huán)境下通過(guò)HTTP對(duì)空間數(shù)據(jù)迚行查詢、編輯等操作。 WFS服務(wù)要求服務(wù)的接口必須由XML描述,另外數(shù)據(jù)交互必須由GML進(jìn)行,數(shù)據(jù)過(guò)濾采用CQL語(yǔ)言。當(dāng)一個(gè)客戶端想要訪問WFS服務(wù)時(shí),一般會(huì)涉及到以下的流程: 1.通過(guò)操作獲取WFS服務(wù)支持的操作和要素類(Feature Type,可以理解為WFS中的數(shù)據(jù)集)。2.(可能)通過(guò)操作獲取WFS服務(wù)支持的要素類的定義。3. 客戶端發(fā)送某個(gè)操作的請(qǐng)求。 4. WFS服務(wù)處理請(qǐng)求。 5. WFS服務(wù)返回處理的結(jié)果和狀態(tài)。 上面幾個(gè)步驟中所提到的“操作”包括: 1. GetCapabilities(獲取服務(wù)中的要素類
3、及支持的操作) 2. DescribeFeatureType(描述要素類的信息) 3. GetFeature(獲取要素) 4. GetGmlObject(通過(guò)XLink獲取GML對(duì)象) 5. Transaction(創(chuàng)建、更新、刪除數(shù)據(jù)的事務(wù)操作) 6. LockFeature(在事務(wù)過(guò)程中鎖定要素)但是,這些操作并不是必須全部實(shí)現(xiàn),而是實(shí)現(xiàn)全部或部分。根據(jù)所支持的操作不同,WFS可以分為3類:1. Basic WFS(就是最常被提及的WFS,必須支持GetCapabilities/ DescribeFeatureType/ GetFeature操作,在功能上意味著提供一個(gè)只讀的數(shù)據(jù)服務(wù)) 2
4、. XLink WFS(必須在Basic WFS基礎(chǔ)上加上GetGmlObject操作) 3. Transaction WFS(也有稱為WFS-T,必須在Basic WFS基礎(chǔ)上加上Transaction操作以支持編輯數(shù)據(jù),另外也可以加上GetGmlObject/LockFeature操作)。詳細(xì)OGC標(biāo)準(zhǔn)說(shuō)明和WFS各類方法說(shuō)明見(OGC標(biāo)準(zhǔn)介紹.pdf)資料。以下演示使用到的環(huán)境:Windows 7ArcGIS 10ArcGIS API For Flex 2.3二、ArcGIS Server構(gòu)建WFS在研究GIS訪問WFS之前,需要有相關(guān)的WFS地圖服務(wù)可以使用。通過(guò)ArcGIS Serv
5、er軟件可以構(gòu)建OGC標(biāo)準(zhǔn)的地圖服務(wù),如:WMS和WFS服務(wù),供給其他客戶端使用,其構(gòu)建過(guò)程如下:1、首先使用ArcGIS Desktop的ArcMap軟件制作需要發(fā)布的地圖內(nèi)容,包括:添加需要發(fā)布的地圖圖層數(shù)據(jù),并設(shè)置相應(yīng)的符號(hào)、顏色、大小等信息,然后保存為MXD文檔(名稱如:demo.mxd),如下圖:2、在制作好地圖文檔后,使用ArcCatalog軟件將該文檔發(fā)布為ArcGIS Server的地圖服務(wù),如下圖: 第一步打開ArcCatalog軟件,并找到“GIS Server”目錄下的“Add ArcGIS Server”,然后雙擊,如下圖:選擇“Manage GIS Services”
6、選項(xiàng),然后點(diǎn)擊“下一步”按鈕,如下圖:然后在“Host Name”輸入安裝有ArcGIS Server的服務(wù)器名稱(如:XGLESRI),并點(diǎn)擊“Finish”按鈕完成增加ArcGIS Server管理。如下圖:第二步,發(fā)布地圖文檔,選擇制作好的地圖文檔(如:demo.mxd),然后點(diǎn)擊鼠標(biāo)右鍵,選擇“Publish to ArcGIS Server”,如下圖:設(shè)置發(fā)布的服務(wù)信息(如:服務(wù)名稱,服務(wù)所在目錄等),如下圖:點(diǎn)擊“下一步”按鈕,選擇地圖服務(wù)類型(選擇WFS和WMS),如下圖:點(diǎn)擊“下一步”按鈕,完成發(fā)布服務(wù)過(guò)程,如下圖:點(diǎn)擊“Finish”按鈕,然后可以在第一步增加的GIS Ser
7、ver目錄下出現(xiàn)剛才發(fā)布的地圖服務(wù),如下圖:這樣可以使用其他客戶端訪問剛才發(fā)布的“demo”服務(wù)(該服務(wù)具有WMS和WFS服務(wù)類型)??梢灾苯釉跒g覽器中訪問WFS服務(wù),查看器返回的結(jié)果,在瀏覽器地址欄中輸入http:/localhost/ArcGIS/services/demo/MapServer/WFSServer?request=Getfeature&service=WFS&typename=cities,如下圖:三、構(gòu)建WFS服務(wù)查詢語(yǔ)句使用GIS客戶端訪問和查詢WFS服務(wù),需要對(duì)查詢WFS服務(wù)的查詢方式進(jìn)行構(gòu)建,并對(duì)WFS查詢語(yǔ)句表達(dá)方式進(jìn)行了解。但首先需要了解WFS查
8、詢謂詞(空間和屬性)的含義:首先介紹空間關(guān)系謂詞,包括: Disjoint, Touches, Crosses, Within, Overlaps, Contains, Intersects, Equals, DWithin, Beyond, BBOX。前面八個(gè)是OGC定義的空間關(guān)系謂詞,其解釋如下:(1)Disjoint任意給兩個(gè)空間實(shí)體a和b(拓?fù)溟]合的):a.disjoint(b) IaIb=Ø(2)Touchestouch關(guān)系適合于面/面、線/線、線/面、點(diǎn)/面、點(diǎn)/線間的相互關(guān)系,但點(diǎn)/點(diǎn)間沒有定義這種關(guān)系。對(duì)于滿足要求的空間實(shí)體a和b:a.touch(b) (IaIb=
9、Ø)(abØ)touch關(guān)系的幾個(gè)例子如圖2所示:圖2 Touch關(guān)系的例子(3)Crossescrosses關(guān)系適用于點(diǎn)/線、點(diǎn)/面、線/線及線/面間關(guān)系。令dim(a)表示空間對(duì)象a的維度,則crosses關(guān)系定義為:a.crosses(b) (dim(I(a)I(b)<max(dim(I (a),dim(I(b) (ab) a(ab) bcrosses關(guān)系的幾個(gè)例子如圖3所示:圖3 Cross關(guān)系的例子(4)Withinwithin關(guān)系定義為:a.within(b) (ab)=a(I(a)I(b) Øoverlaps的幾個(gè)例子如圖4所示:圖4 With
10、in關(guān)系的例子(5)Overlapsoverlaps關(guān)系適用于面/面、線/線和點(diǎn)/點(diǎn)關(guān)系,定義如下:a.overlaps(b) (dim(I(a)=dim(I(b)=dim(I(a)I(b)(aba) (abb)overlaps的幾個(gè)例子如圖5所示:圖5 Overlaps關(guān)系的例子除了上述5個(gè)關(guān)系,為了使用的方便,還定義了以下幾個(gè)關(guān)系:(6)Contains:a.contains(b) b.within(a)(7)Intersects:ersects(b) span style="mso-spacerun: yes"> a.disjoints(b)(8)Eq
11、uals:a.equals(b) a.within(b)b.within(a)后面三個(gè)是WFS定義的空間關(guān)系謂詞。DWithin可以查詢一個(gè)圓形范圍內(nèi)的要素,需要給一個(gè)距離參數(shù)。BBOX查詢矩形范圍內(nèi)的要素。屬性查詢類似于數(shù)據(jù)庫(kù)SQL語(yǔ)句,提供如下屬性比較謂詞:Equal, NotEqual, Less, Greater, LessOrEqual, GreaterOrEqual, Like, IsNull, Between。 Equal:等于。 NotEqual:不等于。 Less:小于。 Greater:大于。 LessOrEqual:小于等于。 GreaterOrEqual:大于等于。 L
12、ike:相似。使用通配符“*”表示任意數(shù)量的字符,“?”表示一個(gè)字符。 IsNull:為空,字段值為空。 Between:介于兩者之間。3.1、屬性查詢語(yǔ)句可以直接通過(guò)寫查詢語(yǔ)句,實(shí)行WFS查詢操作。這樣您就需要知道WFS查詢語(yǔ)句如何編寫。WFS查詢條件中And、Or、Not這三個(gè)邏輯判斷謂詞需要使用<××></××>的形式將條件包含其中,這一點(diǎn)和SQL差異比較大。SQL語(yǔ)句:條件1 And 條件2 ,WFS語(yǔ)句是 <And> 條件1 條件2 </And>。以下說(shuō)明每種屬性比較謂詞如何寫成WFS查詢條件:1
13、)、Equal(=):第一個(gè)%s填寫字段名稱,第二個(gè)%s填寫字段值:<PropertyIsEqualTo><PropertyName>%s</PropertyName><Literal>%s</Literal></PropertyIsEqualTo>;2)、NotEqual(<>):第一個(gè)%s填寫字段名稱,第二個(gè)%s填寫字段值:<PropertyIsNotEqualTo><PropertyName>%s</PropertyName><Literal>%s</
14、Literal></PropertyIsNotEqualTo>;3)、Less(<):第一個(gè)%s填寫字段名稱,第二個(gè)%s填寫字段值:<PropertyIsLessThan><PropertyName>%s</PropertyName><Literal>%s</Literal></PropertyIsLessThan>;4)、Greater(>):第一個(gè)%s填寫字段名稱,第二個(gè)%s填寫字段值:<PropertyIsGreaterThan><PropertyName>%s&
15、lt;/PropertyName><Literal>%s</Literal></PropertyIsGreaterThan>;5)、LessOrEqual(<=):第一個(gè)%s填寫字段名稱,第二個(gè)%s填寫字段值:<PropertyIsLessThanOrEqualTo><PropertyName>%s</PropertyName><Literal>%s</Literal></PropertyIsLessThanOrEqualTo>;6)、GreaterOrEqual(>=
16、):第一個(gè)%s填寫字段名稱,第二個(gè)%s填寫字段值:<PropertyIsGreaterThanOrEqualTo><PropertyName>%s</PropertyName><Literal>%s</Literal></PropertyIsGreaterThanOrEqualTo>;7)、Like:第一個(gè)%s填寫字段名稱,第二個(gè)%s填寫字段值:<PropertyIsLike wildCard="*" singleChar="?" escapeChar=""
17、><PropertyName>%s</PropertyName><Literal>%s</Literal></PropertyIsLike>;8)、IsNull:第一個(gè)%s填寫字段名稱:<PropertyIsNull><PropertyName>%s</PropertyName></PropertyIsNull>;9)、Between:第一個(gè)%s填寫字段名稱,第二個(gè)%s填寫字段值下限,第三個(gè)%s填寫字段值上限:<PropertyIsBetween><Propert
18、yName>%s</PropertyName><LowerBoundary>%s</LowerBoundary><UpperBoundary>%s</UpperBoundary></PropertyIsBetween>;綜上所述,例子中屬性查詢語(yǔ)句部分可以直接寫成:http:/localhost/ArcGIS/services/DemoWFS/MapServer/WFSServer?request=Getfeature&service=WFS&typename=Tbeijing_qiao&Fi
19、lter=<ogc:Filter><ogc:And><ogc:PropertyIsLike wildCard='*' singleChar='?' escapeChar=''><ogc:PropertyName>name</ogc:PropertyName><ogc:Literal>*河*</ogc:Literal></ogc:PropertyIsLike><ogc:PropertyIsEqualTo><ogc:PropertyNam
20、e>class</ogc:PropertyName><ogc:Literal>2</ogc:Literal></ogc:PropertyIsEqualTo></ogc:And></ogc:Filter>WFS的“Filter”就相當(dāng)于SQL中的“where”。從上述語(yǔ)句看出,其實(shí)SQL的where查詢語(yǔ)句為:name like '%河%' and class = 2。而在進(jìn)行WFS查詢時(shí),其查詢語(yǔ)句為上述結(jié)構(gòu),并且構(gòu)建時(shí)需要帶“ogc”標(biāo)識(shí),要不然就無(wú)法正常查詢了。從上述WFS過(guò)濾查詢語(yǔ)句與SQL查詢
21、語(yǔ)句對(duì)比,可以看出兩者之間的差異非常大,這樣我們就需要了解怎樣將SQL的where查詢語(yǔ)句解析為WFS過(guò)濾查詢語(yǔ)句,解析代碼詳見代碼文件。3.2、空間查詢語(yǔ)句同樣,可以使用空間查詢方式進(jìn)行WFS服務(wù)的查詢,下面介紹空間查詢語(yǔ)句如何編寫。需要注意的是由于WFS坐標(biāo)顯示為“40.151,116.527”,而我們?cè)贏rcMap查看坐標(biāo)顯示是“116.527,40.151”,所以在填寫坐標(biāo)時(shí)需要將從地圖上獲取到XY坐標(biāo)順序進(jìn)行反轉(zhuǎn)為YX。在某些地理坐標(biāo)系(例如 WGS 84)中返回的要素具有默認(rèn)的緯度、經(jīng)度 (y,x) 的軸順序。這一點(diǎn)符合 WFS 1.1 規(guī)范。如果某些 WFS 客戶端希望坐標(biāo)以經(jīng)度
22、、緯度 (x,y) 的軸順序返回。要使用這些客戶端,您可將服務(wù)的軸順序設(shè)置為經(jīng)度、緯度。以下描述了設(shè)置該屬性的方法:1. 以管理員的身份登錄到運(yùn)行 ArcGIS Server 的計(jì)算機(jī)。 2. 關(guān)閉 ArcGIS Server。 3. 轉(zhuǎn)到服務(wù)配置文件的位置。例如,如果 ArcGIS Server 安裝在 c:arcgis 中,則請(qǐng)轉(zhuǎn)到 c:arcgisserverusercfg。 4. 在文本編輯器中打開您的服務(wù)的配置文件(例如 myservice.cfg)。 5. 在 WFS 部分中,將以下內(nèi)容添加到屬性:<AxisOrderWFS11>longlat</AxisOrde
23、rWFS11>。例如: <Extension><TypeName>WFSServer</TypeName><Enabled>true</Enabled><Properties><AxisOrderWFS11>longlat</AxisOrderWFS11><CustomGetCapabilities>false</CustomGetCapabilities><EnableTransactions>false</EnableTransactions>
24、;<Name>wfs_WFSTest_ras</Name><OnlineResource>http:/bobmk/arcgis/services/wfs/WFSTest_ras/MapServer/WFSServer</OnlineResource><AppSchemaURI>http:/bobmk/arcgis/services/wfs/WFSTest_ras/MapServer/WFSServer</AppSchemaURI><AppSchemaPrefix>wfs_WFSTest_ras</AppS
25、chemaPrefix></Properties><Info><WebEnabled>true</WebEnabled></Info></Extension>6. 啟動(dòng) ArcGIS Server。從服務(wù)中請(qǐng)求的地理坐標(biāo)的要素現(xiàn)在以經(jīng)度、緯度的軸順序返回。請(qǐng)注意軸順序?qū)傩詢H適用于帶地理坐標(biāo)的要素。帶有投影坐標(biāo)的要素始終以 x,y 的軸順序返回。以下列舉說(shuō)明空間比較謂詞如何寫成WFS查詢條件:1)、Equals:第一個(gè)%s填寫圖形字段名稱(如:shape),第二個(gè)%f,%f填寫圖形的坐標(biāo)值:<ogc:Equals
26、><ogc:PropertyName>%s</ogc:PropertyName><gml:Point><gml:coordinates>%f,%f</gml:coordinates></gml:Point></ogc:Equals>2)、Intersects:第一個(gè)%s填寫圖形字段名稱,第二個(gè)%f,%f填寫多邊形的節(jié)點(diǎn)坐標(biāo),注意要首尾坐標(biāo)閉合。<ogc:Intersects><ogc:PropertyName>%s</ogc:PropertyName><gml:P
27、olygon><gml:outerBoundaryIs><gml:LinearRing><gml:coordinates>%f,%f %f,%f %f,%f %f,%f</gml:coordinates></gml:LinearRing></gml:outerBoundaryIs></gml:Polygon></ogc:Intersects>3)、BBOX:第一個(gè)%s填寫圖形字段名稱,第二個(gè)%s填寫坐標(biāo)系統(tǒng),后面四個(gè)%f填寫一個(gè)矩形范圍(順序?yàn)閤min,ymin,xmax,ymax)。<
28、ogc:BBOX><ogc:PropertyName>%s</ogc:PropertyName><gml:Box srsName="%s"><gml:coordinates>%f,%f %f,%f</gml:coordinates></ gml:Box></ogc:BBOX>多個(gè)空間查詢條件也需要邏輯比較謂詞來(lái)包含,同時(shí)需要使用正確的標(biāo)識(shí)“gml”,一個(gè)空間查詢條件可以看作是一個(gè)屬性查詢條件,這方面操作是一致的。完整的空間查詢語(yǔ)句如下:http:/xiaogl/ArcGIS/servi
29、ces/DemoWFS/MapServer/WFSServer?request=Getfeature&service=WFS&typename=Tbeijing_qiao&Filter=<ogc:Filter><ogc:Intersects><ogc:PropertyName>Shape</ogc:PropertyName><gml:Polygon><gml:outerBoundaryIs><gml:LinearRing><gml:coordinates>40.334,116
30、.304 40.317,116.366 40.264,116.321 40.277,116.288 40.312,116.287 40.334,116.304</gml:coordinates></gml:LinearRing></gml:outerBoundaryIs></gml:Polygon></ogc:Intersects></ogc:Filter>各類空間關(guān)系查詢表現(xiàn)樣式,請(qǐng)?jiān)敿?xì)參見:https:/wiki.state.ma.us/confluence/display/massgis/contains3.3、空間
31、和屬性混合查詢通過(guò)上述說(shuō)明,可以實(shí)現(xiàn)屬性查詢和空間查詢,能否實(shí)現(xiàn)將屬性和空間進(jìn)行聯(lián)合查詢呢?答案是肯定的,通過(guò)組合WFS屬性和空間的查詢語(yǔ)句,實(shí)現(xiàn)兩者的混合查詢模式,查詢語(yǔ)句如下:http:/localhost/ArcGIS/services/DemoWFS/MapServer/WFSServer?request=Getfeature&service=WFS&typename=Tbeijing_qiao&Filter=<ogc:Filter><ogc:And><ogc:PropertyIsEqualTo><ogc:Propert
32、yName>class</ogc:PropertyName><ogc:Literal>2</ogc:Literal></ogc:PropertyIsEqualTo><ogc:BBOX><ogc:PropertyName>Shape</ogc:PropertyName><gml:Box srsName='EPSG:4326'><gml:coordinates>40.268176013,116.199341863 40.30384199,116.250685194<
33、;/gml:coordinates></gml:Box></ogc:BBOX></ogc:And></ogc:Filter>這樣可以有效結(jié)合屬性查詢和空間查詢,達(dá)到精確查詢的目的。四、使用ArcGIS Flex API查詢WFS在了解WFS屬性和空間查詢語(yǔ)句的構(gòu)建方法后,需要在其他客戶端進(jìn)行測(cè)試,看能否通過(guò)構(gòu)建的查詢語(yǔ)句正確查詢到所需要的對(duì)象信息。而且了解在客戶端怎樣實(shí)現(xiàn)WFS查詢語(yǔ)句的執(zhí)行和查詢結(jié)果的解析成符合客戶端需要的方式進(jìn)行展現(xiàn)查詢結(jié)果。下面以ArcGIS API For Flex為客戶端表現(xiàn)方式進(jìn)行WFS服務(wù)地圖查詢并展現(xiàn)查詢結(jié)果
34、。4.1、Flex 執(zhí)行WFS查詢方式對(duì)于在Flex 執(zhí)行WFS服務(wù)查詢語(yǔ)句有兩種方式:“HTTPService”和“urlLoader”,下面分別介紹兩種查詢方式:第一種“HTTPService”查詢方式,一般在使用XML格式描述WFS查詢語(yǔ)句時(shí)常使用,使用步驟是:首先定義一個(gè)“HTTPService”對(duì)象,并且使用“POST”方法進(jìn)行請(qǐng)求,如下:<fx:Declarations><!- 將非可視元素(例如服務(wù)、值對(duì)象)放在此處 -><mx:HTTPService id="parseXml" method="POST" r
35、esult="resultEve(event)" fault="faultEve(event)" resultFormat="xml"/></fx:Declarations>然后定義WFS的XML格式查詢語(yǔ)句,如下:var xmlFile:XML = <wfs:GetFeature xmlns:xsi="/2001/XMLSchema-instance" xmlns:gml=" xmlns:wfs=" xmlns:ogc=" se
36、rvice="WFS" version="1.1.0"><wfs:Query typeName="massgis:Tbeijing_qiao" xmlns:massgis="http:/localhost/ArcGIS/services/DemoWFS/MapServer/WFSServer"><ogc:Filter xmlns=" <ogc:PropertyIsEqualTo><ogc:PropertyName>name</ogc:PropertyN
37、ame><ogc:Literal>前渠河橋</ogc:Literal></ogc:PropertyIsEqualTo></ogc:Filter></wfs:Query></wfs:GetFeature>var xml:XML = new XML(xmlFile);發(fā)送該XML查詢語(yǔ)句到后臺(tái)進(jìn)行請(qǐng)求,如下:parseXml.request=xml;parseXml.url="http:/localhost/ArcGIS/services/DemoWFS/MapServer/WFSServer"par
38、seXml.contentType = "application/xml"/需要注意:必須設(shè)置該項(xiàng)內(nèi)容,否則后臺(tái)無(wú)法解析XMLparseXml.send();并獲取查詢結(jié)果,如下:private function faultEve(event:FaultEvent):void trace(event.message) private function resultEve(event:ResultEvent):void var arr:String=event.result.toString();/Alert.show(event.result.result.row.toSt
39、ring();var data:Object = event.result;下面對(duì)第二種方式進(jìn)行介紹:在構(gòu)建好WFS查詢語(yǔ)句后,可以在Flex中對(duì)該查詢語(yǔ)句進(jìn)行請(qǐng)求:var urlString:String = “http:/localhost/ArcGIS/services/DemoWFS/MapServer/WFSServer?request=Getfeature&service=WFS&typename=Tbeijing_qiao&Filter=<ogc:Filter><ogc:And><ogc:PropertyIsLike wild
40、Card='*' singleChar='?' escapeChar=''><ogc:PropertyName>name</ogc:PropertyName><ogc:Literal>*河*</ogc:Literal></ogc:PropertyIsLike><ogc:PropertyIsEqualTo><ogc:PropertyName>class</ogc:PropertyName><ogc:Literal>2</ogc:L
41、iteral></ogc:PropertyIsEqualTo></ogc:And></ogc:Filter>”;如果該語(yǔ)句中包含有中文查詢字符,則需要先進(jìn)行轉(zhuǎn)換成URI模式,如下:var uriString:String = encodeURI(urlString);對(duì)轉(zhuǎn)換好的WFS查詢語(yǔ)句進(jìn)行請(qǐng)求,如下:var request:URLRequest = new URLRequest(uriString);var loader:URLLoader = new URLLoader();loader.load(request);loader.addEven
42、tListener(Event.COMPLETE,onCompleteHandler);這樣請(qǐng)求后就可以得到查詢的結(jié)果,但是由于WFS查詢結(jié)果是以XML結(jié)構(gòu)方式進(jìn)行展現(xiàn)GML模式,這樣需要在Flex中對(duì)得到的查詢結(jié)果進(jìn)行解析。4.2、Flex解析WFS查詢結(jié)果使用Flex API中相應(yīng)的類來(lái)構(gòu)建對(duì)查詢結(jié)果中的地圖要素信息,需要對(duì)查詢結(jié)果進(jìn)行解析。在WFS查詢結(jié)果中要素信息都是包含在“featureMember”這個(gè)GML的節(jié)點(diǎn)中,包括:屬性值信息和空間幾何類型及坐標(biāo)值等。對(duì)應(yīng)WFS查詢結(jié)果中不同的幾何類型,使用Flex API中的幾何類進(jìn)行定義:var pt:Point = new Point
43、();var polygon:Polygon = new Polygon();var polyline:Polyline = new Polyline();在獲取幾何坐標(biāo)后,使用Flex API中的幾何類型進(jìn)行展現(xiàn)對(duì)應(yīng)的幾何形狀。獲取到幾何信息和屬性信息后,使用Flex API中Graphic進(jìn)行幾何形狀的繪制并表現(xiàn)在客戶端。五、使用ArcGIS Flex API更新WFS服務(wù)圖層ArcGIS Server 10中支持的WFS版本為最新的1.1.0。在ArcGIS Server中,只需簡(jiǎn)單地勾選的Capabilities選項(xiàng)卡中可以選擇支持WFS,如下圖。如果勾選了Transaction復(fù)選框
44、,那么通過(guò)該WFS還可以進(jìn)行數(shù)據(jù)更新(注意,需要是SDE數(shù)據(jù)源)。對(duì)WFS服務(wù)啟用事務(wù)能力后,就可以實(shí)現(xiàn)對(duì)WFS服務(wù)地圖圖層進(jìn)行更新編輯操作,包括Insert、Update、Delete三種編輯操作,可以使用如下語(yǔ)句進(jìn)行插入一條新記錄:<wfs:Transaction version="1.1.0" service="WFS" handle="Transaction 01" xmlns=" xmlns:wfs=" xmlns:ogc=" xmlns:gml=" xmlns:xsi=&quo
45、t;/2001/XMLSchema-instance" xsi:schemaLocation="http:/localhost/ArcGIS/services/TestWFST/MapServer/WFSServer http:/ localhost/ArcGIS/services/TestWFST/MapServer/WFSServer?request=DESCRIBEFEATURETYPE&typename=TestPoints ./wfs/1.1.0/WFS.xsd"><wfs:Insert><
46、TestPoints><name>Highway01</name><type>41</type><SHAPE><gml:Point><gml:pos>84.514 27.314</gml:pos></gml:Point></SHAPE></TestPoints></wfs:Insert></wfs:Transaction>然后使用HTTPService方式進(jìn)行POST請(qǐng)求,如果執(zhí)行成功則返回類似如下結(jié)果:<wfs:TransactionResponse xmlns:gml=" version="1.1.0" xmlns:xs="/2001/XMLSchema" xmlns:wfs=" xmlns:ogc=" fid="F460_463" /></wfs:Feature>&l
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度特色小鎮(zhèn)場(chǎng)地硬化與文化旅游開發(fā)合同3篇
- 2025年度智慧城市項(xiàng)目公司營(yíng)銷策劃合同3篇
- 二零二五年度個(gè)人與公司間代收代付房產(chǎn)交易合同范本2篇
- 2025年度全款購(gòu)置特色民宿買賣合同3篇
- 2025年度公司與員工租車及車輛租賃續(xù)租協(xié)議3篇
- 2025年度汽車租賃公司與個(gè)人汽車租賃風(fēng)險(xiǎn)管理協(xié)議3篇
- 2025年度農(nóng)業(yè)農(nóng)機(jī)智能化控制系統(tǒng)開發(fā)合同2篇
- 二零二五年度緊急物資公路運(yùn)輸保障協(xié)議3篇
- 二零二五年度農(nóng)村機(jī)井承包與水資源高效利用合同
- 2025年度個(gè)人與企業(yè)間房屋購(gòu)置公對(duì)私借款協(xié)議3篇
- 合規(guī)性評(píng)價(jià)報(bào)告(2022年)
- 大連市小升初手冊(cè)
- 《自然辯證法》課后習(xí)題答案自然辯證法課后題答案
- 中國(guó)人民財(cái)產(chǎn)保險(xiǎn)股份有限公司機(jī)動(dòng)車綜合商業(yè)保險(xiǎn)條款
- 燃?xì)夤こ瘫O(jiān)理實(shí)施細(xì)則(通用版)
- E車E拍行車記錄儀說(shuō)明書 - 圖文-
- 人才梯隊(duì)-繼任計(jì)劃-建設(shè)方案(珍貴)
- 《健身氣功》(選修)教學(xué)大綱
- 王家?guī)r隧道工程地質(zhì)勘察報(bào)告(總結(jié))
- 《昆明的雨》優(yōu)質(zhì)課一等獎(jiǎng)(課堂PPT)
- EHS的組織架構(gòu)和職責(zé)說(shuō)明(共2頁(yè))
評(píng)論
0/150
提交評(píng)論