<nobr id="rub96"><optgroup id="rub96"></optgroup></nobr>

    <bdo id="rub96"></bdo>

      1. <track id="rub96"><div id="rub96"></div></track>
        <nobr id="rub96"><optgroup id="rub96"></optgroup></nobr>

            <nobr id="rub96"><address id="rub96"><big id="rub96"></big></address></nobr>
          1. <menuitem id="rub96"><strong id="rub96"><menu id="rub96"></menu></strong></menuitem>
            <dl id="rub96"><source id="rub96"><tr id="rub96"></tr></source></dl>
            1. <tbody id="rub96"><div id="rub96"></div></tbody>
              1. <bdo id="rub96"><optgroup id="rub96"></optgroup></bdo>
              2. <bdo id="rub96"><dfn id="rub96"><dd id="rub96"></dd></dfn></bdo>
                1. <option id="rub96"><source id="rub96"></source></option>
                2. <bdo id="rub96"></bdo>

                    <p id="rub96"><tr id="rub96"></tr></p>
                  1. <tbody id="rub96"></tbody>

                    <bdo id="rub96"></bdo>

                  2. <option id="rub96"><source id="rub96"></source></option>

                    <bdo id="rub96"><optgroup id="rub96"><dd id="rub96"></dd></optgroup></bdo>
                      <track id="rub96"></track>

                        <bdo id="rub96"></bdo>
                      1. <option id="rub96"><p id="rub96"><tr id="rub96"></tr></p></option>

                          <bdo id="rub96"></bdo>
                          1. <track id="rub96"></track>
                            1. <track id="rub96"></track>
                                  <bdo id="rub96"></bdo>
                                  <option id="rub96"></option>

                                      1. <track id="rub96"><span id="rub96"></span></track>

                                          <option id="rub96"></option>

                                          1. 
                                            
                                              <option id="rub96"><span id="rub96"></span></option>
                                              <bdo id="rub96"><address id="rub96"></address></bdo>
                                              <option id="rub96"><source id="rub96"></source></option>
                                                <nobr id="rub96"><address id="rub96"></address></nobr>
                                              1. <nobr id="rub96"><optgroup id="rub96"><big id="rub96"></big></optgroup></nobr>
                                                <track id="rub96"></track>

                                                <nobr id="rub96"><optgroup id="rub96"></optgroup></nobr>
                                                1. Flyingis

                                                  Talking and thinking freely !
                                                  Flying in the world of GIS !
                                                  隨筆 - 156, 文章 - 16, 評論 - 589, 引用 - 0
                                                  數據加載中……

                                                  ArcGIS Server 開發系列(二)--Web ADF 編程

                                                      作者:Flyingis

                                                      本文嚴禁擅自轉載或用于商業目的,如有需要請事先聯系作者:dev.vip#gmail.com

                                                      Web ADF全名是Web Application Develope Framework,是ArcGIS Server專用的開發框架,9.2版本的ArcIMS也開始提供ADF的封裝。完全使用Web控件編程幾乎不能解決我們實際項目中的問題,因此我們從《ArcGIS Server 開發系列(一)--編程框架總覽》中提到的途徑二開始,即web controls + common datasource apis。

                                                      目標:

                                                      根據查詢語句實現圖層信息查詢

                                                      準備工作:

                                                      1.Windows XP sp2中/英文版
                                                      2.Visual Studio 2005中/英文版
                                                      3.ArcGIS Server 9.2(我打上了sp2補丁),創建一個ArcGIS Server服務,Map Server屬性中更改Pooling,使用池化連接方式,Progresses選擇“In a seperate process for each instance(high isolation)”,我的服務為“World”
                                                      4.利用vs2005創建一個模板server應用--Web Mapping Application,并更改MapResourceManager屬性



                                                      這樣我們可以測試程序看是否能夠正常運行,啟動調試看到如下結果:


                                                      代碼實現:

                                                      我們要完成的工作是對圖層屬性信息的查詢,首先在頁面左側添加一個新的panel,左側的Tasks、Results等都是放置在panel之中,在這個新的panel中分別添加TreeViewPlus、TextBox、Button三個控件,TextBox輸入查詢條件,Button確定查詢, TreeViewPlus顯示結果,在設計試圖中瀏覽效果如下:


                                                      雙擊“Query”Button,編寫點擊事件。

                                                      protected void cmdQuery_Click(object sender, EventArgs e)
                                                      
                                                  {
                                                          Query(Map1.Extent);
                                                      }

                                                      Query方法實現了對圖層屬性信息的查詢。   

                                                  protected void Query(ESRI.ArcGIS.ADF.Web.Geometry.Geometry geometry)
                                                      
                                                  {
                                                          IEnumerable func_enum 
                                                  = null;
                                                          
                                                  //獲取當前map1控件中所有的functionality
                                                          func_enum = Map1.GetFunctionalities();

                                                          System.Data.DataTable datatable;
                                                          
                                                  //對所有的functionality進行遍歷
                                                          foreach (ESRI.ArcGIS.ADF.Web.DataSources.IGISFunctionality gisfunctionality in func_enum)
                                                          
                                                  {
                                                              ESRI.ArcGIS.ADF.Web.DataSources.IGISResource gisresource 
                                                  = null;
                                                              
                                                  //得到該functionality的resource
                                                              gisresource = gisfunctionality.Resource;

                                                              
                                                  //判斷該resource是否支持IQueryFunctionality  
                                                              bool supported = false;
                                                              supported 
                                                  = gisresource.SupportsFunctionality(typeof(ESRI.ArcGIS.ADF.Web.DataSources.IQueryFunctionality));

                                                              
                                                  if (supported)
                                                              
                                                  {
                                                                  ESRI.ArcGIS.ADF.Web.DataSources.IQueryFunctionality qfunc;
                                                                  qfunc 
                                                  = (ESRI.ArcGIS.ADF.Web.DataSources.IQueryFunctionality)gisresource.CreateFunctionality(typeof(ESRI.ArcGIS.ADF.Web.DataSources.IQueryFunctionality), null);

                                                                  
                                                  string[] lids;
                                                                  
                                                  string[] lnames;
                                                                  
                                                  //獲得圖層的layerId和layerName,GetQueryableLayers的重載方法可以指定圖層類型
                                                                  qfunc.GetQueryableLayers(nullout lids, out lnames);

                                                                  ESRI.ArcGIS.ADF.Web.SpatialFilter spatialfilter 
                                                  = new ESRI.ArcGIS.ADF.Web.SpatialFilter();
                                                                  
                                                  //設置過濾器的過濾條件,txtQuery就是panel中text box的ID
                                                                  spatialfilter.ReturnADFGeometries = false;
                                                                  spatialfilter.MaxRecords 
                                                  = 1000;
                                                                  spatialfilter.WhereClause 
                                                  = txtQuery.Text;
                                                                  spatialfilter.Geometry 
                                                  = geometry;

                                                                  
                                                  //對指定的圖層進行查詢,查詢的結果保存為DataTable
                                                                  datatable = qfunc.Query(null, lids[0], spatialfilter);

                                                                  TreeViewPlus1.Nodes.Clear();
                                                                  
                                                  if (datatable != null)
                                                                  
                                                  {
                                                                      System.Data.DataSet ds 
                                                  = new System.Data.DataSet();
                                                                      ds.Tables.Add(datatable);
                                                                      TreeViewPlus1.ShowClearAllButton 
                                                  = false;
                                                                      
                                                  //將結果綁定到TreeViewPlus控件上
                                                                      TreeViewPlus1.BindToDataSet(ds);

                                                                      TreeViewPlus1.Nodes[
                                                  0].Expanded = true;
                                                                  }

                                                              }

                                                          }

                                                      }

                                                     
                                                      運行程序,text box中輸入“CNTRY_NAME LIKE 'A%'”,查詢結果:


                                                      這樣這個小程序就完成了,在server中實現了對圖層屬性信息的查詢,現在我們需要進行更多的考慮:

                                                      第一,考慮web控件、 functionality、datasource、resource、resourcemamager之間的關系,代碼中多次對它們的關系進行了描述,用文檔中的一幅圖可以概括整個框架,這篇文章對此進行了闡述--《ArcGIS Server .Net Web ADF體系結構》。


                                                      第二,程序中使用的mxd僅僅包含一個world圖層,因此對圖層進行遍歷的過程中只需獲得第一圖層的ID,如果指定圖層名,可以在lnames得到所需的圖層進行查詢。

                                                      第三,程序實現的查詢方式相當簡單,在text box中輸入原始的sql來完成where語句,只僅僅是一個測試,一般我們會屏蔽掉sql相關的關鍵字,提供多個text box或dropdownlist供用戶選擇進行字段查詢。

                                                      第四,如果查詢信息量不大,返回結果數量不多,完全可以考慮ajax來完成頁面請求,不論是速度還是用戶體驗都會得到提高。

                                                      第五,通過程序可以看到,查詢結果保存在一個datatable中,這極大的方便了server查詢和.net的無縫連接,直接將結果和TreeViewPlus綁定,換成其他的visual studio控件也沒問題。

                                                      只要整個框架思路清晰了,查詢功能的實現其實很簡單,這也是途徑2開發方式的一個例子,可以看出ArcGIS Server ADF給開發提供了很多便利,和ArcIMS相比開發難度相當,多看看文檔和ADF OMD圖可以讓我們對ArcGIS Server ADF開發有更多的了解,記住,這只是server開發的起步。

                                                  posted on 2007-08-14 13:55 Flyingis 閱讀(6804) 評論(10)  編輯  收藏 所屬分類: ArcGIS Server

                                                  評論

                                                  # re: ArcGIS Server 開發系列(二)--Web ADF 編程  回復  更多評論   

                                                  寫得不錯,繼續努力,期待ArcGIS Server 開發系列(三)......
                                                  2007-08-21 11:49 | zhaomz

                                                  # re: ArcGIS Server 開發系列(二)--Web ADF 編程  回復  更多評論   

                                                  這邊server寫的更多,暫時沒有轉過來:
                                                  http://www.cnblogs.com/flyingis
                                                  2007-10-16 11:34 | Flyingis

                                                  # re: ArcGIS Server 開發系列(二)--Web ADF 編程  回復  更多評論   

                                                  我在幫助上看,一個簡單的WEB瀏覽器就可以打開WMS服務。
                                                  WMS是不是就是個一般的地圖呢》》請問
                                                  問什么我輸入URL的時候報錯捏。。
                                                  難道普通的IE瀏覽器不可以顯示打開嗎
                                                  opernlayers是什么東東啊
                                                  2007-11-20 09:44 | question

                                                  # re: ArcGIS Server 開發系列(二)--Web ADF 編程  回復  更多評論   

                                                  學習中,覺得你的文章對我這個初學者太有用了。
                                                  2007-12-26 22:22 | 丫頭

                                                  # re: ArcGIS Server 開發系列(二)--Web ADF 編程  回復  更多評論   

                                                  @丫頭
                                                  開發系列更多的可以看這里的文章:
                                                  http://www.cnblogs.com/flyingis
                                                  2008-01-02 09:43 | Flyingis

                                                  # re: ArcGIS Server 開發系列(二)--Web ADF 編程  回復  更多評論   

                                                  @question
                                                  wms是gis地圖服務標準的一種,你在arccatalog中可以add wms server查看地圖。
                                                  2008-01-02 10:10 | Flyingis

                                                  # re: ArcGIS Server 開發系列(二)--Web ADF 編程  回復  更多評論   

                                                  現在來說思路已經清晰好多了!謝謝1
                                                  2008-01-10 18:49 | 廣州的丫頭

                                                  # re: ArcGIS Server 開發系列(二)--Web ADF 編程  回復  更多評論   

                                                  寫得很好,對我這樣的初學者很有用,多謝了
                                                  2008-11-01 11:20 | leepf7211

                                                  # re: ArcGIS Server 開發系列(二)--Web ADF 編程  回復  更多評論   

                                                  請問wms服務添加后在發布的地址是多少?
                                                  2009-01-03 21:13 | lizhenhuatop

                                                  # re: ArcGIS Server 開發系列(二)--Web ADF 編程  回復  更多評論   

                                                  protected void Query(ESRI.ArcGIS.ADF.Web.Geometry.Geometry geometry) 這句應該是protected void Query(ESRI.ArcGIS.ADF.Web.Geometry geometry)吧
                                                  2010-08-11 11:20 | 第三關

                                                  只有注冊用戶登錄后才能發表評論。


                                                  網站導航:
                                                   
                                                  精准平特三肖
                                                  <nobr id="rub96"><optgroup id="rub96"></optgroup></nobr>

                                                  <bdo id="rub96"></bdo>

                                                    1. <track id="rub96"><div id="rub96"></div></track>
                                                      <nobr id="rub96"><optgroup id="rub96"></optgroup></nobr>

                                                          <nobr id="rub96"><address id="rub96"><big id="rub96"></big></address></nobr>
                                                        1. <menuitem id="rub96"><strong id="rub96"><menu id="rub96"></menu></strong></menuitem>
                                                          <dl id="rub96"><source id="rub96"><tr id="rub96"></tr></source></dl>
                                                          1. <tbody id="rub96"><div id="rub96"></div></tbody>
                                                            1. <bdo id="rub96"><optgroup id="rub96"></optgroup></bdo>
                                                            2. <bdo id="rub96"><dfn id="rub96"><dd id="rub96"></dd></dfn></bdo>
                                                              1. <option id="rub96"><source id="rub96"></source></option>
                                                              2. <bdo id="rub96"></bdo>

                                                                  <p id="rub96"><tr id="rub96"></tr></p>
                                                                1. <tbody id="rub96"></tbody>

                                                                  <bdo id="rub96"></bdo>

                                                                2. <option id="rub96"><source id="rub96"></source></option>

                                                                  <bdo id="rub96"><optgroup id="rub96"><dd id="rub96"></dd></optgroup></bdo>
                                                                    <track id="rub96"></track>

                                                                      <bdo id="rub96"></bdo>
                                                                    1. <option id="rub96"><p id="rub96"><tr id="rub96"></tr></p></option>

                                                                        <bdo id="rub96"></bdo>
                                                                        1. <track id="rub96"></track>
                                                                          1. <track id="rub96"></track>
                                                                                <bdo id="rub96"></bdo>
                                                                                <option id="rub96"></option>

                                                                                    1. <track id="rub96"><span id="rub96"></span></track>

                                                                                        <option id="rub96"></option>

                                                                                        1. 
                                                                                          
                                                                                            <option id="rub96"><span id="rub96"></span></option>
                                                                                            <bdo id="rub96"><address id="rub96"></address></bdo>
                                                                                            <option id="rub96"><source id="rub96"></source></option>
                                                                                              <nobr id="rub96"><address id="rub96"></address></nobr>
                                                                                            1. <nobr id="rub96"><optgroup id="rub96"><big id="rub96"></big></optgroup></nobr>
                                                                                              <track id="rub96"></track>

                                                                                              <nobr id="rub96"><optgroup id="rub96"></optgroup></nobr>
                                                                                                <nobr id="rub96"><optgroup id="rub96"></optgroup></nobr>

                                                                                                <bdo id="rub96"></bdo>

                                                                                                  1. <track id="rub96"><div id="rub96"></div></track>
                                                                                                    <nobr id="rub96"><optgroup id="rub96"></optgroup></nobr>

                                                                                                        <nobr id="rub96"><address id="rub96"><big id="rub96"></big></address></nobr>
                                                                                                      1. <menuitem id="rub96"><strong id="rub96"><menu id="rub96"></menu></strong></menuitem>
                                                                                                        <dl id="rub96"><source id="rub96"><tr id="rub96"></tr></source></dl>
                                                                                                        1. <tbody id="rub96"><div id="rub96"></div></tbody>
                                                                                                          1. <bdo id="rub96"><optgroup id="rub96"></optgroup></bdo>
                                                                                                          2. <bdo id="rub96"><dfn id="rub96"><dd id="rub96"></dd></dfn></bdo>
                                                                                                            1. <option id="rub96"><source id="rub96"></source></option>
                                                                                                            2. <bdo id="rub96"></bdo>

                                                                                                                <p id="rub96"><tr id="rub96"></tr></p>
                                                                                                              1. <tbody id="rub96"></tbody>

                                                                                                                <bdo id="rub96"></bdo>

                                                                                                              2. <option id="rub96"><source id="rub96"></source></option>

                                                                                                                <bdo id="rub96"><optgroup id="rub96"><dd id="rub96"></dd></optgroup></bdo>
                                                                                                                  <track id="rub96"></track>

                                                                                                                    <bdo id="rub96"></bdo>
                                                                                                                  1. <option id="rub96"><p id="rub96"><tr id="rub96"></tr></p></option>

                                                                                                                      <bdo id="rub96"></bdo>
                                                                                                                      1. <track id="rub96"></track>
                                                                                                                        1. <track id="rub96"></track>
                                                                                                                              <bdo id="rub96"></bdo>
                                                                                                                              <option id="rub96"></option>

                                                                                                                                  1. <track id="rub96"><span id="rub96"></span></track>

                                                                                                                                      <option id="rub96"></option>

                                                                                                                                      1. 
                                                                                                                                        
                                                                                                                                          <option id="rub96"><span id="rub96"></span></option>
                                                                                                                                          <bdo id="rub96"><address id="rub96"></address></bdo>
                                                                                                                                          <option id="rub96"><source id="rub96"></source></option>
                                                                                                                                            <nobr id="rub96"><address id="rub96"></address></nobr>
                                                                                                                                          1. <nobr id="rub96"><optgroup id="rub96"><big id="rub96"></big></optgroup></nobr>
                                                                                                                                            <track id="rub96"></track>

                                                                                                                                            <nobr id="rub96"><optgroup id="rub96"></optgroup></nobr>
                                                                                                                                            1. 浙江省快乐彩 辽宁快乐12开奖结果定牛 中国福利彩票快3下载 香港49开奖走势图 重庆时时彩计划软件手机版 午夜福利直播app免费下载 吉林快3近500期 香港黄大仙四不像开奖结果 黑龙江福彩时时彩走势图表 扑克21手机版 广西快乐双彩开奖号码和结果 马会开开奖结果 pk10开彩结果查询 篮球比赛腰斩怎么算 新疆时时彩开奖视频 3第出奖号