Arcgis Engine开发总结集锦.doc_第1页
Arcgis Engine开发总结集锦.doc_第2页
Arcgis Engine开发总结集锦.doc_第3页
Arcgis Engine开发总结集锦.doc_第4页
Arcgis Engine开发总结集锦.doc_第5页
已阅读5页,还剩123页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1. 目录1.目录12.用ArcEngine的工具条添加图层要素23.ArcEngine中对Feature的编辑54.Feature的概念75.如何实现经度纬度到平面坐标的相互转换?(转载)76.ArcEngine中使用上下左右键移动地图功能的实现97.缓冲区的创建118.C#制作鹰眼全过程(引自ESRI中国社区)139.ArcEngine中拓扑的使用- -1510.为什么使用接口编程转载1711.ArcEngine中闪烁目标2112.创建多个ArcSDE实例2313.空间查询与空间分析功能2514.AO中的空间关系2615.ArcGIS Engine 中的相交分析的实现2916.GIS基本概念集锦3017.AE开发中矢量图层叠加求交分析3418.矢量数据分析3919.GIS空间信息基本分析方法3920.如何判断图形间的逻辑运算4221.AE中2种方式overlay4322.ArcEngine中实现捕捉功能4723.在LAYER(i)上添加缓冲区6924.C#编码标准编码习惯6925.基于AE删除选择的要素- -8626.基于AO/AE获取要素信息8727.ArcEngine中拓扑的使用- -9028.ArcEngine 渲染的使用9329.利用ArcEngin进行空间分析的简单应用- -10030.IfeatureSelection:SelectFeatures方法介绍10531.常用数据入sde库的代码10732.ArcEngine开发感想11233.Geometry 对象浅析11434.AE开发中的一些基本方法(1)数据连接1252. 用ArcEngine的工具条添加图层要素发现AE比起其它的组件GIS来要好用的多但也有一些bt的地方比如说AE没有提供图层编辑的工具条但最近因为程序里要添加图元必须得开发图层编辑的功能于是去找了找资料发现自带的帮助里有一个MapEditing的示例但是从AO的示例改造而来需要从按钮写起想想如果这样搞的话倒不如直接用AO算了一直想省点事在AE自带的工具条上做点文章其实AE中也有一组相似的编辑按钮,是用于编辑Graphics的自然就有了一个想法:能不能先生成一个Graphic,然后将其加载进来代码分享private void Form1_Load(object sender, System.EventArgs e) /清空图层 this.axMapControl1.Map.ClearLayers(); /加载服务器SDE地图信息ESRI.ArcGIS.esriSystem.IpropertySet Proset = new ESRI.ArcGIS.esriSystem.PropertySetClass();/属性集 ESRI.ArcGIS.Geodatabase.IWorkspaceFactory Fact;/工作空间仓库 ESRI.ArcGIS.Geodatabase.IWorkspace Workspace;/工作空间 Proset.SetProperty(Server,服务器名);/服务器名 Proset.SetProperty(Instance,端口);/实例化端口 Proset.SetProperty(user,用户名);/SDE用户名 Proset.SetProperty(password,密码);/密码 Proset.SetProperty(version,sde.DEFAULT);/连接版本Fact = new ESRI.ArcGIS.DataSourcesGDB.SdeWorkspaceFactoryClass();/实例化为SDE工作空间仓库Workspace = Fact.Open(Proset,Int32.Parse(this.Handle.ToString();/填入属性集 ESRI.ArcGIS.Geodatabase.IFeatureWorkspace FeatureWorkspace;FeatureWorkspace = Workspace as ESRI.ArcGIS.Geodatabase.IFeatureWorkspace;/传递给Feature工作空间 ESRI.ArcGIS.Geodatabase.IFeatureClass FeatureClass; FeatureClass = FeatureWorkspace.OpenFeatureClass(SDE.BBBB);/填充所需Feature集合 ESRI.ArcGIS.Carto.FeatureLayer FLayer = new ESRI.ArcGIS.Carto.FeatureLayerClass(); FLayer.FeatureClass = FeatureClass;/将Feature加载到图层 axMapControl1.Map.AddLayer(FLayer);/加载图层 axMapControl1.Update();/更新空白区域 axMapControl1.Refresh();/刷新地图视窗private void Form1_Closed(object sender, System.EventArgs e) ESRI.ArcGIS.esriSystem.IAoInitialize aoi = new ESRI.ArcGIS.esriSystem.AoInitializeClass(); aoi.Shutdown();private void button1_Click(object sender, System.EventArgs e) IGraphicsContainerSelect GraphicsContainerSelect = (IGraphicsContainerSelect)axMapControl1.Map; if(GraphicsContainerSelect.ElementSelectionCount =0)/判断是否选中图斑 MessageBox.Show(请选中欲导入图斑!); return; IWorkspaceEdit WorkspaceEdit; IFeatureLayer FeatureLayer; IFeatureClass FeatureClass; IFeature Feature; IDataset Dataset; FeatureLayer = (IFeatureLayer)this.axMapControl1.get_Layer(0);/选中导入图层 FeatureClass = FeatureLayer.FeatureClass;/该图层的feature集 Dataset = (IDataset)FeatureClass;/该图层的数据集 WorkspaceEdit = (IWorkspaceEdit)Dataset.Workspace;/关联到编辑空间 WorkspaceEdit.StartEditing(true);/使之可编辑 WorkspaceEdit.StartEditOperation();/开始编辑 Feature = FeatureClass.CreateFeature();/创建空feature Feature.Shape = GraphicsContainerSelect.SelectedElement(0).Geometry;/仅导入最新选中图斑,即多选时只有一个可以导入 Feature.Store(); WorkspaceEdit.StopEditOperation(); WorkspaceEdit.StopEditing(true);/结束编辑并保存 IGraphicsContainer GraphicsContainer = (IGraphicsContainer)GraphicsContainerSelect; GraphicsContainer.DeleteAllElements();/删除graphic图层 axMapControl1.ActiveView.Refresh();/刷新当前视图 MessageBox.Show(ok);3. ArcEngine中对Feature的编辑对Feature的编辑分为以下几个部分1.新建2.修改3.删除涉及到的接口有以下几个IWorkspaceEditIFeatureClassIFeatureCursorIFeature其中IWorkspaceEdit用于启动编辑 开始编辑操作 结束编辑操作 结束编辑IFeatureClass 是数据的所在地IFeatureCursor 是一个游标 提供访问数据的接口和修改数据的接口IFeature 是对象的代表 我们要编辑的目标编辑的过程如下:1.添加一个Feature/假设space是一个IWorkspaceEdit/参数表示是否需要使用Undo/Redo功能,该功能的粒度是EditOperator.spaceEdit.StartEditing(false);spaceEdit.StartEditOperator();/添加一个FeatureIFeature newFea=feaClass.createFeature();/为Feature 添加属性 设置图形newFea.Store();/保存属性和图形spaceEdit.StopEditOperator();/结束编辑操作/结束编辑过程/参数表示是否保存编辑spaceEdit.StopEditing(true);2.添加多个Feature 添加多个Feature也可以向上面一样 使用多次就可以了 当时也可以使用IFeatureCursor来添加数据3.修改Feature 添加Feature中的修改属性和图形部分就是 每次修改后一定要调用Store方法 这样变化才可以保存下来4.删除 IFeature 有一个方法Delete 可以用于删除 当时经过测试发现对Shapefile 会抛出异常来。 IFeatureCuror有一个DeleteFeature方法 可以用来删除当前的Feature ,经测试 对所有的数据源类型都可以使用。 注意事项 1.不能设置Feature的OID 2.不能设置Feature的Area 3.不能设置Feature的Lenght 4.不能设置Feature的Shape字段,需要调用单独的方法来给Feature关联几何图形。4. Feature的概念 Feature是二次开发中最常用的对象,feature是featureclass中一个记录,从object中派生出来的,因此也具有属性和方法,object又是从row中派生的,所以featureclass其实一张表,featured就是表中的一条记录,feature可以保存空间数据对象,要素中的几何型体对象定义了要素的类型,它可以保存的几何型体对象有点、点集、多边形、多义线。这些都是些简单的要素对象,在有些情况下要素还可以参与拓扑、网络运算。Feature相关接口 Feature有派生出很多类,如:networkfeature、rastercatalogfeature、coverageannotationfeature、annotationfeature、dimensionfeature。feature的主要接口是Ifeature,其中的Extent用来返回要素对象的包络线,显示要素的空间范围;Featuretype返回要素的类型;Shape返回要素的几何型体对象;ShapeCopy得到几何型体对象的一个拷贝。IfeatureBuffer中的Shape得到缓冲要素的几何型体对象IfeatureEdit中MoveSet、RotateSet、DeleteSet分别是移动、旋转、删除一个或者是多个要素组成的要素集上。Split主要是用来分割几何型体的,通过点分割线,通过多义线分割多边形,分割后旧的被删除,新的要素自动产生。因为每个要素都有对应的属性,要素改变了,其对应的属性也相应的要改变。Splitattributes就是用来分割要素属性字段中的值。该方法可以在Split方法执行后自动执行。IfeatureDraw中的InvalidArea属性得到一个绘画的区域。Draw在显示设备上绘制要素IfeatureChanges中OriginalShape得到要素的最初几何类型,ShapeChanged指示要素的几何类型是否改变。IfeatureSimplify中SimplifyGeometry按照该元素的拓扑规则进行拓扑一致5. 如何实现经度纬度到平面坐标的相互转换?(转载)分类:WebGIS网络地理信息系统研究现在好多人在使用ArcObject的时候都可能需要作经纬度和平面坐标的相互转换。由于经纬度是球面坐标,平面坐标是X-Y的笛卡尔坐标系统,所以这是一个看起来比较难的问题。 好多人一上来就搬出地图学、地图投影学或者测绘学中的投影公式(如高斯投影 或 墨卡托投影),又是基准坐标又是角度的搞的人头都大了。 实际上要想实现这个功能非常easy。 ARC Engine中的IPoint就可以进行投影和反投影运算了。投影过程(C#):/flatref 投影的坐标系统,这里的54013是世界投影,世界投影所有经纬度都可以转换为平面坐标,但是由于投影面积大失真也会比较大(相当于把整个地球劈成一片片的,然后拉伸最后贴到平面上,失真当然大了)。当然也可以选择精度更高的平面如:esriSRProjCS_Beijing1954GK_23N 对应数值21483仅仅把北京附近的地球平面拉伸铺在平面上,由于投影面积变小,所以投影经度提高。但是由于面积变小,所以有些经度纬度不能转换,比如所美国的精度纬度用北京投影就投不了。 flatref = pfactory.CreateProjectedCoordinateSystem(54013);/没什么说的,标准大地经纬度,可以将X-Y逆投影为经度和纬度earthref = pfactory.CreateGeographicCoordinateSystem(int)esriSRGeoCSType.esriSRGeoCS_NAD1983); / 将经纬度点转换为平面坐标。 private IPoint GetProject(double x, double y) IPoint pt = new PointClass(); pt.PutCoords(x, y); IGeometry geo = (IGeometry)pt; geo.SpatialReference = earthref; geo.Project(flatref); return pt; / 将平面坐标转换为经纬度。 private IPoint GetGeo(double x, double y) IPoint pt = new PointClass(); pt.PutCoords(x, y); IGeometry geo = (IGeometry)pt; geo.SpatialReference = flatref; geo.Project(earthref); double xx = pt.X; return pt; 实际上IPoint的投影和任何地图都没什么大关系,完全可以不用地图,直接调用IPoint进行投影的转换 6. ArcEngine中使用上下左右键移动地图功能的实现/闪烁目标 public static void FlashFeature(AxMapControl mapControl,IFeature iFeature, IMap iMap) IActiveView iActiveView = iMap as IActiveView; if (iActiveView != null) iActiveView.ScreenDisplay.StartDrawing(0, (short)esriScreenCache.esriNoScreenCache); /根据几何类型调用不同的过程 switch (iFeature.Shape.GeometryType) case esriGeometryType.esriGeometryPolyline: FlashLine(mapControl, iActiveView.ScreenDisplay, iFeature.Shape); break; case esriGeometryType.esriGeometryPolygon: FlashPolygon(mapControl, iActiveView.ScreenDisplay, iFeature.Shape); break; case esriGeometryType.esriGeometryPoint: FlashPoint(mapControl, iActiveView.ScreenDisplay, iFeature.Shape); break; default: break; iActiveView.ScreenDisplay.FinishDrawing(); /闪烁线 static void FlashLine(AxMapControl mapControl,IScreenDisplay iScreenDisplay,IGeometry iGeometry) ISimpleLineSymbol iLineSymbol; ISymbol iSymbol; IRgbColor iRgbColor; iLineSymbol = new SimpleLineSymbol(); iLineSymbol.Width = 4; iRgbColor = new RgbColor(); iRgbColor.Red = 255; iLineSymbol.Color = iRgbColor; iSymbol = (ISymbol)iLineSymbol; iSymbol.ROP2 = esriRasterOpCode.esriROPNotXOrPen; mapControl.FlashShape(iGeometry, 3, 200, iSymbol); /闪烁面 static void FlashPolygon(AxMapControl mapControl, IScreenDisplay iScreenDisplay, IGeometry iGeometry) ISimpleFillSymbol iFillSymbol; ISymbol iSymbol; IRgbColor iRgbColor; iFillSymbol = new SimpleFillSymbol(); iFillSymbol.Style = esriSimpleFillStyle.esriSFSSolid; iFillSymbol.Outline.Width = 12; iRgbColor = new RgbColor(); iRgbColor.RGB = System.Drawing.Color.FromArgb(100, 180, 180).ToArgb(); iFillSymbol.Color = iRgbColor; iSymbol = (ISymbol)iFillSymbol; iSymbol.ROP2 = esriRasterOpCode.esriROPNotXOrPen; iScreenDisplay.SetSymbol(iSymbol); mapControl.FlashShape(iGeometry, 3, 200, iSymbol); /闪烁点 static void FlashPoint(AxMapControl mapControl, IScreenDisplay iScreenDisplay, IGeometry iGeometry) ISimpleMarkerSymbol iMarkerSymbol; ISymbol iSymbol; IRgbColor iRgbColor; iMarkerSymbol = new SimpleMarkerSymbol(); iMarkerSymbol.Style = esriSimpleMarkerStyle.esriSMSCircle; iRgbColor = new RgbColor(); iRgbColor.RGB = System.Drawing.Color.FromArgb(0, 0, 0).ToArgb(); iMarkerSymbol.Color = iRgbColor; iSymbol = (ISymbol)iMarkerSymbol; iSymbol.ROP2 = esriRasterOpCode.esriROPNotXOrPen; mapControl.FlashShape(iGeometry, 3, 200, iSymbol); 7. 缓冲区的创建 蓝蓝的小志 发表于 2005-6-5 10:07:08 本文以面图层为例,并且把创建的缓冲区就存储在面图层中,当然也可以把创建的缓冲区另存为一个新的图层。程序运行环境(.NETAO) 代码如下:Private Sub ITopologicalOperator_Buffer(ByVal pFeatLyr As ESRI.ArcGIS.Carto.IFeatureLayer, ByVal distance As Double, Optional ByVal pFeatClass As ESRI.ArcGIS.Geodatabase.IFeatureClass = Nothing)pFeatLyr 为面图层distance缓冲距离 Dim pFeatureClass As ESRI.ArcGIS.Geodatabase.IFeatureClass Dim pTopoOper As ESRI.ArcGIS.Geometry.ITopologicalOperator Dim pBufferPoly As ESRI.ArcGIS.Geometry.IPolygon Dim pFeatCursor As ESRI.ArcGIS.Geodatabase.IFeatureCursor Dim pFeature As ESRI.ArcGIS.Geodatabase.IFeature Try pFeatureClass = pFeatLyr.FeatureClass pFeatCursor = pFeatureClass.Search(Nothing, False) pFeature = pFeatCursor.NextFeature Do If Not (pFeature Is Nothing) Then pTopoOper = pFeature.Shape() pBufferPoly = pTopoOper.Buffer(distance) pFeature = pFeatClass.CreateFeature pFeature.Shape = pBufferPoly pFeature.Store() pFeature = pFeatCursor.NextFeature() End If Loop Until (pFeature Is Nothing) Catch MsgBox(Err.Description, MsgBoxStyle.OKOnly, 错误提示) pFeature = Nothing pFeatCursor = Nothing pBufferPoly = Nothing pTopoOper = Nothing pFeatureClass = Nothing pFeatLyr = Nothing End Try pFeature = Nothing pFeatCursor = Nothing pBufferPoly = Nothing pTopoOper = Nothing pFeatureClass = Nothing pFeatLyr = Nothing End Sub8. C#制作鹰眼全过程(引自ESRI中国社区) 1. axMapControl1是主控件,axMapControl2是鹰眼控件 2. 1.鹰眼地图资源载入 3. privatevoidaxMapControl1_OnMapReplaced(objectsender,IMapControlEvents2_OnMapReplacedEvente) 4. 5. /当主地图显示控件的地图更换时,鹰眼中的地图也跟随更换 6. axMapControl2.LoadMxFile(axMapControl1.DocumentFilename); 7. axMapControl2.Extent=axMapControl2.FullExtent; 8. 9. 2.绘制鹰眼矩形框 10. privatevoidaxMapControl1_OnExtentUpdated(objectsender,IMapControlEvents2_OnExtentUpdatedEvente) 11. 12. /得到新范围 13. IEnvelopepEnv=(IEnvelope)e.newEnvelope; 14. IGraphicsContainerpGra=axMapControl2.MapasIGraphicsContainer; 15. IActiveViewpAv=pGraasIActiveView; 16. /在绘制前,清除axMapControl2中的任何图形元素 17. pGra.DeleteAllElements(); 18. IRectangleElementpRectangleEle=newRectangleElementClass(); 19. IElementpEle=pRectangleEleasIElement; 20. pEle.Geometry=pEnv; 21. /设置鹰眼图中的红线框 22. IRgbColorpColor=newRgbColorClass(); 23. pColor.Red=255; 24. pColor.Green=0; 25. pColor.Blue=0; 26. pColor.Transparency=255; 27. /产生一个线符号对象 28. ILineSymbolpOutline=newSimpleLineSymbolClass(); 29. pOutline.Width=2; 30. pOutline.Color=pColor; 31. /设置颜色属性 32. pColor=newRgbColorClass(); 33. pColor.Red=255; 34. pColor.Green=0; 35. pColor.Blue=0; 36. pColor.Transparency=0; 37. /设置填充符号的属性 38. IFillSymbolpFillSymbol=newSimpleFillSymbolClass(); 39. pFillSymbol.Color=pColor; 40. pFillSymbol.Outline=pOutline; 41. IFillShapeElementpFillShapeEle=pEleasIFillShapeElement; 42. pFillShapeEle.Symbol=pFillSymbol; 43. pGra.AddElement(IElement)pFillShapeEle,0); 44. pAv.PartialRefresh(esriViewDrawPhase.esriViewGraphics,null,null); 45. 46. 3.实现互动 47. privatevoidaxMapControl2_OnMouseDown(objectsender,IMapControlEvents2_OnMouseDownEvente) 48. 49. IPointpPt=newPointClass(); 50. pPt.PutCoords(e.mapX,e.mapY); 51. /改变主控件的视图范围 52. axMapControl1.CenterAt(pPt); 53. 9. ArcEngine中拓扑的使用- - 拓扑(ITopology)的使用包括1.建立拓扑2.验证拓扑3.编辑过程中保证拓扑的正确4.查询系统中存在的拓扑1.首先 来看看建立拓扑Topology实现了ITopology这个接口 但是给类是不能用来创建对象的。必须要通过调用 ITopologyContainer:CreateTopology这个方法来建立一个TopologyFeatureDataset 实现了ITopologyContainer这个接口。那么 这就是说拓扑只能在一个FeatureDataset的范围内建立。而不能独立存在于Workspace中。这样做的原因是需要保证参与同一个拓扑的FeatureClass具有同一个投影坐标系统。 建立拓扑后需要将ObjectClass加入到拓扑中去。这样这个拓扑就可以用来验证这几个ObjectClass 的对象之间的关系了。验证关系就要有规则,规则是由ITopologyRule来表达的。ITopologyRule必须要被加入到一个ITopologyRuleContainer中去。而Topology实现了这个接口。一个ITopologyRule用来表达两个ObjectClass的对象之间的某个关系。具体代码参看接口就可以了。2.验证拓扑ITopology有一个方法 ValidateTopology 用来验证指定区域内的拓扑。需要注意 没有版本的拓扑可以在 任何时候验证。而有版本的拓扑必须在编辑回话中验证。3.拓扑编辑1.移动共用点1.首先需要打开拓扑 建立拓扑图(ITopologyGraph)代码如下:/topoLayer 是一个打开的拓扑图层ITopologyGraph pTG=topoLayer.Topology.Cache;pTG.Build(pA.Extent,false);2.然后 需要获得当前节点或者边 这个操作要使用拓扑图的点击测试ITopologyElement topeElepTG.HitTest(. ref topeEle);这个方法在点击测试成功的时候返回true.而且会通过topeEle这个ref 参数将选中的元素(点或者边)返回.3.还有一种获取节点的方法首先调用拓扑图的Select方法 选中点击测试的元素(pTG.Select)然后可以查询拓扑图的选中节点集合 就可以找到该节点(pTG.NodeSelection)4.为该元素使用一个Feedback./其中 pNode 就是当前节点 sr 是参考坐标系 可以使用null/还有给Feedback设置Displaym_pNodeFeedback =pTG.GetSplitMoveNodeFeedback(pNode,false,sr);m_pNodeFeedback.Display= activeView.ScreenDisplay;5.在鼠标移动的时候 调用Feedback的MoveTo 方法。if(m_pNodeFeedback!=null) /activeView 是活动的试图/首先要把将点坐标转换为地图中的坐标。/然后调用MoveTo 方法 IPoint pt=activeView.ScreenDisplay.DisplayTransformation.ToMapPoint(X,Y);m_pNodeFeedback.MoveTo(pt);6.在鼠标释放的时候/获取拓扑图ITopologyGraph pTG=topoLayer.Topology.Cache;/转换坐标 IPoint pt=pA.ScreenDisplay.DisplayTransformation.ToMapPoint(X,Y); /获得正在做拓扑编辑的元素 ITopologyNode pTN=(ITopologyNode)m_pTopoElement;/实施拓扑编辑pTG.SplitMoveNode(pTN,pt,false);/提交拓扑编辑结果IEnvelope pE;pTG.Post(out pE);4.查询系统中的拓扑还是ITopologyContainer 这个接口 这个接口有FeatureDataset这个唯一的实现。CreateTopology 建立一个新的拓扑 DefaultClusterTolerance The default cluster tolerance as per the topology engine. MaximumClusterTolerance The maximal cluster tolerance as per the topology engine. MinimumClusterTolerance The minimal cluster tolerance as per the topology engine. Topology 通过索引打开拓扑. TopologyByID 通过ID打开拓扑. TopologyByName 通过名字打开拓扑 TopologyCount 拓扑的数目10. 为什么使用接口编程转载 进行接口的介绍,必须介绍一下程序语言发展的历史才行,鲁迅先生说过“治学先治史”,明白了程序语言发展的前世今生,才能知道为什么这么多语言为什么会这样,为什么么会那样?计算机出现以后,科学家相继开发了多种语言,从smalltalk,Pascal,Basic,C语言,C+,java,.net等等,这些语言的发展步伐,可以看作是从面向过程向面向对象发展的一段历史。很多面向对象的书在介绍自己的历史的时候,都会给读者介绍这一段历史,并鼓吹OO编程是多么多么的优异。问题是,很多刚开始学程序的人根本不知道为什么要有这个转变,他们也很难理解OO语言中的虚函数,接口等概念到底为了什么而提出来。我们在了解这一段历史以前,首先给大家介绍一个概念?“粒度”,什么是粒度?作者认为所谓粒度其实就是一个程序中使用代码单元的组合尺度,我们可以举一个例子,沙砾?砖块?房屋模板,我们设想去修建一座房子,其实有很多中修筑方法,如果你不闲麻烦,可以使用沙砾一点点地建筑,或者将沙砾烧制为砖块,用砖块来砌,甚至直接从工厂购买房屋的门,窗,墙组件来堆砌。这三种不同的方法代表了三种不同的组合尺度。沙砾是最小的单位,使用它搭建小的房子说不定还可以,但是毫无疑问,我们必须使用很多很多“沙砾”,不便于管理;砖块比沙砾聚合了一层,可以用来修建较大的房子了;房屋模板是最高

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论