Arcgis server .net(vs2003) 绘制直线, 折线,多边形的方法(webgis)
2006-09-27 18:25
731 查看
1. 绘直线
private void Map1_Line(object sender, LineEventArgs args)
{
if (args.ToolName == "Line")
{
IFeatureLayer flayer = GetFeatureLayer(ddlLayers.SelectedIndex); //获取当前活动图层了函数,就是调用GetFeatureLayer(int lyid)函数
if (flayer == null) return;
if (flayer.FeatureClass.ShapeType != ESRI.ArcGIS.Geometry.esriGeometryType.esriGeometryPolyline)
{
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.IPolyline Polyline = context.CreateObject("esriGeometry.Polyline") as ESRI.ArcGIS.Geometry.IPolyline;
webmap.ManageLifetime(Polyline);
ESRI.ArcGIS.Geometry.IPoint pt;
ESRI.ArcGIS.Geometry.IGeometryCollection ringcol = context.CreateObject("esriGeometry.Polyline") as ESRI.ArcGIS.Geometry.IGeometryCollection;
webmap.ManageLifetime(ringcol);
ESRI.ArcGIS.Geometry.IPointCollection ptcol =context.CreateObject("esriGeometry.Path") as ESRI.ArcGIS.Geometry.IPointCollection;// new PathClass();
webmap.ManageLifetime(ptcol);
object obj=Type.Missing;
pt = webmap.ToMapPoint(args.BeginPoint.X,args.BeginPoint.Y);
ptcol.AddPoint(pt,ref obj,ref obj);
pt = webmap.ToMapPoint(args.EndPoint.X,args.EndPoint.Y);
ptcol.AddPoint(pt,ref obj,ref obj);
ringcol.AddGeometry(ptcol as IGeometry,ref obj,ref obj);
Polyline =ringcol as IPolyline;
//将多直线到图层中
ESRI.ArcGIS.Geodatabase.IFeature feature = flayer.FeatureClass.CreateFeature();
feature.Shape = Polyline as IGeometry;
feature.Store();
webmap.Refresh();
webmap.Dispose();
}
}
2. 绘折线
private void Map1_Polyline(object sender, PolylineEventArgs args)
{
if (args.ToolName == "Polyline")
{
IFeatureLayer flayer = GetFeatureLayer(ddlLayers.SelectedIndex); //获取当前活动图层了函数,就是调用GetFeatureLayer(int lyid)函数
if (flayer == null) return;
if (flayer.FeatureClass.ShapeType != ESRI.ArcGIS.Geometry.esriGeometryType.esriGeometryPolyline)
{
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.IPolyline Polyline = context.CreateObject("esriGeometry.Polyline") as ESRI.ArcGIS.Geometry.IPolyline;
webmap.ManageLifetime(Polyline);
ESRI.ArcGIS.Geometry.IPoint pt;
ESRI.ArcGIS.Geometry.IGeometryCollection ringcol = context.CreateObject("esriGeometry.Polyline") as ESRI.ArcGIS.Geometry.IGeometryCollection;
webmap.ManageLifetime(ringcol);
ESRI.ArcGIS.Geometry.IPointCollection ptcol =context.CreateObject("esriGeometry.Path") as ESRI.ArcGIS.Geometry.IPointCollection;// new PathClass();
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);
Polyline =ringcol as IPolyline;
//将折线保存到图层中
ESRI.ArcGIS.Geodatabase.IFeature feature = flayer.FeatureClass.CreateFeature();
feature.Shape = Polyline as IGeometry;
feature.Store();
webmap.Refresh();
webmap.Dispose();
}
}
3. 绘多边形
private void Map1_Polygon(object sender, PolygonEventArgs args)
{
if (args.ToolName == "Polygon")
{
IFeatureLayer flayer = GetFeatureLayer(ddlLayers.SelectedIndex); //获取当前活动图层了函数,就是调用GetFeatureLayer(int lyid)函数
if (flayer == null) return;
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. GetFeatureLayer(int lyid) 函数
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();
}
}
5. 工作区编辑函数 StartEdit()
private void StartEdit()
{
using (WebMap webMap =Map1.CreateWebMap() )
{
IServerContext sc=webMap.ServerContext;
IMapServer map = sc.ServerObject as IMapServer;
IMapServerObjects mapobj = map as IMapServerObjects;
IMap fgmap = mapobj.get_Map(webMap.DataFrame);
IFeatureLayer fl = fgmap.get_Layer(ddlLayers.SelectedIndex) as IFeatureLayer;
IDataset ds = fl.FeatureClass as IDataset;
IWorkspaceEdit ws = ds.Workspace as IWorkspaceEdit;
ws.StartEditing(true);
ws.StartEditOperation();
}
}
6. 工作区停止编辑数据保存函数SaveEdit();
private void SaveEdit()
{
using (WebMap webMap =Map1.CreateWebMap() )
{
IServerContext sc=webMap.ServerContext;
IMapServer map = sc.ServerObject as IMapServer;
IMapServerObjects mapobj = map as IMapServerObjects;
IMap fgmap = mapobj.get_Map(webMap.DataFrame);
IFeatureLayer fl = fgmap.get_Layer(ddlLayers.SelectedIndex) as IFeatureLayer;
IDataset ds = fl.FeatureClass as IDataset;
IWorkspaceEdit ws = ds.Workspace as IWorkspaceEdit;
ws.StartEditOperation();
ws.StopEditing(true);
}
}
7. 绘图方法初始化设置
private void InitializeComponent()
{
this.Toolbar1.CommandClick += new ESRI.ArcGIS.Server.WebControls.ToolbarCommandClickEventHandler(this.Toolbar1_CommandClick);
this.Map1.Polygon += new ESRI.ArcGIS.Server.WebControls.MapPolygonEventHandler(this.Map1_Polygon);
this.Map1.Polyline += new ESRI.ArcGIS.Server.WebControls.MapPolylineEventHandler(this.Map1_Polyline);
this.Map1.Line += new ESRI.ArcGIS.Server.WebControls.MapLineEventHandler(this.Map1_Line);
this.Load += new System.EventHandler(this.Page_Load);
this.Map1.Point+=new MapPointEventHandler(Map1_Point);
}
private void Map1_Line(object sender, LineEventArgs args)
{
if (args.ToolName == "Line")
{
IFeatureLayer flayer = GetFeatureLayer(ddlLayers.SelectedIndex); //获取当前活动图层了函数,就是调用GetFeatureLayer(int lyid)函数
if (flayer == null) return;
if (flayer.FeatureClass.ShapeType != ESRI.ArcGIS.Geometry.esriGeometryType.esriGeometryPolyline)
{
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.IPolyline Polyline = context.CreateObject("esriGeometry.Polyline") as ESRI.ArcGIS.Geometry.IPolyline;
webmap.ManageLifetime(Polyline);
ESRI.ArcGIS.Geometry.IPoint pt;
ESRI.ArcGIS.Geometry.IGeometryCollection ringcol = context.CreateObject("esriGeometry.Polyline") as ESRI.ArcGIS.Geometry.IGeometryCollection;
webmap.ManageLifetime(ringcol);
ESRI.ArcGIS.Geometry.IPointCollection ptcol =context.CreateObject("esriGeometry.Path") as ESRI.ArcGIS.Geometry.IPointCollection;// new PathClass();
webmap.ManageLifetime(ptcol);
object obj=Type.Missing;
pt = webmap.ToMapPoint(args.BeginPoint.X,args.BeginPoint.Y);
ptcol.AddPoint(pt,ref obj,ref obj);
pt = webmap.ToMapPoint(args.EndPoint.X,args.EndPoint.Y);
ptcol.AddPoint(pt,ref obj,ref obj);
ringcol.AddGeometry(ptcol as IGeometry,ref obj,ref obj);
Polyline =ringcol as IPolyline;
//将多直线到图层中
ESRI.ArcGIS.Geodatabase.IFeature feature = flayer.FeatureClass.CreateFeature();
feature.Shape = Polyline as IGeometry;
feature.Store();
webmap.Refresh();
webmap.Dispose();
}
}
2. 绘折线
private void Map1_Polyline(object sender, PolylineEventArgs args)
{
if (args.ToolName == "Polyline")
{
IFeatureLayer flayer = GetFeatureLayer(ddlLayers.SelectedIndex); //获取当前活动图层了函数,就是调用GetFeatureLayer(int lyid)函数
if (flayer == null) return;
if (flayer.FeatureClass.ShapeType != ESRI.ArcGIS.Geometry.esriGeometryType.esriGeometryPolyline)
{
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.IPolyline Polyline = context.CreateObject("esriGeometry.Polyline") as ESRI.ArcGIS.Geometry.IPolyline;
webmap.ManageLifetime(Polyline);
ESRI.ArcGIS.Geometry.IPoint pt;
ESRI.ArcGIS.Geometry.IGeometryCollection ringcol = context.CreateObject("esriGeometry.Polyline") as ESRI.ArcGIS.Geometry.IGeometryCollection;
webmap.ManageLifetime(ringcol);
ESRI.ArcGIS.Geometry.IPointCollection ptcol =context.CreateObject("esriGeometry.Path") as ESRI.ArcGIS.Geometry.IPointCollection;// new PathClass();
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);
Polyline =ringcol as IPolyline;
//将折线保存到图层中
ESRI.ArcGIS.Geodatabase.IFeature feature = flayer.FeatureClass.CreateFeature();
feature.Shape = Polyline as IGeometry;
feature.Store();
webmap.Refresh();
webmap.Dispose();
}
}
3. 绘多边形
private void Map1_Polygon(object sender, PolygonEventArgs args)
{
if (args.ToolName == "Polygon")
{
IFeatureLayer flayer = GetFeatureLayer(ddlLayers.SelectedIndex); //获取当前活动图层了函数,就是调用GetFeatureLayer(int lyid)函数
if (flayer == null) return;
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. GetFeatureLayer(int lyid) 函数
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();
}
}
5. 工作区编辑函数 StartEdit()
private void StartEdit()
{
using (WebMap webMap =Map1.CreateWebMap() )
{
IServerContext sc=webMap.ServerContext;
IMapServer map = sc.ServerObject as IMapServer;
IMapServerObjects mapobj = map as IMapServerObjects;
IMap fgmap = mapobj.get_Map(webMap.DataFrame);
IFeatureLayer fl = fgmap.get_Layer(ddlLayers.SelectedIndex) as IFeatureLayer;
IDataset ds = fl.FeatureClass as IDataset;
IWorkspaceEdit ws = ds.Workspace as IWorkspaceEdit;
ws.StartEditing(true);
ws.StartEditOperation();
}
}
6. 工作区停止编辑数据保存函数SaveEdit();
private void SaveEdit()
{
using (WebMap webMap =Map1.CreateWebMap() )
{
IServerContext sc=webMap.ServerContext;
IMapServer map = sc.ServerObject as IMapServer;
IMapServerObjects mapobj = map as IMapServerObjects;
IMap fgmap = mapobj.get_Map(webMap.DataFrame);
IFeatureLayer fl = fgmap.get_Layer(ddlLayers.SelectedIndex) as IFeatureLayer;
IDataset ds = fl.FeatureClass as IDataset;
IWorkspaceEdit ws = ds.Workspace as IWorkspaceEdit;
ws.StartEditOperation();
ws.StopEditing(true);
}
}
7. 绘图方法初始化设置
private void InitializeComponent()
{
this.Toolbar1.CommandClick += new ESRI.ArcGIS.Server.WebControls.ToolbarCommandClickEventHandler(this.Toolbar1_CommandClick);
this.Map1.Polygon += new ESRI.ArcGIS.Server.WebControls.MapPolygonEventHandler(this.Map1_Polygon);
this.Map1.Polyline += new ESRI.ArcGIS.Server.WebControls.MapPolylineEventHandler(this.Map1_Polyline);
this.Map1.Line += new ESRI.ArcGIS.Server.WebControls.MapLineEventHandler(this.Map1_Line);
this.Load += new System.EventHandler(this.Page_Load);
this.Map1.Point+=new MapPointEventHandler(Map1_Point);
}
相关文章推荐
- Arcgis for js开发之直线、圆、箭头、多边形、集结地等绘制方法
- Arcgis for js开发之直线、圆、箭头、多边形、集结地等绘制方法
- Arcgis Server .NET ADF 异步刷新方法(非ADF控件)
- ArcGIS Server .Net Web ADF体系结构
- 将Asp.net从VS2003以及VS2002工程转换为VS2005工程的简单而又行之有效的方法
- asp.net页面间传值的几种方法 表单提交 传送页面代码 复制代码 <html xmlns="http://www.w3.org/1999/xhtml" > <head runat="server
- navicat连接oracle数据库ORA-28547:connection to server failed, probable Oracle Net admin error错误,解决方法
- 3种方法快速制作tpk文件(http://blog.csdn.net/arcgis_mobile/article/details/8048549)
- ASP.net中的Server.UrlEncode方法和ASP中的Server.URLEncode
- ArcGIS 10 Server Manager:配置ASP.NET平台时遇到的“访问IIS元数据库失败”
- asp.net实现C#绘制太极图的方法
- Ubuntu12.04 安装Oracle10g报错解决方法【ins_net_server.mk】
- asp.net实现C#绘制太极图的方法
- Asp.Net : runat="server" 的form 提交到其他页面的方法
- ArcGIS Server .net Web ADF 体系结构
- asp.net 中server对象的Transfer方法使用[原创]
- 将Asp.net从VS2003以及VS2002工程转换为VS2005工程的简单而又行之有效的方法
- 在ASP.NET中用JS如何调用Server端方法?
- 关于在MFC中实用在基于对话框窗口上面绘制折线的实现方法
- ArcIMS 和 ArcGIS Server for .net 9.2版本联合开发