欢迎来到我的范文网!

arcengine,叠加分析

励志文章 时间:2018-06-27

【www.myl5520.com--励志文章】

基于ArcEngine三维地形分析和可视化
篇一:arcengine,叠加分析

第33卷第1期

河北科技大学学报

V01.33。No.1 2012年2月

Journal of Hebei University of Science and Technology

Feb.2012

文章编号:1008—1542(2012)01一0061一04

基于ArcEngine三维地形分析和可视

高 恋,李向新,穆宝胜

(昆明理工大学国土与资源工程学院,云南昆明

650093)

摘 要:基于ESRI公司提供的二次开发工具ArcEngine和C#编程语言,阐述了三维GIS

的理

论、方法及过程,实现了GIS数据的三维显示以及部分三维分析功

能。 关键词:三维GIS;三维可视化;ArcEngine;三维分析 中图分类

号:TP311.52;P208

文献标志码:A

3D GIS based on ArcEngine

GAO Lian,LI Xiang—xin,MU Bao—sheng

(Faculty of Land Resource Engineering,Kunming University of Science and Technology,Kunming

Yunnan 650093,China) Abstract:This paper describes the theory,method and procedure of building up 3D GIS based on ArcEngine provided by ESRI

Company and C#programming lauguage,and realizes some functions

such as 3D visualization,3D analysis and so on. Key words:3D

GIS;3D visualization;ArcEngine;3D analysis 随着科技的发展,GIS越来越多的应用于各行各业中。GIS所表达的地理信息是三维连续分布的,单纯

的二维地理信息系统不能真实地描述三维客观世界[1。2],人们越来越多地要求从真三维空间来处理问题。例 如,通过三维可视化可以实际地看到山谷及山脊的存在,而不需要从等高线数据推断出山谷及山脊的存 在[3]。迄今为止,目前国内外还没有一个成熟完整的三维GIS系统,与三维GIS相关的系统大多集中在 三 维可视化方面,如EVS,Vis5D,Voxel,医学可视化及各种CAD软件等,也有一些三维系统部分实现 三维 GIS的功能,比较有名的软件有LYNX,IVM(interactive volume modeling),GOCAD,I/EMS, SGM等。 对GIS的三维开发比较常用的是OpenGL,VRML等H],这些都需要从底层开发做起,工作量 大、开发周期 长、成本高。三维GIS的研究亟待解决。

ESRI公司推出的组件式GIS开发工具ArcEngine是一组完备的并且打包的嵌入式组件库和工 具 库[5],使用它开发软件用户不需要从底层做起,只需要定制自己需要的组件到特定的功能。笔者就是 采用 ArcEngine技术对三维GIS进行研究,基于C#编程语言实现三维的可视化及一些分析功能。

1

ArcEngine实现三维GIS的理论和方案

1.1

ArcEngine实现三维GIS的理论

ArcEngine由开发工具和运行环境组成,支持多种开发语言,包括com,.net,java以及C++等,笔者采 用 VS2008(C#)来开发。在ArcEngine中用于三维开发的组件有SceneControl和GlobeCOntrol,在此采用 Scene— COntr01控件。SceneControl是一个高性能的嵌入式开发组件,提供给开发者建立和扩展Scene程 序,它相当于 ArcScene Desktop应用程序中的三维视图,并且提供了显示和增加空间数据到三维的方法。 SceneControl通过

收稿日期:2011一lO一11;责任编辑:陈书欣

作者简介:高恋(1986一),女,河南滑县人,硕士研究生,主要从事GIs的二次开发方面的研究。

62

河北科技大学学报 20 1 2年

—————__-●-_—_—————————————————————————————————lll--l●———-——————————————————_●l_l●—————————————●__-—————-—●————————————————一一

对象接口ISceneViewer来实现,该接口提供对象勖mera,该对象由Observer和nrget构成。SceneCOntrol

提供

了一些属性和方法来操作三维对象,如SceneGraph,Scene等属性,LoadSxFile方法等[s1。 1.2 ArcEngine实现三维GIS的方案

结合开发研究的过程,现将其开发的过程与方案归纳如下。

1)系统界面设计。新建一个工程,添加如下控件:图层控件axTOCContr01,三维显示控件axSceneCon— trol,工具栏控件axTOolbarControl。通过属性设置使axTOolbarControl和axTOCContr01控件分别与axS— ceneControl控件进行绑定。在代码区引用必要的类库:Carto,Anal yst3 D,Display,esriSystem,

Data— SourcesFile,DataSourcesRaster,Geodatabase,Geometry,DataSourcesGDB,GeoAnalyst,CatalogUI。

在界 面顶部添加菜单栏。

工具栏和菜单栏见图1。

图1 工具栏和菜单栏

Fig.1 TooIbar and menubar

2)三维GIS实现功能的模块设计。实现了加载DEM、加载TIN、叠加TIN、分层设色、坡度分析、通视

分析、坡向分析、等高线提取功能。系统功能见图2。

图2 三维GIS的功能结构

F嘻2 Function structure of 3D GIS

2

2·l

三维GIS功能的具体实现过程

三维GIS的可视化具体实现过程

1)加载数据。三维GIS的可视化即数据的三维显示,首先需要加载数据。系统中以加载昆明市滇池地 区的tiff格式的栅格数据为例,DEM数据加载需要用到 2个组件类:Scene和SceneGraph。Scene是一个矢 量、栅格和图形数据显示和处理的容器,该类实现了IScene接口,提供了控制Scene的方法和属性‘引,例如, AddLayer方法用于向场景中增加1个图层。

SceneGraph是一个记录在Scene中出现的数据和事件的容器,该类实现了ISceneGraph接口,提供了控制 和处理Scene中图形的方法和属性,例如,LOcate方法用于通过单击场景中的任意点定位一个对象‘引。编

程实 现的主要语句为pRasterLayer.CreateFromDataset(pRasterDataset);pScene.AddLayer(pLayer,true)。

2)叠加影像数据。DEM数据加载完后,需要使物体具有三维效果,就需要叠加影像数据,使其具有地形 起伏的三维效果。叠加影像数据需要用到组件类TinLayer,RasterLayer,Tin3DProperties和

Raster3 DProperties。TinLayer

组件类用于创建Tin图层对象,RasterLayer组件类用于创建Raster图层

对 象,Tin3 DProperties组件类用于创建Tin数据的三维场景属性对象,Raster3DProperties组件类用于创建 Raster数据的三维场景属性对象[3|:

高 恋等 基于ArcEngine三维地形分析和可视化

———————————————————————————————————————————————————————————————————————————————————————————————————一

第1期

i3 dProperties一(13 DProperties)layerExtensions.get—Extension(i); i3 dProperties.BaseOption—esriBaseOption.esriBaseSurface;

一一一

6 3

i3 dProperties.BaseSurface=s urface;

i3dProperties.Apply3DProperties(rasterLayer)。

3)分层设色。通过分层设色可以使地貌高程分布及其相互对照鲜明, 分层设色需要组件类是:Algo—

rithmicColorRamp,RgbColor,RasterClassifyColorRampRenderer,SimpleFillSymbol,TinElevationRender—

er。主要实现语句如下:

tinColorRampRenderer.BreakCount—lClasses;

IEnumColors enumColor—algorithmicColorRamp.Colors;enumColor.Reset();

tinLayer.InsertRenderer(tinColorRampRenderer as ITinRenderer,O)。 通过以上步

骤加上正确的编程语言来实现,DEM图像便具有三维效果并显示出来。

2·2 三维

GIS分析功能的介绍及具体实现过

1)坡度 、坡向分析的介绍及具体实现过程。某一位置的坡度分析是水平面与局部地表之间的正切值,即高度变化的 最大值比例,坡向是变化率最大的方向嘲。对某一位置的坡度、坡向分析有利于水利局及规划局等部门做出正确的决 策。在ArcEngine中实现这些功能需要用到下面几个类和接口:Point,RasterWork— space,RasterBand,ISurfaceOp,IRasterAnalysisEnViroment等。坡度分析与坡向分析实现语言一致,坡度分析是用ISurfaceop的Slope方法来实现;坡向分析是用ISurfaceOp的Aspect方法来实现。笔者提取的 数据是昆明市滇池地区的tiff格式数据。在此主要给出坡度分析的实现语句,如下:

ISurfaceOp surfaceOp—new RasterSurfaceOpClass();

TT上、

KasterAnalysls^ ● ·1一’匕

● ●

nVlrOnment rasterAnalysIsEnverOnment··一

rasterAnalysisEnveronment=surfaceOp as IRasterAnalysisEnvironmen.t;

rasterAnalysisEnveronment.OutWorkspace=workspace as IWorkspace; object zFactor—new object();

IGeoDataset geoDataset,rasterGeoDataset; rasterGeoDataset=rasterDataset as

IGeoDataset;

·

geoDataset—

surfaceOp.Slope(rasterGeoDataset,

esriGeoAnalysisSlopeEnum.esri—

GeoAnalysisSlopePercentrise,ref

beOAnalysls3lOperercentrlSe,ret zFactor)。zF。aCtOr). 坡度提取和坡向提取效果图见图3和图4。

图3 坡度分析图

图4 坡向分析图

Fig一.

3 Slope -

analysis

r

Fig.4

Aspect analysis

2)通视分析的介绍及主要实现语句。通视分析有很广的应用背景,如军事上观察敌人的活动区域,在这

一区域中视线不能被遮挡。可应用于旅游中的风景评价、房地产中视线遮挡判断以及通信中的信号覆盖,或 军事上的火力覆盖等多方面,由被覆盖的可视面积反求待定位置与高度等。

通视分析要选择一个目标位置,而这个目标位置可以是一个“点’’,笔者就是在基于“点’’的情况下的通视 分析。需要有“点"文件的保存目录,在surfaceOp.Visibility(rasterGeoDataset,featureDataset,esriGeo—

6 4arcengine,叠加分析。

河北科技大学学报 1 20 2年

AnalysisVisibilityEnum.esriGeoAnalysisVisibilityFrequency)语句实现。

3)等高线提取的具体实现过程。笔者对规则格网的栅格数据进行等高线提取。要设置高程的基准面和 等高线间距。主要是用ISurfaceOp的Contour方法 来 实现(rosterGeo Dataset,interval,ref

basecoutoar), 方法中的第

1个表示用于提取的栅格数据,第2个表示等高线间距,第3个表示等高

线的基准高程。以 GRID栅格图像(GRID栅格图像为某地区中的图像,图像名不知)为例,分别设置5 m和1 o m不同的等高 距,效果图见图5和图6,可以清晰地看见1o m等高距的等高线比5 m等高距的等高线要稀疏很多。主要 语句如下:

ISurfaceOp surfaceOp—new RasterSurfaceOpClass();

IRasterAnalysisEnvironment rasterAnalysisEnveronment;

rasterAnalysisEnveronment—surfaceOp as IRasterAnalysisEnveronment;

rasterAnalysisEnveronment.outWorkspace—workspace as IWorkspace;

ect basecontour=new object(); obj

basecontour—O;

IGeoDataset rasterGeoDataset;

PFL—new FeatureLayerClass(); IFeatureLayer

rasterGeoDataset—rasterDataset as IGeoDataset;

O,ref basecontour)as IFeatureClass。 PFL.FeatureClass=surfaceOp.Contour(rasterGeoDataset,1

加羹陇M加删叠奎唧N分屡设色壤魔分析迓镜分折坡向分析0矗绥摄取

图5

Fig.5

5

m间距等高线

图6

Fig.6

1 O m间距等高线

Contour of fiVe meters interVal

Contour of ten meters interval

3

结 语

基于ArcEngine和C#编程语言实现了最常用的三维显示及三维分析的坡度、坡向、通视、等高线提取 功能。对于等高线的提取等三维分析功能,笔者的分析结果与ArcMap的分析结果是一致的,证明了结果的 可行性。本研究结果即可作为独立的系统运行,也可嵌入到其他系统中。但对于坡度、坡向的提取只是完成 了定性的提取,至于定量的分析还有待进一步研究。真正的三维开发是需要更多更新的技术,三维GIS的 实现远不止这些,在以后的研究中,将会更加深入的对此进行研究。 参考文献:

[1] 许捍卫,茆德柱,何 江.基于ArcEngine的GIS三维功能开发技术研究[J].测绘工程(Engineering of Surveying and Mapping),2006,

1 5(6) :50一5 3.

[2] 李建成,郭建文,盖迎春,等.基于ArcEngine的三维GIS的设计与实现[J].遥感技术与应用(Remote Sensing Technology and Applica—

5—398. tion),2009,24(3):39

[3] 邱洪钢.张青莲,陆绍强.ArcGis Engine开发从人门到精通[M].北京:人民邮电出版社,20 10.

and Surve如ng),2010,26(4):26—28. [4] 张啸雷,王 冬.基于ArcScene的三维GIS实现的研究[J].城市勘测(Urban Geotechnical Investigation [5] 韩 鹏,王 泉,王

鹏,等.地理信息系统开发一一ArcEngine方法[M].武汉:武汉大学出版社,2008.

[6] 史永忠,曹全龙.基于ArcEngine的三维地形可视化系统的研究与开发[J].现代测绘(MOdem Surve如ng and Mapping),2007,30(3):37—39.

基于ArcEngine三维地形分析和可视化

作者:

作者单位: 刊名: 英文刊名: 年,卷(期):

高恋, 李向新, 穆宝胜, GAO Lian, LI Xiang-xin, MU Bao-sheng 河北科技大学学报

University of Science and Technology 2012,33(1)

1.许捍卫;茆德柱;何 江 基于ArcEngine的GIS三维功能开发技术研究 2006

2.李建成;郭建文;盖迎春 基于ArcEngine的三维GIS的设计与实现[期刊论文]-遥感技术与应用 2009(03) 3.邱洪钢;张青莲;陆绍强 ArcGis Engine开发从入门到精通 2010

4.张啸雷;王 冬 基于ArcScene的三维GIS实现的研究[期刊论文]-城市勘测 2010(04) 5.韩 鹏;王 泉;王 鹏 地理信息系统开发--ArcEngine方法 2008

6.史永忠;曹全龙 基于ArcEngine的三维地形可视化系统的研究与开发[期刊论文]-现代测绘 2007(03)

arcengine,叠加分析。

本文链接:

ArcEngine中最短路径的实现
篇二:arcengine,叠加分析

ArcEngine中最短路径的实现

最短路径分析属于ArcGIS的网络分析范畴。而ArcGIS的网络分析分为两类,分别是基于几何网络和网络数据集的网络分析。它们都可以实现最短路径功能。下面先介绍基于几何网络的最短路径分析的实现。以后会陆续介绍基于网络数据集的最短路径分析以及这两种方法的区别。

几何网络是一种特殊的特征要素类,由一系列不同类别的点要素和线要素(可以度量并能图形表达)组成的,可在FeatureDataset下面创建, 可进行图形与属性的编辑。包括流向分析和追踪分析两大功能。主要接口是ITraceFlowSolver。我们先在一幅地图上做出一个几何网络才能进行最 短路径分析。下面是主要的一些步骤:

1、打开ArcCatalog,连接到包含地图的文件夹。

2、在空白处,右键新建一个“Personal GeoDatabase”。

3、在生成的Personal GeoDatabase上右键新建一个feature dataset。

4、双击Personal GeoDatabase进去,找到刚才new出的feature dataset,右键Import导入Feature Class(Single),选择要建立几何网络的图层或者shape文件。

5、然后再右键新建一个Geometric Network,选择从已存在的图元中建立几何网络。

6、打开ArcMap,把刚才建立的“Personal GeoDatabase Feature Class”添加到地图中,这样几何网络就建立好了。

这样我们就建立好一个几何网络了。我们现在要通过编程来实现最短路径,用到的接口主要有 INetworkCollection,IGeometricNetwork,IPointToEID,ITraceFlowSolverGEN(它实现 了ITraceFlowSolver的接口),INetSchema,IEIDHelper等。主要步骤如下:

1、获取几何网络工作空间

2、定义一个边线旗数组,把离点串最近的网络元素添加进数组

3、设置开始和结束边线的权重

4、进行路径分析

5、得到路径分析的结果

上次介绍了用几何网络实现的“最短路径”,这次用网络数据集实现真正的最短路径功能,跟上次一样,先处理下数据。

1、先打开ArcCatalog,连接到目标文件夹,假定该文件下有一个名为road的道路图层。

2、在road图层上右键新建一个网络数据集,并按照其默认设置直至完成。arcengine,叠加分析。

3、打开该地图的工作空间,把刚才新建的网络数据集添加工作空间中。

4、在网络分析菜单中选择新建最近设施点。

这时在工作空间里,可以看到多了一个名为“Closest Facility”的图层。它下面还有4个子图层,名字分别为 “Facilities”,“Incidents”,“Barriers”,“Routes”。“Facilities”就是设施点图层,也就是目的 点,“Incidents”的意思就是出发点,“Barriers”是障碍点,意思就是地图某条道路附近有一个障碍点,如果障碍点与道路距离在容限范围 内,则表示此道路不通,“Routes”就是最终的结果。这样我们编程实现最短路径的思路就出现了:

1、添加出发点。

2、添加目的点。

3、生成最优路径,获取结果。

这里的添加出发点或者目的点,是往“Facilities”或“Incidents”图层上添加元素。获取结果也是从“Routes”中获取 Polyline。往“Facilities”或“Incidents”图层上添加元素用到的主要方法是INALocator的

ArcEngine基础学习
篇三:arcengine,叠加分析

1. 目录

1.

2.

3.

4.

5.

6.

7.

8.

9.

10.

11.

12.

13.

14.

15.

16.

17.

18.

19.

20.

21.

22.

23.

24.

25.

26.

27. 目录 ................................................................................................................................................................................................................................................. 1 用ArcEngine的工具条添加图层要素 .......................................................................................................................................................................................... 2 ArcEngine中对Feature的编辑 ..................................................................................................................................................................................................... 5 Feature的概念 ................................................................................................................................................................................................................................ 6 如何实现经度纬度到平面坐标的相互转换?(转载) ................................................................................................................................................................ 7 ArcEngine 最短路径分析(源码) ............................................................................................................................................................ 错误!未定义书签。 ArcEngine中使用上下左右键移动地图功能的实现 ................................................................................................................................................................... 9 缓冲区的创建 ............................................................................................................................................................................................................................... 10 C#制作鹰眼全过程(引自ESRI中国社区) .................................................................................................................................................................................. 12 ArcEngine中拓扑的使用- - ..................................................................................................................................................................................................... 14 为什么使用接口编程{转载} .................................................................................................................................................................................................... 17 ArcEngine中闪烁目标 ............................................................................................................................................................................................................. 20 创建多个ArcSDE实例 ............................................................................................................................................................................................................ 23 Geometry 对象浅析 ................................................................................................................................................................................................................. 24 空间查询与空间分析功能 ....................................................................................................................................................................................................... 30 AO中的空间关系 ..................................................................................................................................................................................................................... 32 ArcGIS Engine 中的相交分析的实现 ..................................................................................................................................................................................... 34 GIS基本概念集锦 .................................................................................................................................................................................................................... 35 AE开发中矢量图层叠加求交分析 ......................................................................................................................................................................................... 39 矢量数据分析 ........................................................................................................................................................................................................................... 43 GIS空间信息基本分析方法 .................................................................................................................................................................................................... 44 如何判断图形间的逻辑运算 ................................................................................................................................................................................................... 47 AE中2种方式overlay ............................................................................................................................................................................................................ 48 ArcEngine中实现捕捉功能 ..................................................................................................................................................................................................... 52 在LAYER(i)上添加缓冲区 ..................................................................................................................................................................................................... 73 C#编码标准--编码习惯 ....................................................................................................................................................................................................... 74 基于AE删除选择的要素- - .................................................................................................................................................................................................... 90

28.

29.

30.

31.

32.

33.

34.

35.

36.

基于AO/AE获取要素信息 ..................................................................................................................................................................................................... 91 ArcEngine中拓扑的使用- - ..................................................................................................................................................................................................... 94 ArcEngine 渲染的使用 ............................................................................................................................................................................................................ 97 利用ArcEngin进行空间分析的简单应用- - ........................................................................................................................................................................ 104 IfeatureSelection:SelectFeatures方法介绍 ............................................................................................................................................................................. 108 常用数据入sde库的代码 ...................................................................................................................................................................................................... 110 ArcEngine开发感想 ............................................................................................................................................................................................................... 116 Geometry 对象浅析 ............................................................................................................................................................................................................... 118 AE开发中的一些基本方法(1)数据连接 ............................................................................................................................................................................... 128

2. 用ArcEngine的工具条添加图层要素

发现AE比起其它的组件GIS来要好用的多

但也有一些bt的地方

比如说AE没有提供图层编辑的工具条

但最近因为程序里要添加图元

必须得开发图层编辑的功能

于是去找了找资料

发现自带的帮助里有一个MapEditing的示例

但是从AO的示例改造而来

需要从按钮写起

想想如果这样搞的话

倒不如直接用AO算了

一直想省点事

在AE自带的工具条上做点文章

其实AE中也有一组相似的编辑按钮,是用于编辑Graphics的arcengine,叠加分析。

自然就有了一个想法:能不能先生成一个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.IWor

本文来源:http://www.myl5520.com/lizhi/91446.html

推荐内容