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

📄 form1.cs

📁 GIS的C#一个简单实例
💻 CS
📖 第 1 页 / 共 2 页
字号:
			//Set the Buddy
			axToolbarControl1.SetBuddyControl(m_map);
            this.toc.SetBuddyControl(m_map);
			//Create UID's and add new items to the ToolBarControl
			UID uID = new UIDClass();

			uID.Value = "esriControlCommands.ControlsOpenDocCommand";
			axToolbarControl1.AddItem(uID, -1, -1, false, -1, esriCommandStyles.esriCommandStyleIconOnly);

			uID.Value = "esriControlCommands.ControlsMapZoomInTool";
			axToolbarControl1.AddItem(uID, -1, -1, true, -1, esriCommandStyles.esriCommandStyleIconAndText);

			uID.Value = "esriControlCommands.ControlsMapZoomOutTool";
			axToolbarControl1.AddItem(uID, -1, -1, false, -1, esriCommandStyles.esriCommandStyleIconAndText);

			uID.Value = "esriControlCommands.ControlsMapPanTool";
			axToolbarControl1.AddItem(uID, -1, -1, false, -1, esriCommandStyles.esriCommandStyleIconAndText);

			uID.Value = "esriControlCommands.ControlsMapFullExtentCommand";
			axToolbarControl1.AddItem(uID, -1, -1, false, -1, esriCommandStyles.esriCommandStyleIconAndText);

			uID.Value = "esriControlCommands.ControlsSelectFeaturesTool";
			axToolbarControl1.AddItem(uID, -1, -1, true, 20, esriCommandStyles.esriCommandStyleTextOnly);

			uID.Value = "esriControlCommands.ControlsClearSelectionCommand";
			axToolbarControl1.AddItem(uID, -1, -1, false, -1, esriCommandStyles.esriCommandStyleTextOnly);

			InitMapData();
		}

		#region 地图数据初始化	
		
		private void InitMapData()
		{
			IPropertySet pConn;

			try
			{

				IFeatureWorkspace pFeatureWorkspace;

				IFeatureLayer pFeatureLayer;

				pConn = new PropertySetClass();

				pConn.SetProperty("DATABASE",@"D:\LG" ); 

				IWorkspaceFactory pWorkspaceFactory = new ShapefileWorkspaceFactoryClass();

				IWorkspace pWorkspace=pWorkspaceFactory.Open(pConn,0);

				pFeatureWorkspace = (IFeatureWorkspace) pWorkspaceFactory.Open(pConn,0);

				IEnumDatasetName pEnumDSName = pWorkspace.get_DatasetNames(ESRI.ArcGIS.Geodatabase.esriDatasetType.esriDTFeatureClass);

				pEnumDSName.Reset();

				IDatasetName pSdeDSName = pEnumDSName.Next();

				int i = 0;

				while (pSdeDSName != null)
				{
					pFeatureLayer=new FeatureLayerClass();

					pFeatureLayer.FeatureClass=pFeatureWorkspace.OpenFeatureClass(pSdeDSName.Name);

					pFeatureLayer.Name = pFeatureLayer.FeatureClass.AliasName;

					pSdeDSName = pEnumDSName.Next();

					m_map.AddLayer(pFeatureLayer,i);

					map_eye.AddLayer(pFeatureLayer,i);

					IGeoFeatureLayer pGeoFeatureLayer =(IGeoFeatureLayer)pFeatureLayer; 

					IRgbColor  pColor=new RgbColorClass();//颜色接口

					pGeoFeatureLayer.AnnotationProperties.Clear(); 

					IAnnotateLayerPropertiesCollection pAnnoLayerPropsColl = new AnnotateLayerPropertiesCollectionClass();
			
					pAnnoLayerPropsColl = pGeoFeatureLayer.AnnotationProperties; 

					ILabelEngineLayerProperties pLabelEngine = new LabelEngineLayerPropertiesClass() ;

					pLabelEngine.Expression = "[名称]" ;
 
					ITextSymbol  pText = new TextSymbolClass();

					stdole.StdFont pFont = new stdole.StdFontClass();

						pFont.Name = "宋体";

						pFont.Bold = true;

					pText.Font = (stdole.IFontDisp) pFont;	

					pLabelEngine.Symbol = pText;

					pLabelEngine.Symbol.Size = 10;

					IAnnotateLayerProperties pAnnoLayerProps = (IAnnotateLayerProperties) pLabelEngine ; 

					pAnnoLayerPropsColl.Add(pAnnoLayerProps); 

					pGeoFeatureLayer.DisplayAnnotation = true; 

					i++;
				}

				m_map.ActiveView.Extent = m_map.ActiveView.Extent;

				map_eye.ActiveView.Extent = map_eye.ActiveView.Extent;

				m_map.ActiveView.Refresh();

			    toc.SetBuddyControl(m_map);

			}
			catch( System.Exception err)
			{
				MessageBox.Show(this,err.Message.ToString() );
			}
	   
		}
		#endregion

		private void Form1_Closing(object sender, System.ComponentModel.CancelEventArgs e)
		{
			//Release COM objects and shutdown
			ESRI.ArcGIS.Utility.COMSupport.AOUninitialize.Shutdown();
			m_AoInitialize.Shutdown();
		}

        private void m_map_OnMapReplaced(object sender, IMapControlEvents2_OnMapReplacedEvent e)
		{
			esriUnits mapUnits = m_map.MapUnits;

			switch (mapUnits)
			{
				case esriUnits.esriCentimeters:
					sMapUnits = "Centimeters";
					break;
				case esriUnits.esriDecimalDegrees:
					sMapUnits = "Decimal Degrees";
					break;
				case esriUnits.esriDecimeters:
					sMapUnits = "Decimeters";
					break;
				case esriUnits.esriFeet:
					sMapUnits = "Feet";
					break;
				case esriUnits.esriInches:
					sMapUnits = "Inches";
					break;
				case esriUnits.esriKilometers:
					sMapUnits = "Kilometers";
					break;
				case esriUnits.esriMeters:
					sMapUnits = "Meters";
					break;
				case esriUnits.esriMiles:
					sMapUnits = "Miles";
					break;
				case esriUnits.esriMillimeters:
					sMapUnits = "Millimeters";
					break;
				case esriUnits.esriNauticalMiles:
					sMapUnits = "NauticalMiles";
					break;
				case esriUnits.esriPoints:
					sMapUnits = "Points";
					break;
				case esriUnits.esriUnknownUnits:
					sMapUnits = "Unknown";
					break;
				case esriUnits.esriYards:
					sMapUnits = "Yards";
					break;
			}
		}



		private void axToolbarControl1_OnMouseMove(object sender, IToolbarControlEvents_OnMouseMoveEvent e)
		{
			//Determine if the mouse is over an item
			int index = axToolbarControl1.HitTest(e.x, e.y, false);
			if (index != -1)
			{
				//Get a reference to the ToolbarItem interface
				IToolbarItem toolbarItem = axToolbarControl1.GetItem(index);
				//Set statusbar text
				statusBar1.Panels[0].Text = toolbarItem.Command.Message;
			}
			else
			{
				statusBar1.Panels[0].Text = "";
			}
		}

		private void m_map_OnMouseMove(object sender, IMapControlEvents2_OnMouseMoveEvent e)
		{
			statusBar1.Panels[1].Text = e.mapX.ToString(".00") + " " + e.mapY.ToString(".00")+ " " + sMapUnits;
		}

		private void m_map_OnExtentUpdated(object sender, IMapControlEvents2_OnExtentUpdatedEvent e)
		{
			// 得到新范围
			IEnvelope pEnv = new EnvelopeClass();
				
			pEnv = (IEnvelope)e.newEnvelope;

			IGraphicsContainer pGra = map_eye.Map as IGraphicsContainer;

			IActiveView pAv = pGra as IActiveView;

			map_eye.Extent = pEnv;

			//在绘制前,清除map_eye中的任何图形元素

			pGra.DeleteAllElements();

			IRectangleElement pRectangleEle = new RectangleElementClass();

			IElement pEle = pRectangleEle as IElement;

			pEle.Geometry = pEnv;

			//设置鹰眼图中的红线框

			IRgbColor pColor = new RgbColorClass();

			pColor.Red = 255;

			pColor.Green = 0;

			pColor.Blue = 0;

			pColor.Transparency = 255;

			//产生一个线符号对象
			ILineSymbol pOutline = new SimpleLineSymbolClass();

			pOutline.Width = 1.0;

			pOutline.Color = pColor;

			//设置颜色属性
			pColor = new RgbColorClass();

			pColor.Red = 255;

			pColor.Green = 0;

			pColor.Blue = 0;

			pColor.Transparency = 0;

			//设置填充符号的属性

			IFillSymbol pFillSymbol = new SimpleFillSymbolClass();

			pFillSymbol.Color = pColor;

			pFillSymbol.Outline = pOutline;

			IFillShapeElement pFillShapeEle = pEle as IFillShapeElement;

			pFillShapeEle.Symbol = pFillSymbol;

			pGra.AddElement((IElement)pFillShapeEle, 0);

			pAv.PartialRefresh(esriViewDrawPhase.esriViewGraphics, null, null);

		}
		/**//// <summary>
		/// 控制鹰眼地图
		/// </summary>
		/// <param name="layer"></param>
		private void map_eye_OnMouseDown(object sender,IMapControlEvents2_OnMouseDownEvent e)
		{
			IPoint pPt=new PointClass ();

			pPt.PutCoords (e.mapX ,e.mapY );
			
			m_map.CenterAt (pPt );
		}
	}
}

⌨️ 快捷键说明

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