arcengine的一些例子实现

打开mxd文件

OpenFileDialog
axMapControl1.LoadMxFile(pFileName);

打开shp文件

         IWorkspaceFactory pWorkspaceFactory = (IFeatureWorkspace)pWorkspaceFactory.OpenFromFile(pFilePath, 0);            
         IFeatureWorkspace pFeatureWorkspace= new ShapefileWorkspaceFactory();
        IFeatureClass pFeatureClass = pFeatureWorkspace.OpenFeatureClass(pFileName);
        pFeatureLayer = new FeatureLayer();
        pFeatureLayer.FeatureClass = pFeatureClass;
        pFeatureLayer.Name = pFeatureLayer.FeatureClass.AliasName;
        //ClearAllData();//删除所有已加载的数据
        axMapControl2.Map.AddLayer(pFeatureLayer);

IFeatureWorkspace 接口用于访问和管理地理数据库中的要素的重要成分 -- 数据集
IFeatureWorkspace.OpenFeatureClass 方法打开 workspace 中任何已存在的要素类
IFeatureClass 用于访问控制要素类行为和属性的成员
IFeatureClass 接口是获取和设置要素类属性的主要接口
IFeatureLayer 接口的第一个属性 FeatureClass(读写,设置或者读取此 layer 的要素类)
把shp放入Shape工作空间——》通过OpenFeatureClass访问要素类——》 实例化FeatureLayer添加FeatureClass和Name 最后AddLayer

打开cad文件

把cad放入CadWorkspaceFactory工作空间——》通过OpenFeatureClass访问要素类——》 实例化FeatureLayer添加FeatureClass和Name 最后AddLayer
IWorkspaceFactory pWorkspaceFactory = new CadWorkspaceFactory();

保存文件

IMapDocument pMapDocument = new MapDocumentClass();
pMapDocument.New(sMxdFileName);
pMapDocument.ReplaceContents(axMapControl1.Map as IMxdContents);
pMapDocument.Save(pMapDocument.UsesRelativePaths, true);

拉框放大

Click事件
pMouseOperate = "ZoomIn"; 和改变鼠标状态
OnMouseDown事件
axMapControl1.TrackRectangle(); 创建橡皮条返回IEnvelope
IActiveView 接口的Extent属性与IEnvelope连接

拉框缩小

拉框范围为中心,缩小倍数为:当前视图范围/拉框范围

漫游

axMapControl1.Pan();

拉框选择

IGeometry geometry = axMapControl1.TrackRectangle();
axMapControl2.Map.SelectByShape(geometry, null, false); Imap接口的SelectByShape方法
formSelection.CurrentMap = axMapControl1.Map; //把地图对象传走

距离量算

NewLineFeedbackClass接口
Start //设置起点,开始动态线绘制
AddPoint //添加当前鼠标点
Display

面积量算

NewPolygonFeedback接口
Display
Start
AddPoint

if (pNewLineFeedback == null)
{
//实例化追踪线对象
pNewLineFeedback = new NewLineFeedbackClass();
pNewLineFeedback.Display = (axMapControl1.Map as IActiveView).ScreenDisplay;
//设置起点,开始动态线绘制
pNewLineFeedback.Start(pPointPt);
dToltalLength = 0;
}
else //如果追踪线对象不为空,则添加当前鼠标点
{
pNewLineFeedback.AddPoint(pPointPt);
}
//pGeometry = m_PointPt;

放大

IEnvelope接口的Expand
和IActiveView接口的Extent

缩小

IEnvelope接口的Expand
和IActiveView接口的Extent

全图显示

axMapControl1.Extent = axMapControl1.FullExtent;

前视图和后视图

axMapControl1.ActiveView.ExtentStack;
IExtentStack接口的
Undo();
Redo();

添加图例

image.png

添加指北针

image.png

添加比例尺

image.png

pGraphicsContainer.AddElement(pElement, 0); //像图中添加元素

image.png

image.png

显示网络的流向

image.png

image.png
image.png

image.png

流向的绘制

image.png

网络追踪分析

image.png

爆管分析的 步骤

image.png

你可能感兴趣的:(arcengine的一些例子实现)