在好例子网,分享、交流、成长!
您当前所在位置:首页C# 开发实例C#语言基础 → 资源环境管理系统源码下载(ArcGIS)

资源环境管理系统源码下载(ArcGIS)

C#语言基础

下载此实例
  • 开发语言:C#
  • 实例大小:5.46M
  • 下载次数:62
  • 浏览次数:448
  • 发布时间:2015-07-30
  • 实例类别:C#语言基础
  • 发 布 人:冬天的神话
  • 文件格式:.zip
  • 所需积分:2
 相关标签: 系统 管理

实例介绍

【实例简介】

【实例截图】

【核心代码】

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using ESRI.ArcGIS.Carto;
using ESRI.ArcGIS.Display;
using ESRI.ArcGIS.Geometry;
using ESRI.ArcGIS.ADF;
using System.IO;
using ESRI.ArcGIS.Controls;
using ESRI.ArcGIS.SystemUI;

namespace 资源环境管理系统
{
    public partial class Form1 : Form
    {
        #region
       
        private int flagSelect = 0;//选择标记
        private ITOCControl2 m_tocControl=null;//TOC控件
        private IMapControl3 m_mapControl = null;//Map控件
        private IToolbarMenu m_menuLayer = null;//图层菜单控件
     
        #endregion
        /// <summary>
        /// 主窗体构造函数
        /// </summary>
        public Form1()
        {
            InitializeComponent();
        }
        /// <summary>
        /// 主窗体加载事件
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void Form1_Load(object sender, EventArgs e)
        {
            //创建鹰眼窗口
            CreateOverviewSymbol();
           //地图控件对应绑定
            m_tocControl = (ITOCControl2)axTOCControl1.Object;
            m_mapControl = (IMapControl3)axMapControl1.Object;

            //设置关联控件
            m_tocControl.SetBuddyControl(m_mapControl);
            axToolbarControl1.SetBuddyControl(m_mapControl);

          //打开图层属性表
            m_menuLayer = new ToolbarMenuClass();
            m_menuLayer.AddItem(new OpenAttributeTableCmd(), 0, 0);
           

            //设置关联hook
            m_menuLayer.SetHook(m_mapControl);
          

        }
        /// <summary>
        /// 加载地图图层
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void axMapControl1_OnMapReplaced(object sender, ESRI.ArcGIS.Controls.IMapControlEvents2_OnMapReplacedEvent e)
        {
            IMap pMap;//地图接口
            pMap = axMapControl1.Map;//引用地图控件赋值
            int i;
            //循环加载地图图层
            for (i = 0; i <= pMap.LayerCount - 1; i  )
            {
                axMapControl2.Map.AddLayer(pMap.get_Layer(i));
            }
            //设置图层范围
            this.axMapControl2.Extent = this.axMapControl2.FullExtent;
        }
      
        /// <summary>
        /// 创建鹰眼窗口
        /// </summary>
        private void CreateOverviewSymbol()
        {
            //获取IRGBColor接口.
            IRgbColor color = new RgbColorClass();
            //设置颜色属性
            color.RGB = 255;
            //获取线性符号l接口
            ILineSymbol outline = new SimpleLineSymbolClass();
            //设置线性符号属性
            outline.Width = 2;
            outline.Color = color;
            //获取填充符号接口
            ISimpleFillSymbol simpleFillSymbol = new SimpleFillSymbolClass();
            //设置填充符号属性
            simpleFillSymbol.Outline = outline;
            simpleFillSymbol.Style = esriSimpleFillStyle.esriSFSHollow;
          
        }


     
        /// <summary>
        /// 鼠标移动事件
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void axMapControl1_OnMouseMove(object sender, ESRI.ArcGIS.Controls.IMapControlEvents2_OnMouseMoveEvent e)
        {
            toolStripStatusLabel1.Text = "X:"   e.mapX.ToString();//获取地图x坐标
            toolStripStatusLabel2.Text = "Y:"   e.mapY.ToString();//获取地图y坐标
            toolStripStatusLabel3.Text = "地图缩放比例:"   Convert.ToInt32(axMapControl1.FullExtent.Height /
            axMapControl1.Extent.Height * 100)   "%";//获取地图缩放比例

        }
        //打开地图事件
        private void openFileToolStripMenuItem_Click(object sender, EventArgs e)
        {
            OpenFileDialog openFileDialog2 = new OpenFileDialog();//文件选择框
            openFileDialog2.Title = "打开地图文档";//设置标题
            openFileDialog2.Filter = "地图文档 (*.mxd)|*.mxd";//设置过滤条件
            openFileDialog2.ShowDialog();//打开文件选择框
            string sFilePath = openFileDialog2.FileName;//获取选择文件路径
            if (axMapControl1.CheckMxFile(sFilePath))//验证是否地图文档
            {
                axMapControl1.LoadMxFile(sFilePath, 0, Type.Missing);//加载地图文档
            }
            else
            {
                MessageBox.Show(sFilePath   " 格式不正确!");//提示错误
                return;
            }
        }



      /// <summary>
      /// 鼠标按下事件,处理选择事件
      /// </summary>
      /// <param name="sender"></param>
      /// <param name="e"></param>
        private void axMapControl1_OnMouseDown(object sender, IMapControlEvents2_OnMouseDownEvent e)
        { 
            //制定几何接口
            axMapControl1.MousePointer = esriControlsMousePointer.esriPointerCrosshair;
            IGeometry selectGeo = null;
            //判断选择标记
            if (flagSelect != 0)
            {
             //分类出来
                switch (flagSelect)
                {
                    case 1://矩形选择
                        selectGeo=axMapControl1.TrackRectangle ();
                        axMapControl2.Refresh();
                        break;
                    case 2://圆形选择
                        selectGeo = axMapControl1.TrackCircle();
                        axMapControl2.Refresh();
                        break;
                    case 3://线性选择
                        selectGeo = axMapControl1.TrackLine();
                        axMapControl2.Refresh();
                        break;
                    default ://清空
                        flagSelect=0;
                        break;
                }
                if (null != selectGeo)
                {
                    axMapControl1.Map.SelectByShape(selectGeo, null, false);
                    axMapControl1.Refresh(esriViewDrawPhase.esriViewGeoSelection, null, null);
                }

            }

        }
      
        /// <summary>
        /// 矩形标记事件
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void rectangleToolStripMenuItem_Click(object sender, EventArgs e)
        {
            flagSelect = 1;
        }
        /// <summary>
        /// 圆形标记事件
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void circleToolStripMenuItem_Click(object sender, EventArgs e)
        {
            flagSelect = 2;
        }
        /// <summary>
        /// 线性标记事件
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void lineToolStripMenuItem_Click(object sender, EventArgs e)
        {
            flagSelect = 3;
        }

        /// <summary>
        /// 清空事件
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void clearToolStripMenuItem_Click(object sender, EventArgs e)
        {
            //清除选择
            //在这里需要特别注意,在清除选择集前必须做一个刷新,否则在视图上看不到清除的效果
            IActiveView pActiveView = (IActiveView)(axMapControl1.Map);
            pActiveView.PartialRefresh(esriViewDrawPhase.esriViewGeoSelection, axMapControl1.get_Layer(0), null);
            axMapControl1.Map.ClearSelection();
            pActiveView.PartialRefresh(esriViewDrawPhase.esriViewGeoSelection, axMapControl1.get_Layer(0), null);
            axMapControl2.Refresh();
        }

        //地图内容控件右键菜单
        private void axTOCControl1_OnMouseDown(object sender, ITOCControlEvents_OnMouseDownEvent e)
        {
            if (e.button == 1)
            {
                #region "左键点击图例符号,弹出符号选择对话框"
                IBasicMap map = new MapClass();
                ILayer layer = new FeatureLayerClass();
                object other = new object();
                object index = new object();
                esriTOCControlItem item = new esriTOCControlItem();

                //定义点击类别
                axTOCControl1.HitTest(e.x, e.y, ref item, ref map, ref layer, ref other, ref index);
                //查询要素接口
                if (layer == null) return;
                IFeatureLayer featureLayer = layer as IFeatureLayer;
                if (featureLayer == null) return;
                IGeoFeatureLayer geoFeatureLayer = (IGeoFeatureLayer)featureLayer;

                ILegendClass legendClass = new LegendClassClass();
                ISymbol symbol = null;
                if (other is ILegendGroup && (int)index != -1)
                {
                    legendClass = ((ILegendGroup)other).get_Class((int)index);
                    symbol = legendClass.Symbol;
                }
                if (symbol == null) return;

                symbol = GetSymbolByControl(symbol);
                if (symbol == null) return;
                legendClass.Symbol = symbol;
                this.Activate();
                //监听内容改变事件
                axMapControl1.ActiveView.ContentsChanged();
                //刷新展示
                axMapControl1.Refresh(esriViewDrawPhase.esriViewGeography, null, null);
                axMapControl2.Refresh(esriViewDrawPhase.esriViewGeography, null, null);
                axTOCControl1.Update();
                #endregion
            }

            if (e.button == 2)
            {
                esriTOCControlItem item = esriTOCControlItem.esriTOCControlItemNone;
                IBasicMap map = null; ILayer layer = null;
                object other = null; object index = null;

                //定义选择项类别
                m_tocControl.HitTest(e.x, e.y, ref item, ref map, ref layer, ref other, ref index);

                //确保选中
                if (item == esriTOCControlItem.esriTOCControlItemMap)
                    m_tocControl.SelectItem(map, null);
                else
                    m_tocControl.SelectItem(layer, null);

                //设置图层自定义属性		
                m_mapControl.CustomProperty = layer;   
                if (item == esriTOCControlItem.esriTOCControlItemLayer) m_menuLayer.PopupMenu(e.x, e.y, m_tocControl.hWnd);
            }
        }
        /// <summary>
        /// 获取样式符号,展示图层符号配置窗口
        /// </summary>
        /// <param name="symbolType"></param>
        /// <returns></returns>
        private ISymbol GetSymbolByControl(ISymbol symbolType)
        {
            ISymbol symbol = null;
            IStyleGalleryItem styleGalleryItem = null;
            esriSymbologyStyleClass styleClass = esriSymbologyStyleClass.esriStyleClassMarkerSymbols;
            if (symbolType is IMarkerSymbol)
            {
                styleClass = esriSymbologyStyleClass.esriStyleClassMarkerSymbols;
            }
            if (symbolType is ILineSymbol)
            {
                styleClass = esriSymbologyStyleClass.esriStyleClassLineSymbols;
            }
            if (symbolType is IFillSymbol)
            {
                styleClass = esriSymbologyStyleClass.esriStyleClassFillSymbols;
            }
            GetSymbolByControlForm symbolForm = new GetSymbolByControlForm(styleClass);
            symbolForm.ShowDialog();
            styleGalleryItem = symbolForm.m_styleGalleryItem;
            if (styleGalleryItem == null) return null;
            symbol = styleGalleryItem.Item as ISymbol;
            symbolForm.Dispose();
            this.Activate();
            return symbol;
        }

        /// <summary>
        /// 属性选择事件
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void selectByAttributesToolStripMenuItem_Click(object sender, EventArgs e)
        {
            ICommand command = new AttributeQueryCmd();
            command.OnCreate(m_mapControl.Object);
            command.OnClick();
        }

       

        }
    }

    

标签: 系统 管理

实例下载地址

资源环境管理系统源码下载(ArcGIS)

不能下载?内容有错? 点击这里报错 + 投诉 + 提问

好例子网口号:伸出你的我的手 — 分享

网友评论

发表评论

(您的评论需要经过审核才能显示)

查看所有0条评论>>

小贴士

感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。

  • 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
  • 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
  • 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
  • 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。

关于好例子网

本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明

;
报警