<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      編程 & 生活 -- 西西吹雪

      開心工作,快樂生活 (原創文章,轉載請注明出處)

      導航

      ArcGis Server開發Web GIS新手體驗(四)

      接(三)

      這一節主要貼代碼算了,通過代碼看一下一些簡單功能的實現。偶快要放假了,靜不下心來寫了,寫得也不好。說不定貼代碼效果更好。

      1、獲取所有圖層

          ESRI.ArcGIS.Server.WebControls.WebMap webmap= Map1.CreateWebMap();
          
      try
          {
           ESRI.ArcGIS.Carto.IMapDescription descr 
      = webmap.MapDescription;   
           ddlLayers.Items.Clear();
           
      int id;
           
      for (int i=0;i<= descr.LayerDescriptions.Count-1;i++)
           {
            id 
      = descr.LayerDescriptions.get_Element(i).ID;
            ddlLayers.Items.Add(id.ToString() 
      + "," + webmap.LayerNameFromID(id));    //ddlLayers是一個DropDownList控件
           }
           
      if (ddlLayers.Items.Count>0)
           {
            ddlLayers.SelectedIndex
      =0;
           } 
                   
          }
          
      finally
          {
           webmap.Dispose();
          }


      2、通過圖層的ID獲取圖層對象

          private IFeatureLayer GetFeatureLayer(int lyid)
        {
         WebMap webmap 
      = Map1.CreateWebMap();
         
      try
         {
          ILayer layer 
      = (webmap.MapServer as IMapServerObjects).get_Layer(webmap.DataFrame,lyid);
          
      if (layer==null)
           
      return null;
          
      else
          {
           
      return (layer as IFeatureLayer);
          }
         }
         
      finally
         {
          webmap.Dispose();
         }
            
        }


      3、新建一個多邊形

        private void Map1_Polygon(object sender, ESRI.ArcGIS.Server.WebControls.PolygonEventArgs args)
        
      {
         
      if (args.ToolName == "newpolygon")
         
      {
          IFeatureLayer flayer 
      = GetCurFeatureLayer();        //獲取當前活動圖層了函數,這里就不貼了,就是調用GetFeatureLayer(int lyid)函數
          if (flayer == nullreturn;
          
          
      if (flayer.FeatureClass.ShapeType != ESRI.ArcGIS.Geometry.esriGeometryType.esriGeometryPolygon) 
          
      {
           
      string sc;
           sc 
      = "<script language=javascript>alert('當前圖層何類型不對!')</script>";
           Page.RegisterClientScriptBlock(
      "ShapeTypeError",sc);
           
      return;
          }


          
      //生成多邊形
          ESRI.ArcGIS.Server.IServerContext context;
          ESRI.ArcGIS.Server.WebControls.WebMap webmap 
      = Map1.CreateWebMap();
          webmap.ManageLifetime(flayer);
          context 
      = webmap.ServerContext;
          ESRI.ArcGIS.Geometry.IPolygon poly 
      = context.CreateObject("esriGeometry.Polygon"as ESRI.ArcGIS.Geometry.IPolygon; //'new ag.PolygonClass();
          webmap.ManageLifetime(poly);
          ESRI.ArcGIS.Geometry.IPoint pt;
          ESRI.ArcGIS.Geometry.IGeometryCollection ringcol 
      = context.CreateObject("esriGeometry.Polygon"as ESRI.ArcGIS.Geometry.IGeometryCollection;// new  PolygonClass();
          webmap.ManageLifetime(ringcol);
          ESRI.ArcGIS.Geometry.IPointCollection ptcol 
      =context.CreateObject("esriGeometry.Ring"as ESRI.ArcGIS.Geometry.IPointCollection;// new RingClass();
          webmap.ManageLifetime(ptcol);
          
      object obj=Type.Missing;
          
      for (int i=0;i<=args.Vectors.Length-1;i++)
          
      {
           pt 
      = webmap.ToMapPoint(args.Vectors[i].X,args.Vectors[i].Y);
           ptcol.AddPoint(pt,
      ref obj,ref obj);
          }

          ringcol.AddGeometry(ptcol 
      as IGeometry,ref obj,ref obj);    
          poly 
      = ringcol as IPolygon;    

          
      //將多邊形寫入到圖層中
          ESRI.ArcGIS.Geodatabase.IFeature feature =  flayer.FeatureClass.CreateFeature();
          feature.Shape 
      = poly as IGeometry;
          feature.Store();
          webmap.Refresh();

          webmap.Dispose();
         }

        }



      4、矩形選擇,獲得選擇集,并在地圖上顯示選中的對象。(這個功能花費了偶一天多的時間。)

        private void Map1_DragRectangle(object sender, ESRI.ArcGIS.Server.WebControls.ToolEventArgs args)
        
      {
         
      string strTool = args.ToolName.ToLower();
         
      if (strTool=="rectsel"
         
      {
          
      //取得當前層
          if (ddlLayers.SelectedValue=="")
           
      return;
          IFeatureLayer flayer 
      = GetCurFeatureLayer(); 
          
      if (flayer == nullreturn;
          
          
      //獲得選擇集
          int t1=Environment.TickCount;
          ESRI.ArcGIS.Server.WebControls.WebMap webmap 
      = Map1.CreateWebMap();
          ESRI.ArcGIS.Server.IServerContext ctx 
      = webmap.ServerContext;
          webmap.ManageLifetime(ctx);
          ESRI.ArcGIS.Geodatabase.IWorkspace ws 
      = (flayer.FeatureClass as ESRI.ArcGIS.Geodatabase.IDataset).Workspace;
          ESRI.ArcGIS.Geometry.IEnvelope env 
      = ctx.CreateObject("esriGeometry.Envelope"as ESRI.ArcGIS.Geometry.IEnvelope;
          webmap.ManageLifetime(ws);
          webmap.ManageLifetime(env);
          IPoint pt 
      = webmap.ToMapPoint(Convert.ToInt32(Request.Params.Get("maxx")),Convert.ToInt32(Request.Params.Get("maxy")));
          env.XMax 
      = pt.X;
          env.YMin 
      = pt.Y;
          pt 
      = webmap.ToMapPoint(Convert.ToInt32(Request.Params.Get("minx")),Convert.ToInt32(Request.Params.Get("miny")));
          env.XMin
      = pt.X;
          env.YMax 
      = pt.Y;    
          ESRI.ArcGIS.Geodatabase.ISpatialFilter filter 
      = ctx.CreateObject("esriGeodatabase.SpatialFilter"as ESRI.ArcGIS.Geodatabase.ISpatialFilter;
          webmap.ManageLifetime(filter);
          filter.SpatialRel 
      = ESRI.ArcGIS.Geodatabase.esriSpatialRelEnum.esriSpatialRelIntersects;
          filter.Geometry 
      = env as ESRI.ArcGIS.Geometry.IGeometry;
          filter.GeometryField 
      = flayer.FeatureClass.ShapeFieldName;
          ESRI.ArcGIS.Geodatabase.ISelectionSet sset 
      = flayer.FeatureClass.Select(filter,ESRI.ArcGIS.Geodatabase.esriSelectionType.esriSelectionTypeSnapshot,ESRI.ArcGIS.Geodatabase.esriSelectionOption.esriSelectionOptionNormal,ws);
         
          
      int t2=Environment.TickCount;
          
      int t3=t2-t1;    //t3是查詢響應的時間,可以用來測試一下性能,呵呵    

          
      //顯示選擇集     
          int id;
          ESRI.ArcGIS.Geodatabase.IEnumIDs ids;
          ids 
      = sset.IDs;
          webmap.ManageLifetime(ids);
          ids.Reset();
          ESRI.ArcGIS.Geodatabase.IFIDSet fidset 
      = ctx.CreateObject("esriGeodatabase.FIDSet"as ESRI.ArcGIS.Geodatabase.IFIDSet;    
          id 
      = ids.Next(); 
          
      while (id>=0)
          
      {
           fidset.Add(id);
           id 
      =ids.Next();
          }

          IMapDescription desc 
      = webmap.MapDescription as IMapDescription;
          webmap.ManageLifetime(desc);
          ILayerDescription ldesc 
      = desc.LayerDescriptions.get_Element(flyid);
          webmap.ManageLifetime(ldesc);
          ldesc.SelectionFeatures 
      = fidset;

          
      //將選擇信息保存在session中
          Session["selection"= sset;
          Session[
      "layerid"= flyid;

          webmap.Refresh();

          webmap.Dispose();
           
         }


        }



      5、刪除選中的對象

        private void DeleteSel()
        
      {
         
      if (Session["layerid"]==nullreturn;
         
      if (Session["selection"== nullreturn;

         
      int layerid = (int)Session["layerid"];
         
      if (layerid == -1return;
         ESRI.ArcGIS.Geodatabase.ISelectionSet sset 
      = Session["selection"as ESRI.ArcGIS.Geodatabase.ISelectionSet;
         
      if (sset == nullreturn;

         WebMap webmap 
      = Map1.CreateWebMap();
         IFeatureLayer layer 
      = GetFeatureLayer(layerid);
         
      if (layer==nullreturn;
         webmap.ManageLifetime(layer);
         webmap.ManageLifetime(sset);
         ESRI.ArcGIS.Geodatabase.IEnumIDs ids 
      = sset.IDs;
         webmap.ManageLifetime(ids);
         ids.Reset();
         
      int id;
         id 
      = ids.Next();
         ESRI.ArcGIS.Geodatabase.IFeature feature;
         ESRI.ArcGIS.Server.IServerContext ctx 
      = webmap.ServerContext;
         webmap.ManageLifetime(ctx);
         
      //將selectionset轉化為featurecursor對象
         ESRI.ArcGIS.Geodatabase.IFeatureCursor fcursor;
         ESRI.ArcGIS.Geodatabase.ICursor cursor;
         sset.Search(
      null,false,out cursor);
         fcursor 
      =  cursor as ESRI.ArcGIS.Geodatabase.IFeatureCursor;
         ESRI.ArcGIS.esriSystem.ISet pDeleteSet 
      = ctx.CreateObject("esriSystem.Set"as ESRI.ArcGIS.esriSystem.Set; 
         webmap.ManageLifetime(pDeleteSet);

         
      //設置ISet對象
         feature = fcursor.NextFeature();
         
      while (feature != null)
         
      {
          pDeleteSet.Add(feature);
          feature 
      = fcursor.NextFeature();
         }


         ESRI.ArcGIS.Geodatabase.IFeatureEdit fedit;
         pDeleteSet.Reset();
         fedit 
      = pDeleteSet.Next() as ESRI.ArcGIS.Geodatabase.IFeatureEdit;
         
      while (fedit != null)
         
      {
          fedit.DeleteSet(pDeleteSet);
          fedit 
      = pDeleteSet.Next() as ESRI.ArcGIS.Geodatabase.IFeatureEdit;
         }


         Session.Remove(
      "layerid");
         Session.Remove(
      "selection");

         webmap.Refresh();

         webmap.Dispose();
        }




       

      posted on 2006-01-18 09:47  西西吹雪  閱讀(4011)  評論(12)    收藏  舉報

      主站蜘蛛池模板: 丰满人妻一区二区三区无码AV| √天堂中文在线最新版| 宜宾县| 五月天中文字幕mv在线| 亚洲日本高清一区二区三区| 天堂资源在线| 亚洲精品漫画一二三区| 国内精品自线在拍| 国产精品自在自线视频| 亚洲精品久久久久国色天香| 视频一区二区三区四区不卡| 四虎影视永久无码精品| 亚洲 制服 丝袜 无码| 国产91精品一区二区麻豆| 337p粉嫩大胆噜噜噜| 国产精品国产片在线观看| 日韩在线成年视频人网站观看| 亚洲人成色99999在线观看| 免费看欧美全黄成人片| 中文字幕人妻精品在线| 亚洲中文字幕久久精品码| 日本高清无卡码一区二区久久| 亚洲午夜无码久久久久小说| 欧美日本激情| 丰满高跟丝袜老熟女久久| 孕交videos小孕妇xx| 女人香蕉久久毛毛片精品| 国内精品伊人久久久久影院对白| 桃花岛亚洲成在人线AV| 成人深夜节目在线观看| 亚洲精品成人片在线观看精品字幕| 国产精品无遮挡又爽又黄| 天天拍夜夜添久久精品大| 高中女无套中出17p| 毛片无遮挡高清免费| 久久精品无码一区二区三区| 另类专区一区二区三区| 乱人伦人妻中文字幕无码久久网 | 国产精品久久久一区二区三区| 无码人妻一区二区三区AV| 久久热这里只有精品99|