
ArcEngine
召唤师峡谷
WebGIS、3DGIS、DesktopGIS,移动开发
展开
-
ArcEngine下架空线之悬链线的模拟
最近在做电力方面的东西,需要对架空线进行三维建模。经过前端时间的搜索与实践,最终实现了AE下悬链线的模拟。首先说明几个问题:(1)实地架设杆塔时,两个相邻杆塔的高程一般是不相同的,这就需要用到不等高悬点架空线的悬链线方程,在线路三维建模时要进行点位的判断(2)在计算悬链线高度时要进行三维空间XYZ到二维空间ZU的转换,这里的u坐标轴是杆塔连线在XY平面的投影,zu所在三维空间Z=低悬点的高原创 2014-03-16 13:55:10 · 5732 阅读 · 5 评论 -
ArcGlobe三维开发之十一——3D符号化(接口)
这里只探讨3D点的符号化,将做好的模型(.3ds)导入作为符号对点图层进行符号化处理,这里对3D符号的操作主要用到IMarker3DSymbol 接口以及IMarker3DPlacement 接口。图层的符号化则要用到IGeoFeatureLayer接口。原创 2014-04-06 21:59:00 · 6134 阅读 · 0 评论 -
ArcGlobe三维开发之十四————播放动画
在动画开发中,录制的一个动画可能只有一个Track也可能有多个Track。前面的博文提到动画的实现方式有两种,这里采用基于Camera的动画。这里我做的比较简单,首先来看实现效果图:下面,我们来看,如何在Globe下实现动画的播放。来看下面的OMD图,从这张图里我们可以看出,Globe包含多个Track(轨迹),Track包含多个KeyFrame(关键帧);动画类型主要有基于Camer原创 2014-04-08 23:21:36 · 4353 阅读 · 0 评论 -
ArcGlobe三维开发之十五——使用对话框设置坐标参考系(ISpatialReferenceDialog2)
最近在学习新的东西的时候也对之前写的程序做了优化。今天在使用对话框设置坐标参考的时候遇到了一点问题,特此备注,希望能帮到遇到同样问题的童鞋。我是写的用Excel生成shape文件,之前写的是先生成shape文件,在设置空间参考。在参考了ArcMap的添加XY数据功能后,感觉还是采用这种模式比较好一些,代码很简单: ISpatialReference pSpatialReference;原创 2014-04-08 23:41:23 · 4599 阅读 · 1 评论 -
ArcGlobe三维开发之十六——加载和保存3dd文件
ArcEngine提供了加载3dd文件的方法,却没有开放保存3dd文件的接口,通过查找资料,主要是采用二进制段实现了3dd文件的保存和加载,但是用这种方法保存的3dd文件其实是“伪”3dd文件,在ArcGlobe下是打不开的。下面是源代码: private void button_Open3dd_Click (object sender,EventArgs e)原创 2014-04-12 20:59:23 · 4627 阅读 · 1 评论 -
ArcGlobe三维开发之十七——书签
关于书签,主要实现创建书签,缩放至书签等功能。相关接口:ISceneBookmarks2 和IBookmark3D,实现过程很简单,代码如下: 创建书签源码: public partial class CreateBookMark:DevComponents.DotNetBar.Office2007Form { public IGlobeControl m_g原创 2014-04-14 19:51:41 · 2395 阅读 · 1 评论 -
ArcGlobe三维开发之二——IGlobeLayerProperties接口
IGlobeLayerProperties 接口Provides access to members that manipulate the globe layer properties. Note: the IGlobeLayerProperties interface has been superseded byIGlobeLayerProperties4. Please原创 2014-04-03 10:28:34 · 2620 阅读 · 0 评论 -
ArcGlobe三维开发之五——获取并设置Globe图层的叠加次序
Globe中的图层类型主要有以下三种:(1)、浮动图层(floating): 通过在要素几何、要素属性或图层级别设置中包含 Z 值,来定义其自身在 3D 空间中的位置。(2)、叠加图层(draped):被放置在某个已知表面图层之上,以从该图层获得其Z值。(3)、高程图层(Elevation):提供要在其上放置其他图层的 3D 表面。1、首先初始化Globe对象2、Get I原创 2014-04-03 23:10:26 · 4753 阅读 · 1 评论 -
ArcGlobe三维开发之十——IGlobeDisplayRendering2 接口
在使用ArcGlobe时,我们可以看到星空,地球外围的晕圈等等效果。在GlobeControl开发中实现这样的效果则要用到IGlobeDisplayRendering2 接口。通过查文档可以知道GlobeDisplay实现了该接口。如下图::最新的接口是IGlobeDisplayRendering2 ,通过该接口,可以控制Globe的显示渲染效果。代码如下:IGlobeDispla原创 2014-04-06 18:31:08 · 2640 阅读 · 1 评论 -
ArcGlobe三维开发之十三——加载保存动画
ArcGlobe3D开发原创 2014-04-08 21:42:19 · 4025 阅读 · 0 评论 -
ArcGlobe三维开发之三——3D符号的现实单位显示
ArcEngine实现3D符号的现实单位显示。原创 2014-04-03 15:31:53 · 5262 阅读 · 0 评论 -
ArcGlobe三维开发之八————由指定路径创建动画(接口)
上一篇博文讨论了动画的两种实现方式,本篇博文采用了Camera的方式创建动画,给定一条路径,按该路径变换Observer和Targeter的位置来实现动画效果。一、首先来看主要用到的接口:IAnimationExtension 、IAGAnimationUtils 、IAGImportPathOptions (1)、IAnimationExtension :动画扩展对象。原创 2014-04-04 14:30:21 · 4580 阅读 · 0 评论 -
ArcGlobe三维开发之十八——纵断面图的绘制
我是采用Dev控件中的绘图控件来绘制的纵断面图,下面主要来介绍下输电线路选址以及纵断面图的实时绘制的实现流程。一、关于输电线路的选址,首先要准备好基础地理数据,包括选线区的DOM,DEM,DLG以及属性数据等;其次选址采用二三维交互的方式,即以DLG和DOM为背景,初步选择线路路径,,而后在三维场景下将线路反映出来;再次,通过提取线路路径沿线的高程值,绘制纵断面图,并结合三维地貌对塔位进行原创 2014-04-21 17:11:58 · 3992 阅读 · 2 评论 -
ArcGlobe三维开发之十二——3D符号化(添加3D符号)
前面的博文http://blog.youkuaiyun.com/giser_whu/article/details/23047213介绍了3D符号化的主要接口。在这里总结下在座的过程中实现3D符号化的两种方式,第一种是将3ds文件作为符号,对点图层进行唯一值渲染,可以设置符号的大小,转角等属性;第二种则是借助GraphicsLayer添加到Globe显示,也可以对符号进行旋转等操作,两种方式的效率如何,还未做原创 2014-04-12 23:52:43 · 4518 阅读 · 2 评论 -
ArcGlobe三维开发之九————由指定路径创建动画(实现)
上一篇博文主要介绍了根据路径实现飞行动画的接口,本篇博文则讲解其实现过程。这里我封装了一个生成动画的类,用于动画的操作,目前只是实现了动画的生成,动画的保存以及动画的加载,后面的博文再陆续探讨动画的播放控制等功能。创建动画类代码如下: /// /// 根据路径创建飞行动画 /// class AnimationCreator { pub原创 2014-04-04 16:40:45 · 6116 阅读 · 1 评论 -
ArcGlobe三维开发之七————动画的两种实现方式
动画的实现方式主要有两种:IAnimationTrack和ICamera。一、Animation(1)、基于关键帧(2)、设置每个关键帧的ImeStamp来确定播放时间(该帧占总播放时间的百分比)(3)、便于使用,集成了视频输出接口。可输出.AVI二、Camera两个位置- Observer:Camera所在的位置- Target:Camera所指向的位置• 获原创 2014-04-04 13:16:35 · 4659 阅读 · 0 评论 -
ArcGlobe三维开发之四——设置globe图层的缓存属性)
Disk caching creates a temporary file or cache for each layer in ArcGlobe, which helps you display and navigate your data efficiently. This topic shows how to set layer cache properties programmatical原创 2014-04-03 19:43:44 · 4402 阅读 · 0 评论 -
shp导入SDE以及遇到的问题
在将shp文件导入SDE的时候一直报错,说没有权限修改此模块。通过google搜索,发现是权限的问题,通过设置licensecontrol的属性解决了这个问题:勾选 ArcGIS Engine Enterprise GeoDatabase即可,同时在初始化里加入以下代码就可以实现向SDE导入数据IAoInitialize initAO = new AoInitializeClass()原创 2014-04-16 14:49:22 · 3127 阅读 · 0 评论 -
shp文件批量导入SDE
仿照ArcGIS的数据导入功能做了个简易的数据导入界面:需要注意的问题:上篇博文中的要素类导入函数要变成静态函数,不然会报错。原因我想可能是因为非静态函数导入时,workspace与workspacefactory等类型变量未释放,希望了解的童鞋留言讨论哈。下面给出全部源码: public partial class ImportDataToSDE:DevComponents.D原创 2014-04-16 16:36:39 · 4766 阅读 · 2 评论 -
ArcEngine加载SDE中的栅格数据的问题
在加载矢量数据时直接转到IFeatureWorkspace接口即可,但是在加载栅格数据时要转到IRasterWorkspaceEx接口。效果图如下,双击即可添加到Globe中。代码如下: public partial class SDEDataViewer : DevComponents.DotNetBar.Office2007Form { #regio原创 2014-05-05 23:33:04 · 3791 阅读 · 0 评论 -
ArcEngine下动态数据的实现显示——概念及接口介绍
GIS经常需要以高频率显示信息并能够清晰的传递地理信息。包括:以动画的方式移动物体,更新位置方位,大小,状态以及属性信息等,这些信息需要迅速更新。一。ArcGIS 显示子系统管理着要素的显示和刷新,异步刷新显示和大量数据的渲染使得CPU的利用率增大,这可能导致显示延迟等问题.我们看一下ArcGIS 显示子系统的结构图,从这张图我们更能清楚的看到ArcGIS的显示原理:动态显示技术将原创 2014-04-10 22:43:37 · 3232 阅读 · 0 评论 -
ARCENGINE开发经典贴
使用ArcGIS Engine 开发自定义GIS应用:第一部分:使用ArcGIS Engine 发布自定义GIS应用软件-全面了解ArcGIS Engine的产品。第二部分:ArcEngine9.2的新特性及变化、(续)--类对比及变化、(续)--(代码转换插件)、(续)--ArcEngine新命令,工具、菜单和面板第三部分:使用 ArcGIS Engine开发应用程序(自定义或嵌转载 2014-04-10 12:19:42 · 3740 阅读 · 3 评论 -
ArcEngine正确释放资源
AE中对MDB,SDE等数据库操作时,打开后却往往不能及时释放资源,导致别人操作提示对象被锁定。很多帖子说了很多原理,看的也烦且不实用,比如一句话概括的用System.Runtime.InteropServices.Marshal.ReleaseComObject(object o)释放,说的很不清楚,很多人试过觉的释放不掉。事实上,的确是用该方法,但释放的技巧在于,新建几个AE对转载 2014-04-12 20:18:00 · 3289 阅读 · 0 评论 -
ArcEngine下TIN生成等高线
时间太晚了,直接附上源码:原创 2014-05-13 23:48:30 · 4213 阅读 · 0 评论 -
ArcEngine下SceneControl叠加影像数据(构建三维地形)
加载完TIN数据后,需要在三维物体上描绘细节,即纹理;建立DEM表面点与纹理空间点的关系,即纹理映射。叠加影像数据就是把影像看作纹理,将其贴在地形表面,让其具有地形起伏的三维效果。这里与GlobeControl下三维场景的构建有所不同,在前面的博文中我们提到过,globe下图层主要有三种类型:Floating、Draped、Elevation(浮动、叠加和高程图层),即只需要设置图层的属性即可原创 2014-05-13 23:42:04 · 5418 阅读 · 0 评论 -
ArcEngine由点生成TIN
这两天替别人写一个三维校园的展示程序,用的是SceneControl二次开发。需要利用DOM和TIN构建三维地形。现在说下根据高程点生成TIN的过程:(1)根据高程点文件(Excel)生成点shapefile(2)使用ITinEdit的AddFromFeatureClass方法生成TIN高程点数据格式如下:操作界面如下::生成TIN效果图:代码很容易理解,如原创 2014-05-13 23:09:08 · 6762 阅读 · 2 评论 -
AE+SceneControl源码共享
最近,有博友发私信或留言交流,先把之前用SceneControl代做的一个小工程共享,做的很粗糙,希望可以帮到大家,欢迎留言交流哈。除了基本的打开、保存、数据加载、查询等,主要实现以下几个功能:1、根据高程点(excel文件)生成TIN。2、TIN与DOM叠加构建三维场景。3、根据TIN提取等高线。4、模型导入下载地址见:http://download.youkuaiyun.com/d原创 2014-08-21 00:05:05 · 2637 阅读 · 4 评论 -
ArcGlobe三维开发之六——动画(前言)
在Globe下使用动画可以让用户以一种动态原创 2014-04-04 11:49:29 · 3036 阅读 · 0 评论 -
ArcGlobe三维开发之十九——GlobeControl与MapControl的二三维联动
实现思路:2D—>3D,将当前MapControl的可视范围设置为GlobeControl中Extent属性的值;3D--->2D,获取当前GlobeControl的target和observer的Camera的BLH以及当前的图形显示范围,并将其设置为Mapcontrol的显示范围。中心点可取observer、target或者二者的中心点均可。全部代码如下: #region 二三维切换及原创 2014-04-21 19:57:22 · 5457 阅读 · 3 评论 -
ArcGlobe三维开发之一——图层及常用接口
1、IGlobe:--Globe控件的globe对象2、IGlobeDisplay:Globe控件的显示操作3、IGlobeCamera:IGlobeCamera- 控制查看的视角4、IGlobeViewer:-控制查看的视点5、IGlobeDisplayLayers:提供对控制globe显示图层成员的访问描述:IGlobeDisplayLayers interface p原创 2014-04-03 10:08:11 · 4953 阅读 · 3 评论 -
ArcGlobe三维开发之二十——输电线路二三维交互选线
前面输电线路的生成方式前提是实地勘测了杆塔点位,采集了杆塔的坐标,直接导入Excel生成shape文件。现在是做一个输电线路的选址,传统的规划选线作业采用失效性差的纸质地图,造成选线路径方案可行性差,准确性低。应用高分辨率卫星影像和数字高程模型建立三维选线平台以辅助选线并进行杆塔辅助规划,可有效提高线路路径规划的可行性和准确性,节省投资。基础地理数据主要包括DEM、DOM、DLG,杆塔模型以及原创 2014-04-27 22:56:27 · 4873 阅读 · 4 评论