默认头像
路人甲
路人甲
  • 注册日期2004-09-02
  • 发帖数3
  • QQ
  • 铜币134枚
  • 威望0点
  • 贡献值0点
  • 银元0个
阅读:1498回复:2

请教:ArcGISServer中如何进行编辑

楼主#
更多 发布于:2006-07-09 21:20

比如 在一个多边形的图层中 新增一个多边形

我的方法是 点击toolbar中一个tool,执行画多边形的客户端代码,然后在map的polygon事件中取得我画的多边形,存如当前的多边形图层,polygon事件响应代码如下:

private void Map1_Polygon(object sender, ESRI.ArcGIS.Server.WebControls.PolygonEventArgs args)
 {
  if (args.ToolName == "newpolygon")
  {
   ESRI.ArcGIS.Server.WebControls.WebMap webmap = Map1.CreateWebMap();
   IFeatureLayer flayer = (webmap.MapServer as IMapServerObjects).get_Layer(webmap.DataFrame,0) as IFeatureLayer;        //获取当前活动图层了函数,这里就不贴了,就是调用GetFeatureLayer(int lyid)函数
   if (flayer == null) return;
   
   if (flayer.FeatureClass.ShapeType != ESRI.ArcGIS.Geometry.esriGeometryType.esriGeometryPolygon)
   {
    string sc;
    sc = "";
    Page.RegisterClientScriptBlock("ShapeTypeError",sc);
    return;
   }
   
   //生成多边形
   ESRI.ArcGIS.Server.IServerContext context;
   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.X,args.Vectors.Y);
    ptcol.AddPoint(pt,ref obj,ref obj);
   }
   ringcol.AddGeometry(ptcol as IGeometry,ref obj,ref obj);    
   poly = ringcol as IPolygon;    
   
   
   //将多边形写入到图层中
   ESRI.ArcGIS.Geodatabase.IDataset dataset=flayer.FeatureClass as IDataset;
   ESRI.ArcGIS.Geodatabase.IWorkspaceEdit edit=dataset.Workspace as IWorkspaceEdit;
   edit.StartEditOperation();
   ESRI.ArcGIS.Geodatabase.IFeature feature =  flayer.FeatureClass.CreateFeature();
   feature.Shape = poly as IGeometry;
   feature.Store();
   edit.StopEditOperation();
   webmap.Refresh();

   webmap.Dispose();

  }
 }

程序在红色处报错,麻烦各位帮忙看看

喜欢0 评分0
默认头像
路人甲
路人甲
  • 注册日期2004-09-02
  • 发帖数3
  • QQ
  • 铜币134枚
  • 威望0点
  • 贡献值0点
  • 银元0个
1楼#
发布于:2006-07-11 09:46
数据必须要用SDE来连接?
举报 回复(0) 喜欢(0)     评分
默认头像
路人甲
路人甲
  • 注册日期2005-01-30
  • 发帖数58
  • QQ
  • 铜币258枚
  • 威望0点
  • 贡献值0点
  • 银元0个
2楼#
发布于:2006-07-11 09:33

ding 看看我.做的,我已经发到上面了.你找找看.

举报 回复(0) 喜欢(0)     评分
默认头像

返回顶部