




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、ArcGIS Engine 二次开发提高篇1缩略图(鹰眼)鹰眼功能是GIS的主要功能之一,当地图范围很大时,它可以很好的为用户指明当前地图的范围。在本小节中我们将学习如何制作这种鹰眼。1.1 添加控件新建一个 C#.Net项目,项目名称为 OverView,将Forml的名字设置为 MainForm ,并添加 ToolbarControl 、两个 MapControl和LicenceControl等四个控件。布局如下图所示。左边的axMapControll用于地图数据显示和操作,右边 axMapControl2用于鹰眼显示。图1界面布局在ToolbarControl加载添加数据按钮和地图浏览的
2、功能按钮,如下图所示,并将ToolbarControl的伙伴控件设为 axMapControl1。图2添加按钮1.2 代码添加及解释鹰眼用来显示主窗体当前视图范围在全景视图中的位置,在ArcMap中使用一个线框在鹰眼视图中标识。当主视图中的视图范围改变时,鹰眼中的线框随之改变, 当拖动鹰眼视图中的红线框时,主视图中的视图范围也随之改变。下面开始实现鹰眼功能,添加、三个引用。首先在axMapControl1中视图范围改变时鹰眼窗体要做出对应的响应,即绘制线框并显示,在 OnExtentUpdated 事件中添加代码如下:private void axMapControl1_OnExtentUpd
3、ated( object sender, e)et项目,项目名称为Buffer ,将Form1的名字设置为 MainForm ,并添加ToolbarControl 、MapControl、TOCControl、LicenceControl 和 Button 等五个控件。并将 ToolbarControl 、TOCControl 的伙伴控件设为 MapControl , Button 控件的 Name属性设定为 btnBuffer , Text属性设定为"缓冲区分析”。控件布局效果如下图所示。图3控件布局效果在ToolbarControl加载添加数据按钮和地图浏览的功能按钮,如下图所示
4、。图4添加按钮1.2.1 代码添加及解释首先添加如下四个命名空间的引用。在使用Geoprocessor工具实现缓冲区分析时,需要首先定义一个Geoprocessor对象,因为命名空间”也包含Geoprocessor类,为了避免混淆,我们使用命名空间来定义Geoprocessor ,然后设置Geoprocessor中的环境参数,这里我们使用默认参数。然后定义一个操作类 Buffer ,并设置 参数,生成缓冲区的参数包含原始图层,缓冲半径和输出路径,最后使用已定义的 Geoprocessor对象执行即可。双击“生成缓存区”按钮,添加代码如下:private void btnBuffer_Click
5、( object sender, EventArgs e)hp)|*.shp" hp" !=("输出路径错误!");return ; et项目,项目名称为OverLay ,将Forml的名字设置为 MainForm,并添加ToolbarControl 、MapControl、TOCControl、LicenceControl 和 Button 等五个控件。并将 ToolbarControl 、TOCControl 的伙伴控件设为MapControl , Button 控件的 Name属性设定为btnIntersect , Text属性设定为"叠
6、置求交"。控件布局效果如下图所示。图5控件布局效果在ToolbarControl加载添加数据按钮和地图浏览的功能按钮,如下图所示图6添加按钮1.2.2 代码添加及解释首先添加如下引用:using与缓冲区分析的实现类似,在使用 Geoprocessor工具实现叠置分析时,需要首先定义一个 Geoprocessor对象,因为命名空间” 也包含Geoprocessor类,为了避免混淆,我们使用命 名空间来定义Geoprocessor ,然后设置Geoprocessor中的环境参数,这里我们使用默认参数。然 后定义一个操作类,这里为 Intersect ,然后设置其操作参数,这里我们仅设置输
7、入的要素,最 后使用已定义的 Geoprocessor对象执行即可。双击“生成缓存区”按钮,添加代码如下:private void btnIntersect_Click( object sender, EventArgs e)hp)|*.shp"="选择第一个要素"hp)|*.shp""选择第二个要素"hp)|*.shp" hp"string strName = (index);Unionet项目,项目名称为 OverLay ,将Form1的名字设置为 MainForm , Text 属性设为"地图编辑”
8、,并添力口ToolbarControl 、MapControl、TOCControl、LicenceControl四个Button、两个 ComboBox两个 Label和一个 GroupBox等控件。将 ToolbarControl 、TOCControl 的伙伴控件设为 MapControl , ToolbarControl 加载添加 数据按钮和地图浏览的功能按钮。控件布局效果如下图所示。图7界面效果控件属性设置如下:表1控件属性设置控件类型Name属性Text属性控件说明Label选择图层:Label编辑任务:ComboBoxcboLayersMapControl中的图层ComboBox
9、cboTasks编辑的方式ButtonbtnRefreshLayers更新图层cboLayers载入图层名称ButtonbtnStartEditing开始编辑开始编辑状态ButtonbtnSave保存保存编辑ButtonbtnStopEditing结束编辑结束编辑状态GroupBox地图编辑控件容器1.3 添加引用和代码ArcEngine中的地图编辑使用 的工作空间进行编辑时,首先使用 StartEditing方法开始编辑状态,IWorkspaceEdit接口来进行编辑状态的管理,在需要对指定IWorkspaceEdit获取该工作空间的数据,然后使用StartEditOperation使用St
10、opEditOperation方法关闭编辑操作,使用方法打开具体编辑的操作,编辑完成后,StopEditing 方法关闭编辑状态,完成编辑。涉及到了比较复杂的鼠标与地在本例中,我们实现了新的点线面要素的创建和移动的功能,图间的交互,这个功能的实现中,IDisplayFeedback是一个十分关键的接口,它具有涉及创建要素,移动要素、编辑节点等31个实现类,能够实现鼠标与地图交互中的事件的追踪,返回新的几何对象。本例的实现,我们首先来添加一个编辑类,将涉及到的编辑的相关方法抽象到这个类中。项目中添加“ Edit ”类。添加如下引用。using定义如下成员变量。orkspace;private b
11、ool misEditing;mWorkspaceEdit = pWorkspaceas IWorkspaceEdit ;if (mWorkspaceEdit = null ) return ;creenDisplay;pNewLineFeedback = mDisplayFeedbackas INewLineFeedback ;creenDisplay;pNewPolygonFeedback = mDisplayFeedbackas INewPolygonFeedback ;creenDisplay;et项目,项目名称为MapRender,将Forml的名字设置为 MainForm,并添加
12、ToolbarControl 、MapControl、TOCControl、LicenceControl 和 Button 等五个控件。并将 ToolbarControl 、TOCControl的伙伴控件设为 MapControl。控件布局效果如下图所示。图8控件布局效果在ToolbarControl加载添加数据按钮和地图浏览的功能按钮,如下图所示。图9工具栏设置效果添加Buttom按钮的属性设置如下:表4控件属性设置控件类 型Name属性Text属性控件说明ButtonbtnSimpIeRenderer简单着色对图层简单着色ButtonbtnCIassBreakRenderer分级着色对图层
13、分级着色ButtonbtnUniqueValueRenderer唯一值着色对图层唯一值着色ButtonbtnSymbolRenderer依比例符号着色对图层依比例符号着色ButtonbtnChartRenderer质量图着色对图层质量图着色ButtonbtnDotDensityRenderer点密度着色对图层点密度着色1.4 代码添加及解释该工程需要添加如下引用:using usingusing usingusing在axMapControll控件中添加图层,如图所示:图10添加初始化图层1.简单着色代码添加添力口 btnSimpieRenderer 按钮的Click事件代码:private
14、void btnSimpIeRenderer_Click (object sender , EventArgs e) IMap pMap =;分级着色代码添加在前面代码的基础上添加如下引用:using using然后添加 btnCIassBreakRenderer 按钮的 Click 事件代码:private void btnCIassBreakRenderer_Click ( object sender , EventArgs e) IGeoFeatureLayer pGeoFeatureL ;ITable pTable ;IClassifyGEN pClassify ;ITableHist
15、ogram pTableHistogram ;IBasicHistogram pHistogram ;object dataFrequency ;object dataValues ;double Classes ; int ClassesCount ;IClassBreaksRenderer pClassBreaksRenderer ;IHsvColor pFromColor ;IHsvColor pToColor ;IAlgorithmicColorRamp pAlgorithmicCR ;IEnumColors pEnumColors ; bool ok;IColor pColor ;I
16、SimpleFillSymbol pSimpleFillS ; int lbreakIndex ;string strPopField = "POP1990"int numDesiredClasses = 5;IMap pMap = ;= 0;pGeoFeatureL = ( IGeoFeatureLayer )(0);ET 中必须使用 IClassifyGEN 这个借口定义的对象才能实现分级。3. 唯一值着色代码添加添加 btnUniqueValueRenderer 按钮的 Click 事件代码:private void btnUniqueValueRenderer_Cl
17、ick ( object sender , EventArgs e) IGeoFeatureLayer m_pGeoFeatureL ;IUniqueValueRenderer pUniqueValueR ;IFillSymbol pFillSymbol ;IColor pNextUniqueColor ;IEnumColors pEnumRam;pITable pTable ;int lfieldNumber ;IRow pNextRow;IRowBuffer pNextRowBuffer ;ICursor pCursor ;IQueryFilter pQueryFilter ; strin
18、g codeValue ;IRandomColorRamp pColorRamp;string strNameField = "State_Name" ;IMap pMap = ;= 0;m_pGeoFeatureL = ( IGeoFeatureLayer )(0);pUniqueValueR = pTable = ( ITable lfieldNumber = (if( lfieldNumbernew UniqueValueRendererClass ();) m_pGeoFeatureL ;strNameField );= -1)" 未能找到字段"
19、 + strNameField );return ;唯一值着色代码添加在前面代码的基础上添加引用using stdole ;然后添加private voidbtnSymbolRenderer 按钮的 Click 事件代码:btnSymbolRenderer_Click ( object sender , EventArgs e)IGeoFeatureLayer pGeoFeatureLayer ;IFeatureLayer pFeatureLayer ;IProportionalSymbolRendererITable pTable ;IQueryFilter pQueryFilter ;IC
20、ursor pCursor ;IFillSymbol pFillSymbol ;pProportionalSymbolR ;ICharacterMarkerSymbol pCharaterMarkerS ;IDataStatisticsIStatisticsResultspDataStatistics ;pStatisticsResult ;= 0;pFontDisp ;IRotationRendererIMap pMap = ;pFeatureLayer = ( pGeoFeatureLayerpRotationRenderer ;IGeoFeatureLayer )(0);= ( IGeo
21、FeatureLayer ) pFeatureLayer ;pTable = ( ITable ) pGeoFeatureLayer ;pQueryFilter"" );new QueryFilterClass ();pCursor = ( pQueryFilter , true );质量图着色代码添加这里以柱状图为例 , 先添加引用如下:然后添加 btnChartRenderer 按钮的 Click 事件代码:private void btnChartRenderer_Click ( object sender , EventArgs e) IGeoFeatureLaye
22、r pGeoFeatureL ;IFeatureLayer pFeatureLayer ;ITable pTable ;ICursor pCursor ;IQueryFilter pQueryFilter ;IRowBuffer pRowBuffer ;int numFields = 2;int fieldIndecies = new int numFields ;int lfieldIndex;double dmaxValue ;bool firstValue;double dfieldValue ;IChartRenderer pChartRenderer ;IRendererFields
23、 pRendererFields ;IFillSymbol pFillSymbol ;IMarkerSymbol pMarkerSymbol ;ISymbolArraypSymbolArray ;IChartSymbolpChartSymbol ;简单着色代码添加 添加 btnDotDensityRenderer 按钮的 Click 事件代码:private void btnDotDensityRenderer_Click ( object sender , EventArgs e) IGeoFeatureLayer pGeoFeatureL ;IDotDensityRendererpDotD
24、ensityRenderer ;IDotDensityFillSymbol pDotDensityFillS;IRendererFields pRendererFields ;ISymbolArray pSymbolArray ;ISimpleMarkerSymbol pSimpleMarkerS ;string strPopField = "POP1990"IMap pMap = ;pGeoFeatureL = ( IGeoFeatureLayer )(0);pDotDensityRenderer = new DotDensityRendererClass (); pRe
25、ndererFields = ( IRendererFields ) pDotDensityRenderer ; / 添加点密度着色的字段名( strPopField , strPopField ); pDotDensityFillS = new DotDensityFillSymbolClass (); / 设置着色符号的大小和颜色= 4;IRgbColor color = new RgbColorClass ();= 0;= 0;= 0;=color ;/ 设置着色符号的背景颜色= 239;= 228;= 190;=color ;pSymbolArray = ( ISymbolArray
26、) pDotDensityFillS ;/ 设置点符号样式 pSimpleMarkerS = new SimpleMarkerSymbolClass ();= ;= 4;= 128;= 128;= 255;=color ;( ISymbol ) pSimpleMarkerS );= pDotDensityFillS;/ 设置一个点代表的值= 200000;/ 创建图例();= (IFeatureRenderer ) pDotDensityRenderer ;null , null );着色的效果如下图所示:图11根据POP1990字段的点密度着色图效果1.5 小结地图专题图制作是GIS 中数据
27、显示和分析的重要环节,涉及到的对象和接口也比较多,上面实例只是简单的实现了五种专题图的显示。读者也可以尝试在当前工程中添加TOCControl 控件,然后在每次专题图生成代码的最后添加如下代码: ) ;();看看 TOCControl 控件中会有什么样的变化,如果读者对二次开发感兴趣,可以自己试着阅读 GIS 二次开发相关书籍,了解与编辑相关的接口和方法,自己实现丰富的着色效果。2 网络分析在 ArcGIS 中,网络是由一组边和接点按照一定的拓扑关系彼此连接而成的,边是具有一定长度和物流的网络要素, 接点是两条或两条以上边的交汇处, 实现两条边之间的物流的转换, 边与接点是网络的两类基本组成要
28、素。 ArcGIS 所涉及的网络,是由一系列要素类别组成的,可以度量并能够用图形形式表达的网络,所以又称为几何网络( Geometric Network )。组成几何网络的各要素被限制存在于网络中,作为网络要素( Network Feature )。 ArcGIS 自动维护几何网络要素之间的基于几何的一致性拓扑关系。 本节中的网络分析包括两个模块, 网络生成和进行网 络分析。本小节中的网络分析是针对网络生成中的数据进行操作的。路径与权重的设置注意文档中的”注意”。2.1 生成几何网络在进行网络分析功能实现之前,我们需要使用 ArcGIS 来创建一个几何网络文件。1) 创建 Geodatabas
29、e 。打开 ArcCatalog ,在“ GIS 设计与开发例子数据 Network ”文件夹下单击右键, 选择“ New” , “ Personal Geodatabase ” , 名称设为“ USA_Highway_Network_GDB” 。2) 创建 Feature Dataset 。 右键单击“ USA_Highway_Network_GDB” , 选择“New” , “ FeatureDataset ”。在弹出窗口设置要素数据集的名字为“ high ”。在弹出的坐标系统设置界面单击“ Import ”按钮,选择文件“”,即将该文件的坐标系统导入到数据集中,如图所示。然后单击“ Ne
30、xt ”,直到 Finish ,完成要素数据集的创建。图 12 创建 Feature Dataset图 13 坐标系统设置3) 添加 FeatureClass 。右键单击要素数据集“ high ” , 选择 “ Import ” , “ FeatureClass( Single )”,在弹出对话框中设置“ Input Features ”为“”,输出要素名称为“ high ”,输 出路径为默认。单击“OK',完成添加。图 14 添加 FeatureClass图 15 输出设置4) 创建几何网络。右击“ high ”数据集,选择“New”,“Geometric Network ”,准备开
31、始生成网络。图 16 创建几何网络进入几何网络生成向导。图 17 几何网络生成向导选择几何网络生成方式,这里选择根据已存在要素创建。图 18 选择几何网络生成方式选择生成几何网络的要素,并设置名称,这里保留默认名称不做修改。图 19 选择生成几何网络的要素选择几何网络中是否保留原要素的属性值,这里选择“Yes”。图 20 选择几何网络属性值选择网络中的边的类型为复杂边( complex edges )。所谓复杂边,就是在生成网络过程中,不会因为节点和边的连接关系而打断该边。 而简单边会因为有中间节点的存在被分割成为多个要 素。图 21 网络中的边的类型设置要素间捕捉半径,这里设为。选择希望被移
32、动的要素类。在对数据进行编辑的过程中,捕捉功能应用减少数据修改的麻烦,但要注意,不正确的捕捉半径设置会导致数据变形。图 22 设置要素间捕捉容差设置网络数据的权重,将Weight Name 设为“ Length ”,“ Type ”设为“ Double ”。图 23 设置网络数据的权重将上一步设置的权重名称与要素类中的字段关联,这里选择LENGTH。图 24 权重字段关联几何网络参数设置完成。点击“ Finish ”即可完成。图 25 几何网络设置信息打开 Catalog 下文件夹,展开后创建的文件如下图所示。图 26 创建几何网络后的文件通过以上步骤生成的几何网络指定了 “ high”要素类
33、中的“ LENGTH字段作为该几何网络的权。执行程序后,在Personal Geodatabase 中的“ high ”要素集中生成了“ high_NET_Junctions ”接点要素类和“ ushigh ”几何网络。2.2 网络分析的实现我们下面动手实现一个简单的最短路径分析。用户通过在MapControl 点击选择路径经过的节点,双击完成节点的选择,然后最短路径会以红色线条显示到 MapControl 中。2.2.1 添加控件新建一个C倾目,项目名称为 Network ,将Forml的名字设置为 MainForm , Text属性设为 “网络分析” 。 并添加、 MapControl 、
34、 TOCControl 、 LicenceControl 三个控件。 并将 TOCControl 的伙伴控件设为 MapControl 。控件布局效果如下图所示。图 27 控件布局效果2.2.2 代码添加及解释添加如下引用。using 添加如下成员变量。/ 几何网络 private IGeometricNetwork mGeometricNetwork;/ 给定点的集合private IPointCollection mPointCollection;/ 获取给定点最近的 Network 元素private IPointToEID mPointToEID;/ 返回结果变量privateIEnu
35、mNetEID mEnumNetEID_Junctions;privateIEnumNetEID mEnumNetEID_Edges;private double mdblPathCost;编写一个自定义函数,用于实现路径分析。在 ArcEngine 中,使用 ITraceFlowSolverGEN接口实现路径分析计算,通过查询接口 INetSolver 获取几何网络的 Network ,使用 INetFlag 获 取路径求解的边( PutEdgeOrigins ) 或点 ( PutJunctionOrigins ) , 最后使用该接口的 FindPath方法执行路径分析。实现代码如下:pri
36、vate void SolvePath( string weightName)/ 创建 ITraceFlowSolverGENITraceFlowSolverGEN pTraceFlowSolverGEN = new TraceFlowSolverClass ();INetSolver pNetSolver = pTraceFlowSolverGEN as INetSolver ;/ 初始化用于路径计算的 Network INetwork pNetWork = ;= pNetWork;/ 获取分析经过的点的个数 int intCount = ;if (intCount < 1) retu
37、rn ;INetFlag pNetFlag;/ 用于存储路径计算得到的边IEdgeFlag pEdgeFlags = new IEdgeFlag intCount;IPoint pEdgePoint = new PointClass ();int intEdgeEID;IPoint pFoundEdgePoint;double dblEdgePercent;/ 用于获取几何网络元素的 UserID, UserClassID,UserSubID INetElements pNetElements = pNetWork as INetElements ;int intEdgeUserClassID
38、;int intEdgeUserID;int intEdgeUserSubID;for ( int i = 0; i < intCount; i+)pNetFlag =new EdgeFlagClass ();/ 获取用户点击点pEdgePoint = (i);/ 获取距离用户点击点最近的边(pEdgePoint,out intEdgeEID, out pFoundEdgePoint, out dblEdgePercent);if (intEdgeEID <= 0) continue ;/ 根据得到的边查询对应的几何网络中的元素UserID, UserClassID,UserSub
39、ID(intEdgeEID, ,out intEdgeUserClassID, out intEdgeUserID, out intEdgeUserSubID);if (intEdgeUserClassID <= 0 | intEdgeUserID <= 0) continue ;= intEdgeUserClassID;= intEdgeUserID;= intEdgeUserSubID;pEdgeFlagsi = pNetFlagas IEdgeFlag ;/ 设置路径求解的边( ref pEdgeFlags);/ 路径计算权重INetSchema pNetSchema = p
40、NetWork as INetSchema;INetWeight pNetWeight = (weightName);if (pNetWeight = null ) return ;/ 设置权重,这里双向的权重设为一致INetSolverWeights pNetSolverWeights = pTraceFlowSolverGEN as INetSolverWeights ;= pNetWeight;= pNetWeight;object arrResults = new object intCount - 1;/ 执行路径计算,out mEnumNetEID_Junctions, out m
41、EnumNetEID_Edges,intCount - 1, ref arrResults);/ 获取路径计算总代价( cost )mdblPathCost = 0;for ( int i = 0; i < intCount - 1; i+)mdblPathCost += (double )arrResultsi;编写自定义函数,实现路径分析结果到几何要素的转换,用于地图的显示。主要通过IEIDHelper 接口完成转换,首先使用该接口获取几何网络和空间参考,然后查询组成路径的几何要素的信息返回到接口 IEnumEIDInfo 中,最后通过 IEnumEIDInfo 接口获取要素的几何要
42、素。代码如下:private IPolyline PathToPolyLine() IPolyline pPolyLine = new PolylineClass ();IGeometryCollection pNewGeometryCollection = pPolyLine as IGeometryCollection ; if (mEnumNetEID_Edges = null ) return null ;IEIDHelper pEIDHelper = new EIDHelperClass ();/ 获取几何网络= mGeometricNetwork;/ 获取地图空间参考ISpatia
43、lReference pSpatialReference = pSpatialReference;=true ;/根据边的ID获取边的信息IEnumEIDInfo pEnumEIDInfo = (mEnumNetEID_Edges);int intCount = ;();IEIDInfo pEIDInfo;IGeometry pGeometry;for ( int i = 0; i < intCount;i+ )pEIDInfo = ();/ 获取边的几何要素 pGeometry = ;(IGeometryCollection )pGeometry); return pPolyLine;
44、下面开始网络分析的实现。首先是网络数据的读取与加载,我们在 MainForm 的 Load 事件 中实现。此处直接加载我们在上一节自己生成的几何网络数据,首先获取工作空间“”,然后获取其中的要素数据集合“ high ”,进而得到其中的几何网络数据“ high_net ”,使用接口IGeometricNetwork 获取。然后使用 IFeatureClassContainer 接口获取几何网络中的要素类,添加到 MapControl 中。值得注意的是,路径分析中, IPointToEID 的源地图和几何网络以及容 差在此完成设置。代码如下:private void MainForm_Load(
45、object sender, EventArgs e)/ 获取几何网络文件路径/ 注意修改此路径为当前存储路径string strPath ="E:GIS设计与开发例子数据'Network'"/ 打开工作空间IWorkspaceFactory pWorkspaceFactory = new AccessWorkspaceFactory ();IFeatureWorkspace pFeatureWorkspace = (strPath, 0) as IFeatureWorkspace ;/ 获取要素数据集/ 注意名称的设置要与上面创建保持一致IFeatureD
46、ataset pFeatureDataset = ( "high" );/ 获取network 集合INetworkCollection pNetWorkCollection = pFeatureDataset as INetworkCollection / 获取network 的数量, 为零时返回int intNetworkCount = ;if (intNetworkCount < 1) return ;/FeatureDataset 可能包含多个network ,我们获取指定的 network/ 注意 network 的名称的设置要与上面创建保持一致 mGeom
47、etricNetwork = ("high_net" );/将Network中的每个要素类作为一个图层加入地图控件IFeatureClassContainer pFeatClsContainer = mGeometricNetwork as IFeatureClassContainer ;/ 获取要素类数量,为零时返回int intFeatClsCount=;if (intFeatClsCount < 1) return ;IFeatureClass pFeatureClass;IFeatureLayer pFeatureLayer;for ( int i = 0;
48、i < intFeatClsCount;i+ )/ 获取要素类 pFeatureClass = (i); pFeatureLayer =new FeatureLayerClass ();= pFeatureClass;= ;/ 加入地图控件0);/ 计算 snap tolerance 为图层最大宽度的 1/100/ 获取图层数量int intLayerCount=IGeoDataset pGeoDataset;IEnvelope pMaxEnvelope= new EnvelopeClass ();for ( int i = 0; i < intLayerCount;i+ )/ 获
49、取图层pFeatureLayer =as IFeatureLayer ;pGeoDataset = pFeatureLayeras IGeoDataset ;/ 通过 Union 获得较大图层范围double dblWidth = ;double dblHeight = ;double dblSnapTol;if (dblHeight < dblWidth)dblSnapTol = dblWidth * ;elsedblSnapTol = dblHeight * ;/ 设置源地图,几何网络以及捕捉容差mPointToEID =new PointToEIDClass ();= mGeometricNetwork;= dblSnapTol;下面添加 MapControl的OnMouseDowrW件,完成用户单击时的响应。用户单击时获取用户 单击的点,并存储到点集中。private void axMapControl1_OnMouseDown( objec
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025-2030中国防辐射服装行业市场发展分析与发展趋势及投资风险研究报告
- 2025-2030中国铟靶行业市场发展趋势与前景展望战略研究报告
- 2025-2030中国金融行业市场深度发展趋势与前景展望战略研究报告
- 2025-2030中国金属切割行业市场发展分析及前景趋势与投资研究报告
- 2025-2030中国醋酸纤维行业发展分析及前景趋势与投资研究报告
- 2025-2030中国轮胎拆装机行业发展分析及前景趋势与投资研究报告
- 2025-2030中国豪华折叠纸盒行业市场发展趋势与前景展望战略研究报告
- 2025-2030中国访问控制设备行业市场发展趋势与前景展望战略研究报告
- 2025-2030中国蔬菜种子行业发展分析及发展趋势与投资前景预测研究报告
- 2025-2030中国自动挤奶系统(AMS)行业市场发展趋势与前景展望战略研究报告
- 大学高数函数试题及答案
- 湖北省武汉市2025届高中毕业生四月调研考试语文试卷及答案(武汉四调)
- 2025年无锡市锡山环保能源集团招聘笔试参考题库含答案解析
- Q∕GDW 12151-2021 采用对接装置的输电线路流动式起重机组塔施工工艺导则
- 《叙事式心理治疗》精品PPT
- 高速铁路知识PPT通用PPT课件
- 铝合金门窗工程监理质量控制图册
- MyPowerS3100系列以太网交换机配置手册V4.0
- 点击下载视力残疾标准和评定方法(马胜生) - 广州市残疾人联合会
- GB_T 1576-2018 工业锅炉水质(高清正版)
- 布草洗涤服务应急预案
评论
0/150
提交评论