ArcGIS Flex API for 3D—DEM&RS
来源:互联网 发布:手机按键连发软件 编辑:程序博客网 时间:2024/06/11 02:27
基本的思路是,前面提到Plane的geometry是存储了一个vertices数组,这个数组代表的是所有Plane的顶点,Plane本身就是一个三角网,一旦这些vertices的z值代表了实际的高程数据,就会实现真实的高低起伏,因此就是要将DEM的高程信息赋给相应的点;Plane是可以选用不同材料渲染的,使用BitmapFileMaterial可以将RS影像与DEM叠加。
如何获取RS影像和DEM信息:本地数据和ArcGISServer服务两种方式。
①本地数据
影像获取比较简单,支持jpg、png、bmp等格式,只需要其地址(虚拟地址or本地地址)。
获取影像
var bmpfm:BitmapFileMaterial = new BitmapFileMaterial("http://heyb/FlexData/pv3d-rs.jpg");bmpfm.interactive = true;m_heatMapPlane = new Plane(bmpfm, 460, 500, 46, 50);
DEM的信息获取是个难点,AS没有办法直接读取DEM的文件格式。ArcGIS提供了一个GP工具Sample,对DEM重采样,输出为一个GeodatabseTable表。
Sample工具
目前能够处理dbf格式的本地路径Table表(Tips:测试发现,将dbf文件的后缀改为swf,可以处理虚拟路径),处理dbf的核心程序位于src\org\vanrijkom\dbf。
处理dbf文件
urlloader.load(new URLRequest("E:\\ PaperVision3D\\pv3d-rs-dem.dbf"));var bdfByteArray:ByteArray = urlloader.data as ByteArray;var dbfhdr:DbfHeader = new DbfHeader(bdfByteArray);var vertices:Array = new Array();for( var ii : int = 0; ii < dbfhdr.recordCount; ii++){ var dbfRecord : DbfRecord = DbfTools.getRecord( bdfByteArray, dbfhdr, ii );var vertex:Vertex3D = new Vertex3D(dbfRecord.values.X, dbfRecord.values.Y, dbfRecord.values.ELE); vertices.push(vertex);}
如果要以虚拟路径的方式load,可以将Sample后的Table存储在geodatabase当中,然后导出为XMLRecordset Document,AS处理XM文件就轻松多了。
Export To XML Recordset Document
处理XML文件
urlloader.load(new URLRequest("http://heyb/FlexData/pv3d-ele.xml"));var xml:XML = new XML(e.target.data);var fields:XMLList = xml.Data.Fields.FieldArray.Field;var records:XMLList = xml.Data.Records.Record;var vertices:Array = new Array();for (var ii:int = 0; recordIndex < records.length(); ii++){var recordValues:XMLList = records[recordIndex].Values.Value;var vertex:Vertex3D = new Vertex3D(recordValues[1], recordValues[2], recordValues[3]); vertices.push(vertex);}
②ArcGIS Server服务
同样,影像获取比较简单,mapserver的export方法,可以获取图片的虚拟地址,其它实现类似①。
DEM的信息获取有几个思路:
a、等待rest的支持,如果未来ESRI能够支持rest直接获取dem的信息(比如返回json的字符串),那会简单得多。
b、GP服务的方式,构建一个Sample模型发布成服务。
通过GP服务获取高程信息
var params:Object = new Object();gp.execute(params, new AsyncResponder(onDEMSampleResult, onFault)); var pv:ParameterValue = gpResult.parameterValues[0]; var fs:FeatureSet = pv.value as FeatureSet; var attributes:Array = fs.attributes;var vertices:Array = new Array();for (var recordIndex:int = 0; recordIndex < attributes.length; recordIndex++){var record:Object = attributes[recordIndex];var vertex:Vertex3D = new Vertex3D(record.x, record.y, record.g_g_g2); vertices.push(vertex);}
c、其它,最终DEM的高程信息是用来改变Plane的z坐标的,如果有其它任何方式使得DEM的高程信息被AS很简单地处理,就可以考虑。
其它具体实现参见代码。
功能如图,DEM&RS还具有飞行模式,沿设定飞行路径改变相机参数,拍摄到的场景也会改变:
- ArcGIS Flex API for 3D—DEM&RS
- ArcGIS Flex API for 3D—简介
- ArcGIS Flex API for 3D—Papervision3D
- ArcGIS Flex API for 3D—实现思路
- ArcGIS Flex API for 3D—3D Map Control
- ArcGIS Flex API for 3D(转帖)
- ArcGIS Flex 3D API源码下载
- ArcGIS API for Flex Beta
- ArcGIS API for Flex 概览
- arcgis api for flex学习
- ArcGIS for Flex API官网
- ArcGIS Flex for API一例
- ArcGIS API for Flex入门 - 1.概述
- ArcGIS for Flex API 资料收集
- arcgis api for Flex画贝赛尔曲线
- ArcGIS API for Flex - 搭建环境
- arcgis server api for flex 笔记
- [转载]ArcGIS for Flex API 资料收集
- 浅析Java抽象类和接口的比较
- 现状 心态
- ArcGIS Flex API for 3D—3D Map Control
- GCC的内嵌汇编语法 AT&T汇编语言语法
- adapter模式
- ArcGIS Flex API for 3D—DEM&RS
- 基于IPQAM的VOD低成本方案
- 最近的学习心得
- 目前正在学习PIC18系列 mcu
- 算法
- Tomcat安装与配置
- 在oracle 9i下在线重定义表
- wizd media server for syabas-based players
- MYSQL中的auto_increment_increment和auto_increment_offset