您的位置:首页 > Web前端

ArcGIS Server 9.2利用AE中的对象新增feature

2012-11-09 11:14 47 查看
9.2如果打上sp5(ArcGISServerDotNet92sp5.msp)补丁后,利用控件EditorTask也可以对要素进行编辑;但现在我们要自定义一个新增按钮,类似于ToolBarItem,单击该按钮后就可以在地图上任意位置新增一条新的记录,然后弹出对话框编辑该Feature的其它属性。当然我们得借助于AE中的对象来处理。
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using ESRI.ArcGIS.ADF.Web.UI.WebControls.Tools;
using ESRI.ArcGIS.ADF.Web.UI.WebControls;
using ESRI.ArcGIS.ADF.Web.Geometry;
using ESRI.ArcGIS.Geodatabase;
using ESRI.ArcGIS.Carto;
using ESRI.ArcGIS.ADF.ArcGISServer.Editor.Tools;
using ESRI.ArcGIS.ADF.ArcGISServer.Editor;
using ESRI.ArcGIS.Server;
using ESRI.ArcGIS.ADF.Web.DataSources.ArcGISServer;
using ESRI.ArcGIS.Geometry;

/// <summary>
/// AppendPointTool 的摘要说明
/// </summary>
public class AppendPointTool : IMapServerToolAction
{
public AppendFenceTool()
{
//
// TODO: 在此处添加构造函数逻辑
//
}

#region IMapServerToolAction 成员

void IMapServerToolAction.ServerAction(ESRI.ArcGIS.ADF.Web.UI.WebControls.ToolEventArgs args)
{
PointEventArgs pArgs = (PointEventArgs)args;
ESRI.ArcGIS.ADF.Web.Geometry.Point hitPoint = CoordinatesSystem.ScreenToMap(pArgs.ScreenPoint.X, pArgs.ScreenPoint.Y); //需要自己修改
MapResourceLocal mr = MapResourceDecorator.Instance.GetResource<MapResourceLocal>("Business"); //需要修改成对应的MapResource
IServerContext sc = mr.ServerContextInfo.ServerContext;
ESRI.ArcGIS.Carto.IMapServer mapServer = (ESRI.ArcGIS.Carto.IMapServer)sc.ServerObject;
IMapServerObjects pMapServerObjs = mapServer as IMapServerObjects;
IMap pMap = pMapServerObjs.get_Map(mapServer.DefaultMapName);

ILayer editLayer = pMap.get_Layer(0); //得到指定的图层
IFeatureLayer featureLayer = editLayer as FeatureLayer;

IFeatureClass featureClass = featureLayer.FeatureClass;
IFeature feature = featureClass.CreateFeature();
ESRI.ArcGIS.ADF.Web.Geometry.Point p = new ESRI.ArcGIS.ADF.Web.Geometry.Point(hitPoint.X, hitPoint.Y);

p.X = hitPoint.X;
p.Y = hitPoint.Y;
IPoint comPoint = (IPoint)ESRI.ArcGIS.ADF.Web.DataSources.ArcGISServer.Converter.ToIGeometry(p, sc);

feature.set_Value(1, "fence"); //修改第1个字段的值
feature.Shape = (IGeometry)comPoint;
feature.Store();
sc.ReleaseContext();
//刷新Resource
}

#endregion
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: