![](https://img-blog.csdnimg.cn/20190918140129601.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
ArcGlobe开发
参与ArcGlobe开发项目的一些学习总结体会
q1398284020
这个作者很懒,什么都没留下…
展开
-
ArcEngine开发:二维与三维一些基本可以等价的概念
axMapControl1.ActiveView.ScreenDisplay axGlobeControl.GlobeViewer.GlobeDisplay as IDisplayIGraphicsContainer pGraphicsContainer = axMapControl1.ActiveView as IGraphicsContainer;IGraphicsLayer...原创 2018-07-16 16:59:36 · 360 阅读 · 0 评论 -
ArcEngine开发:将多个IGeometry类型存储为ILayer图层形式
public static IFeatureLayer StoreGeometyToLayer(List<IGeometry> geometry) { IFeatureLayer pFeatureLayer = new FeatureLayerClass(); IFeatureClass pFeatCls = pFeat...原创 2018-12-13 00:15:33 · 1545 阅读 · 1 评论 -
ArcEngine开发:通过两点构成正方形为范围去裁剪栅格数据
如题,通过两点的坐标,构成正方形来剪裁栅格。frontPoint是较小的 x y值,backPoint是较大的x y值。最后保存栅格数据,并输出到文件。因为将数据变量及时回收了,所以在输出到文件后,也可以马上调用,不会出现问题。public static void ReClipRaster(IRasterLayer rasterlayer, double[] frontPoint, doub...原创 2018-12-13 00:23:49 · 459 阅读 · 0 评论 -
ArcEngine开发:浅谈IPointCollection
IPointCollection接口非常灵活,在ArcEngine开发中经常要用到。下面来介绍下它的特性。IPointCollection初始化,可以通过MultipointClass、PolylineClass、PolygonClass对象定义。IPointCollection pPointCollection1 = new MultipointClass();IPointColle...原创 2018-12-16 00:27:02 · 6076 阅读 · 0 评论 -
The Geometry has no Z values 解决办法
我们在ArcEngine开发过程中进行创建要素时,简单的IFeatureClass.CreateFeature之后,然后把IGeometry对象赋给Feature.shape,会引发“The Geometry has no Z values”的错误提示。类似的错误在做地图标注过程中也会出现。参考网上的解决方案如下,基本思路就是在CreateFeature之后,设置Z值(顺带将M值也一并设置...转载 2018-12-23 03:22:32 · 967 阅读 · 0 评论 -
ArcEngine开发:将IPoint类型点要素插入到要素类中。
该过程通过IFeatureCursor解决。函数如下:public static void InsertFeaturesUsingCursor(IFeatureClass featureClass, IPoint point) { IFeatureBuffer featureBuffer = featureClass.CreateFeatureBuff...原创 2019-03-26 11:35:42 · 569 阅读 · 0 评论 -
ArcEngine开发:给打开后的shp数据文件解锁
IWorkspaceFactory pwf = new ShapefileWorkspaceFactory();IWorkspaceFactoryLockControl ipWsFactoryLock = (IWorkspaceFactoryLockControl)pwf;if (ipWsFactoryLock.SchemaLockingEnabled){ ipWsFactoryL...原创 2019-03-27 17:20:43 · 568 阅读 · 0 评论 -
ArcEngine开发:查询要素的方法总结
1、查找数据1)利用FeaturCursor进行空间查询//空间查询ISpatialFilter spatialFilter = new SpatialFilterClass();spatialFilter.Geometry = envelope;//指定几何体String shpFld = featureClass.ShapeFieldName;spatialFilter.Ge...转载 2019-03-27 23:07:24 · 1116 阅读 · 0 评论 -
ArcEngine开发:在要素类中插入要素的方法总结
ArcGIS Engine中,主要有两个方法用于要素的添加:UsingIFeatureClass.CreateFeaturefollowed byIFeature.Store UsingIFeatureClass.CreateFeatureBufferwith an insert cursor批量插入feature,如果用feature.store()方法,在图层中一个个地插入...转载 2019-03-27 23:10:32 · 2065 阅读 · 0 评论 -
ArcGlobe开发:在三维场景中画出几何要素
在三维场景 中可以画出几何要素,其充当临时图层,在刷新后会消失。一般用作临时测试,或者有特别的用途。函数如下:public static void Draw_Polyline(IGlobe pGlobe, int[] rgbColor,IGeometry geometry) { try { //首...原创 2018-12-13 00:12:27 · 735 阅读 · 0 评论 -
ArcGlobe开发:根据图层名称获取Globe中的图层
实现此功能的函数如下:public static ILayer GetGlobeLayerByName(IScene pScene, string strLayerName) { try { object Missing = Type.Missing; IEnumL...原创 2018-12-13 00:08:49 · 434 阅读 · 0 评论 -
ArcGlobe开发:.3dd工程文档另存为功能
try { SaveFileDialog save3ddDialog = new SaveFileDialog(); save3ddDialog.Title = "保存3dd文件"; save3ddDialog.Filter = "3dd文件(*.3dd)...转载 2018-07-11 15:37:48 · 317 阅读 · 0 评论 -
ArcGlobe开发:二三维视图切换
if (Operate_3D) //变成二维浏览 { Operate_3D = false; this.splitContainer1.Panel2.Controls.Add(this.axMapControl1); this.splitContai...原创 2018-07-11 16:13:14 · 585 阅读 · 1 评论 -
ArcGlobe三维开发:将点从屏幕坐标系转成投影坐标系
1、将鼠标点击得到的屏幕坐标系上的点,转化成指定空间参考下的坐标。IPoint pPnt = VectorEditClass.BasicClass.SceneManager.ReturnMousePoint(m_pGlobeControl.GlobeDisplay, x, y);IGeoDataset pGeoDataset = m_HandlingFeatureLayer as IGeoDat...原创 2018-07-07 20:52:07 · 667 阅读 · 0 评论 -
ArcGlobe开发:矢量数据编辑
通过ArcEngine进行矢量数据编辑,主要有两种实现方式:一种是利用IWorkspaceEdit接口提供的方法(使用IWorkspaceEdit来控制编辑流程),另一种是使用IEngineEditor接口来实现。IEngineEditor接口网上使用资料比较多,但是由于使用IEngineEditor接口在开始编辑时,需要传入一个Map对象,而在ArcGlobe开发环境下,对于三维的矢量数据编...原创 2018-07-28 21:56:36 · 727 阅读 · 1 评论 -
ArcGlobe开发:基础概念
GlobeControl添加图层时,包括三种类型:浮动图层、纹理图层(叠加图层)、高程图层。浮动图层:使用偏移来显示,可以高出或低于球体表面;纹理图层:覆盖在球体表面,相当于贴了一层纹理;高程图层:给球体表面提供地形数据,使纹理图层有起伏。添加图层:axGlobeControl1.Globe.AddLayerType(layer, globeLayerType, true);或 axGlobeC...转载 2018-07-15 10:46:38 · 1387 阅读 · 0 评论 -
ArcGlobe开发:设置图层可见范围
假设pLayer为需要设置的图层。设置当前可见范围,为图层的最小可见范围:(上面是三维,下面是二维)IGlobeDisplayLayers2 pGlobeDisplayLayers = m_globeControl.Globe.GlobeDisplay as IGlobeDisplayLayers2;IGlobeLayerProperties5 pGlobeLayerPropertie...原创 2018-07-22 16:39:54 · 723 阅读 · 0 评论 -
ArcGlobe开发:图层绘制顺序调整
pLayer为需要调整绘制顺序的图层名称。将该图层上移一层:(Operate_3D为真时,是三维视图下调整;为假时,是二维视图下调整)int currentIndex = -1;ILayer pTempLayer;if (Operate_3D){ for (int i = 0; i < m_Scene.LayerCount; i++) { ...原创 2018-07-22 16:56:49 · 523 阅读 · 0 评论 -
ArcEngine开发:创建shp数据文件,并存入Geometry类型的要素到shp数据文件
首先是一个创建shp数据文件的函数,具体参数能根据变量名称看出来。函数如下:public static void CreatShpFile(string shpFullFilePath, ISpatialReference spatialReference, esriGeometryType pGeometryType, string shpFileName) { ...原创 2018-12-12 23:37:23 · 3949 阅读 · 0 评论 -
ArcEngine开发:在要素类中删除要素的方法总结
删除feature,一个个删除就用IFeature.Delete方法即可,此处不再赘述,只写一种批量删除的方法,用于ITable是针对数据库进行操作的,所以速度很快。The best approach to take when deleting features depends on two factors, how many features are being deleted and wh...转载 2019-03-27 23:12:57 · 1813 阅读 · 0 评论