⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 addpoly.cs

📁 arcims加点的测试程序
💻 CS
字号:
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.DataSources.IMS;
/// <summary>
/// 用于地图面(测试标记A917882716221729)
/// </summary>
public class AddPoly : IMapServerToolAction
{

    public void ServerAction(ToolEventArgs args)
    {
        ESRI.ArcGIS.ADF.Web.UI.WebControls.Map mapctrl = (ESRI.ArcGIS.ADF.Web.UI.WebControls.Map)args.Control;
        PolygonEventArgs peal = (PolygonEventArgs)args;
        System.Drawing.Point[] screen_points = peal.Vectors;

        MapFunctionality mf = (MapFunctionality)mapctrl.GetFunctionality(0);

        ESRI.ArcGIS.ADF.IMS.Carto.MapView mapview = mf.MapView;
        //多边形的点序列
        ESRI.ArcGIS.ADF.Web.Geometry.Point[] pnts1 = new ESRI.ArcGIS.ADF.Web.Geometry.Point[screen_points.Length];

        //转换点坐标
        for (int i = 0; i < screen_points.Length; i++)
        {
            ESRI.ArcGIS.ADF.Web.Geometry.Point pnt = new ESRI.ArcGIS.ADF.Web.Geometry.Point();
            ESRI.ArcGIS.ADF.Web.Geometry.Point adf_map_point =
                ESRI.ArcGIS.ADF.Web.Geometry.Point.ToMapPoint(screen_points[i],
                mapctrl.Extent,
                (int)mf.DisplaySettings.ImageDescriptor.Width,
                (int)mf.DisplaySettings.ImageDescriptor.Height);

            ESRI.ArcGIS.ADF.IMS.Geometry.Point mapPoint = (ESRI.ArcGIS.ADF.IMS.Geometry.Point)ESRI.ArcGIS.ADF.Web.DataSources.IMS.Converter.ToIMSGeometry(adf_map_point);

            pnt.X = mapPoint.X;
            pnt.Y = mapPoint.Y;
            //记录点
            pnts1[i] = pnt;
        }

        //创建多边型类
        ESRI.ArcGIS.ADF.IMS.Geometry.Polygon Poly =
            new ESRI.ArcGIS.ADF.IMS.Geometry.Polygon();
        ESRI.ArcGIS.ADF.IMS.Geometry.Ring ring =
            new ESRI.ArcGIS.ADF.IMS.Geometry.Ring();
        ESRI.ArcGIS.ADF.IMS.Geometry.Hole polyHole =
            new ESRI.ArcGIS.ADF.IMS.Geometry.Hole();
        ESRI.ArcGIS.ADF.IMS.Geometry.Point pt;
        //装载轨迹
        for (int i = 0; i < pnts1.Length; i++)
        {
            pt = new ESRI.ArcGIS.ADF.IMS.Geometry.Point(pnts1[i].X, pnts1[i].Y);
            ring.Points.Add(pt);
            polyHole.Points.Add(pt); 

            ring.Holes.Add(polyHole);
            Poly.Rings.Add(ring);   
            
            mapctrl.Page.Session["polyPoints"] += pnts1[i].X.ToString() + "," + pnts1[i].Y.ToString() + ",";
        }
        

        //保存信息点
        mapctrl.Page.Session["polyPoints"] += "|";

        //创建图层
        string acetateName = "ALayer" + mapview.Layers.Count.ToString();
        //设置渲染
        ESRI.ArcGIS.ADF.IMS.Display.Symbol.SimpleFillSymbol polySymbol =
            new ESRI.ArcGIS.ADF.IMS.Display.Symbol.SimpleFillSymbol();
        polySymbol.Color = System.Drawing.Color.Red;
        polySymbol.BoundaryColor = System.Drawing.Color.Coral;
        polySymbol.FillType = ESRI.ArcGIS.ADF.IMS.Display.Symbol.PolygonFillType.Gray;
        polySymbol.Transparency = 50;
        polySymbol.BoundaryWidth = 2;
        ESRI.ArcGIS.ADF.IMS.Display.AcetateElement.GeometryElement acetatePoly =
            new ESRI.ArcGIS.ADF.IMS.Display.AcetateElement.GeometryElement(
            ESRI.ArcGIS.ADF.IMS.Display.AcetateElement.AcetateUnits.Database, Poly, polySymbol); 
  
        //添加图层
        ESRI.ArcGIS.ADF.IMS.Carto.Layer.AcetateLayer originalLayer =
            new ESRI.ArcGIS.ADF.IMS.Carto.Layer.AcetateLayer(acetateName);
        originalLayer.AcetateElements.Add(acetatePoly);
        mapview.Layers.Add(originalLayer);

        //刷新地图
        mapctrl.Refresh();


    }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -