C#窗体使用AE读取shp

13 篇文章 0 订阅
2 篇文章 0 订阅

public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        private void 打开OToolStripMenuItem_Click(object sender, EventArgs e)
        {
            打开file_Click(sender, e);
        }
        private void 关闭CToolStripMenuItem_Click(object sender, EventArgs e)
        {
            关闭file_Click(sender, e);
        }
        private void 关闭file_Click(object sender, EventArgs e)
        {
            this.Close();
        }
        private void 打开file_Click(object sender, EventArgs e)
        {
            openFileDialog1.Title = " 打开对话框,选择文件格式:shp格式,jpg格式或bmp格式!";
            openFileDialog1.Filter = "(*.jpg)|*.jpg|(*.bmp)|*.bmp|(*.shp)|*.shp|(*.mxd)|*.mxd";
            openFileDialog1.ShowDialog();
            int commapos = openFileDialog1.FileName.IndexOf('.');
            string filter = openFileDialog1.FileName.Substring(commapos, openFileDialog1.FileName.Length - commapos);
            string filter1 = filter.ToLower();
            if (filter1 == ".jpg"||filter1==".bmp")
            {
                IRasterLayer prasterlayer;
                prasterlayer = new RasterLayer();
                prasterlayer.CreateFromFilePath(openFileDialog1.FileName);
                axMapControl1.AddLayer(prasterlayer);
                axMapControl1.Refresh();
            }
            if (filter1 == ".shp")
            {
                string fname;
                fname = openFileDialog1.FileName.Substring(Environment.CurrentDirectory.Length, openFileDialog1.FileName.Length - Environment.CurrentDirectory.Length - 4);

                IWorkspaceFactory pwf;
                IFeatureWorkspace pfw;
                IFeatureClass pfc;
                IFeatureLayer play;

                pwf = new ShapefileWorkspaceFactory();
                pfw = pwf.OpenFromFile(Environment.CurrentDirectory, 0) as IFeatureWorkspace;
                pfc = pfw.OpenFeatureClass(fname);
                play = new FeatureLayer();
                play.FeatureClass = pfc;
                axMapControl1.AddLayer(play);
                axMapControl1.Refresh();
            }
           if (filter1 == ".mxd")
            {
                string fname;
                fname=openFileDialog1.FileName;
                if (axMapControl1.CheckMxFile(fname))
                {
                    axMapControl1.LoadMxFile(fname,null,null);
                }
            }
        }
        private void 放大_Click(object sender, EventArgs e)
        {
            axMapControl1.MousePointer =ESRI.ArcGIS.Controls.esriControlsMousePointer.esriPointerZoomIn;
            str = "fangda";
        }
        private void 缩小_Click(object sender, EventArgs e)
        {
            axMapControl1.MousePointer = ESRI.ArcGIS.Controls.esriControlsMousePointer.esriPointerZoomOut;
            str = "suoxiao";
        }
        private void 漫游_Click(object sender, EventArgs e)
        {
            axMapControl1.MousePointer = ESRI.ArcGIS.Controls.esriControlsMousePointer.esriPointerPan;
            str = "manyou";
        }
        private void 显示全图_Click(object sender, EventArgs e)
        {
            axMapControl1.Extent = axMapControl1.FullExtent;
        }
        private void 清空图层_Click(object sender, EventArgs e)
        {
            axMapControl1.ClearLayers();
        }

        private void 拉框放大_Click(object sender, EventArgs e)
        {
            axMapControl1.MousePointer = ESRI.ArcGIS.Controls.esriControlsMousePointer.esriPointerPageZoomIn;
            str = "lakuangfangda";
        }
        private void 拉框缩小_Click(object sender, EventArgs e)
        {
            axMapControl1.MousePointer = ESRI.ArcGIS.Controls.esriControlsMousePointer.esriPointerPageZoomOut;
            str = "lakuangsuoxiao";
        }
        private void 指针_Click(object sender, EventArgs e)
        {
            axMapControl1.MousePointer = ESRI.ArcGIS.Controls.esriControlsMousePointer.esriPointerCrosshair;
            str = "指针";
        }

 

        private void axMapControl1_OnMouseDown(object sender, ESRI.ArcGIS.Controls.IMapControlEvents2_OnMouseDownEvent e)
        {
            switch (str)
            {
                case "fangda":
                    IEnvelope zoomin;
                    zoomin = axMapControl1.Extent;
                    zoomin.Expand(0.5, 0.5, true);
                    axMapControl1.Extent = zoomin;
                    axMapControl1.Refresh();
                    break;
                case "suoxiao":
                    IEnvelope zoomout;
                    zoomout = axMapControl1.Extent;
                    zoomout.Expand(1.5, 1.5, true);
                    axMapControl1.Extent = zoomout;
                    axMapControl1.Refresh();
                    break;
                case "lakuangfangda":
                    axMapControl1.Extent = axMapControl1.TrackRectangle();
                    break;
                case "lakuangsuoxiao":
                    IEnvelope trackExtent, currentExtent, NewIEN = null;
                    currentExtent = axMapControl1.Extent;
                    trackExtent = axMapControl1.TrackRectangle();
                    double dXmin = 0, dYmin = 0, dXmax = 0, dYmax = 0, dHeight = 0, dWidth = 0;
                    dWidth = currentExtent.Width * (currentExtent.Width / trackExtent.Width);
                    dHeight = currentExtent.Height * (currentExtent.Height / trackExtent.Height);
                    dXmin = currentExtent.XMin - ((trackExtent.XMin - currentExtent.XMin) * (currentExtent.Width / trackExtent.Width));
                    dYmin = currentExtent.YMin - ((trackExtent.YMin - currentExtent.YMin) * (currentExtent.Height / trackExtent.Height));
                    dXmax = dXmin + dWidth;
                    dYmax = dYmin + dHeight;
                    NewIEN = new EnvelopeClass();
                    NewIEN.PutCoords(dXmin, dYmin, dXmax, dYmax);
                    axMapControl1.Extent = NewIEN;
                    break;
                case "manyou":
                    axMapControl1.Pan();
                    break;
                case "zhizhen":
                    break;
            }
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            axTOCControl1.SetBuddyControl(axMapControl1);
        }
    }

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值