遥感二次开发培训.ppt_第1页
遥感二次开发培训.ppt_第2页
遥感二次开发培训.ppt_第3页
遥感二次开发培训.ppt_第4页
遥感二次开发培训.ppt_第5页
已阅读5页,还剩40页未读 继续免费阅读

下载本文档

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

文档简介

1、MAPGIS遥感平台二次开发,中地数码集团 遥感产品研发部 彭攀 2011.08,1. MAPGIS遥感平台二次开发体系介绍,背景基础平台VS专业需求,解决方法:便捷的二次开发,问题:再完善的基础平台也不足以解决所有专业的不同需求,背景一般软件的二次开发方式及特点,方式1:应用程序接口(C+/API),环境单一,背景一般软件的二次开发方式及特点,方式2:基于COM的组件和控件,背景软件二次开发方式的发展趋势,搭建式 可视化搭建 应用系统及 业务流程,搭建式ERDAS、PCI,MAPGIS遥感平台二次开发体系,MAPGIS遥感平台二次开发功能层次,实现多粒度的二次开发,MAPGIS遥感平台二次开

2、发模式,C/C+ API,COM接口与控件,传统的遥感平台 二次开发模式,作为最传统的开发模式,遥感平台二次开发的C/C+API是专门为VC开发者提供的一套二次开发接口。 特点如下: 1)功能完备 遥感平台C/C+API/Object的方式提供了完善的遥感基本处理功能,包括:影像数据管理存储,通用数据转换,多源影像通用分析处理等。 2)多粒度封装从基本函数级到处理功能级再到遥感工具集,以多种粒度提供二次开发API。 开发语言:C/C+ API主要使用VC进行开发,开发语言与开发环境受到了很大的限制 需配置开发环境:包含头文件,包含库等。,1. C /C+ API开发,2. 组件式二次开发,组件

3、介绍 组件对象模型(Components Object Model,COM)是windows对象的二进制标准。为WINDOWS提供了统一的,面向对象的,可扩充的通讯协议。这意味着描述一个对象的可执行代码可以被其它对象执行。即使两个对象使用不同语言来编写的,他们可以用COM标准来进行通信。 解决问题:跨语言、跨平台。 开发语言: COM开发能满足各种语言开发的需求,支持C#.net、VC.net、VB.net、ASP.net、VC、VB、Delphi等通用开发工具 优点:比如C#开发,环境设置简单,只需添加引用即可,不像C+那样需要配置开发环境!,2.组件式二次开发,3.插件式开发,统一的插件标

4、准 统一功能插件拆/卸管理 即插即用,4.可视化搭建式开发,面向应用的空间建模 开发便捷,零代码编程 无人职守批量处理,遥感建模工具,5.导航式开发(配置式开发),灵活配置,迅速搭建面向应用的整体解决方案; 柔性设计,系统能适应需求的变化快速进行调整。 适合技术支持人员进行业务系统或解决方案的配置,5.导航式开发流程,新建解决方案 数据整理 数据配置 功能配置 预览保存,遥感几种二次开发模式比较,C/C+ API与COM开发比较 相同点: 同属传统的遥感应用二次开发模式; 都提供不同层次、丰富的功能接口; 不同之处: 开发语言上,C/C+ API主要使用VC进行开发,开发语言与开发环境受到了很

5、大的限制;COM开发能满足各种语言开发的需求,支持C#.net、VC.net、VB.net、ASP.net、VC、VB、Delphi等通用开发工具。,插件式、搭建式、导航式开发比较,三者代表了目前遥感应用二次开发的发展趋势。 插件式开发 MAPGIS-RSP本身由功能插件组成,如果平台框架及其功能比较好的满足专业需求,还需融入与自身业务相关的功能时,插件式开发模式最为适合。 搭建式开发 在开发“小而专”的遥感处理过程时非常有效,特别是在解决遥感应用过程中的大数据量批处理方面,搭建无人职守的遥感工作流,简单、快捷、高效。 导航式开发(配置式) 支持依据行业的标准建立功能与界面相分离的具有高度可定

6、制性的应用系统解决方案,适合解决面向行业应用的较大型遥感影像处理与分析系统的开发。,导航式开发与组件开发比较,导航式优点: 无需关心系统框架 无需复杂编码 扩展功能需要编码开发插件,2. MAPGIS遥感平台二次开发一些基本概念,遥感二次开发的一些基本概念,栅格数据集URL格式 GDBP:/MapGisLocal/Sample/ras/dem 栅格目录URL格式 GDBP:/MapGisLocal/Sample/rcat/111 影像和波段的关系 一个影像中可以含有多个波段 栅格目录和栅格数据集的关系 一个栅格目录中含有多个栅格数据集,遥感二次开发的一些基本概念,空间分辨率 空间分辨率(Spa

7、tial Resolution),又称地面分辨率,栅格数据中也称为 像元大小,是图像中可辨认的临界物体空间几何长度的最小极限,即对细微结构的分辨率,也就是单个像元所对应的地面面积大小,单位为米或千米。如美国QuickBird商业卫星一个 像元相当于地面面积0.61m0.61m,称其空间分辨率为0.61m;Landsat/TM多波段影像一个像元约相当于地面面积28.5m28.5m,可简称为空间分辨率30m。 显然,表示同样大小的地表,高空间分辨率的影像要比低空间分辨率的影像所需的 像元数要多,从而可以显示出同样面积的地表的更多信息和细节。因而,空间分辨率越高,所存储的地表细节越多,但是所需的存储

8、空间也就越大,同时也意味着需要更多的处理时间;相反,空间分辨率越低,反映的地表信息越粗糙,但存储空间较小,而且处理速度较快。所以在选择 像元大小,即空间分辨率时,要兼顾实际应用对信息详细程度的要求以及对存储和数据处理时的处理时间和速度的需求 。,遥感二次开发的一些基本概念,像元值 栅格中的每个 像元是栅格数据的最基本的信息存储单元,其坐标位置用行号和列号确定,实体的位置关系隐含在行列号之中。每个像元都有一个属性值,属性值反映了整个栅格数据集中 像元位置处的现象,比如卫星影像和航空相片中的光谱值反映了光在某个波段的反射率;DEM栅格的高程值表示了平均海平面之上的地表高程;由DEM栅格生成的坡度图

9、,坡向图和流域图的 像元值分别代表了其坡度,坡向和流域属性;土地利用分类图中的类别值代表了土地的类型,如耕地、林地、草地等。另外,像元值可以是正整数或负整数,也可以是浮点数。离散数据一般用整数值来表示,而连续数据多用浮点数来表示。当 像元值缺失时,一般用“无效值”来作为像元的值。,遥感二次开发的一些基本概念,影像金字塔 影像金字塔结构指在同一空间参照下,根据用户需要以不同分辨率进行存储与显示,形成分辨率由粗到细、数据量由小到大的金字塔结构。影像金字塔结构用于图像编码和渐进式图像传输,是一种典型的分层数据结构形式,适合于栅格数据和影像数据的多分辨率组织,也是一种栅格数据或影像数据的有损压缩方式。

10、 影像金字塔是栅格数据集缩小的分辨率图像的集合。影像金字塔技术是通过影像重采样方法,生成一系列不同分辨率的影像图层,每个图层分割存储,并建立相应的空间索引机制,从而提高缩放浏览影像时的显示速度。影像金字塔的建立,不仅可以减小影像传输的数据量,还可以优化显示性能。,遥感二次开发的接口层次(C#),栅格数据管理组件 mc_basRaster7.dll 核心接口 栅格数据集 IRasterDataSet 栅格波段 IRasterBand 栅格目录 IRasterCatalog,遥感二次开发的接口层次(C#),栅格分析之影像分析mc_ImageAnalyse7.dll 核心接口 影像分类 IImgCl

11、ass 影像滤波 IImgFilter 影像转换 IImgTrans,3. MAPGIS遥感平台二次开发常用接口,遥感影像处理的一般流程,打开原始待处理影像 获取原始影像的有用信息(如行列值、像元值等) 创建结果空影像(只包含影像行列值、数据类型等基本信息) 根据一定的算法、公式等处理将原始影像中的有用信息(主要是像元值数组)经过一定的处理或运算后写入到上一步已创建的结果影像中去。这一步我们通常已经将遥感常用的一些算法封装成API,在做二次开发时一般只需调用算法API处理函数即可,如果需要进行相关的扩展功能开发处理可自己实现相应的算法 关闭原始影像和结果影像(注意:结果影像必须关闭,否则数据不

12、能回写),遥感影像处理的一般流程,上述遥感影像处理的处理流程适用于遥感影像的各个层面的二次开发,只是调用的具体方法有所区别,下面将具体就C+/VC和组件COM层两方面来介绍具体的过程及相关的函数调用,VC开发环境配置,VS2005开发环境设置,包括设置包含头文件,引用链接库,调试版本等! 详见 MapGIS-RSP VC+开发环境配置说明.doc,VC开发基本API介绍,需要用到的基本头文件 #include”msrsdataioapi.h” /打开影像 MSRSDatasetH msRSOpen(const char *pszFilename, MSRSAccess eAccess, voi

13、d *pRSGDB=NULL); /参数说明: const char *pszFilename 为影像文件的路径名或为栅格数据集的名字 MSRSAccess eAccess 为影像读写方式MS_ReadOnly只读,MS_Update读写 void *pRSGDB 如果是本地文件则为空,GDB中栅格数据集则为GDB对象连接信息指针 /关闭影像 void msRSClose(MSRSDatasetH hDS);,VC开发基本API介绍,/创建影像 MSRSDatasetH msRSCreate(MSRSDriverH hDriver, const char* pszFilename, int n

14、XSize, int nYSize,int nBands, MSRSDataType eDataType, char* papszOptions, void*pRSGDB=NULL); /参数说明: MSRSDriverH hDriver 影像文件驱动句柄,可通过msRSGetDriverByName获取 const char*pszFilename 影像全路径名或MapGIS7GDB中栅格数据集名称 int nXSize,nYSize,nBands 影像的列数,行数,波段数 MSRSDataType eDataType 影像像元类型 char*papszOptions 扩展参数表项指针,一般

15、传NULL void*pRSGDB 本地文件为空,GDB中栅格数据集则为GDB对象连接信息指针 /由影像类型名获取数据驱动 MSRSDriverH msRSGetDriverByName(const char * pszFormat);,VC开发基本API介绍,/影像波段数据读写 long msRSRasterIO(MSRSRasterBandH hBand, MSRSRWFlag eRWFlag,int nDSXOff, int nDSYOff, int nDSXSize, int nDSYSize, void *pData, int nBufXSize, int nBufYSize,MSR

16、SDataType eBufType, int nPixelSpace, int nLineSpace); 要跟金字塔操作一起使用,读写前必须打开金字塔 /打开金字塔层,影像数据读/写前必须打开,PyLayerNo从开始 long msRSOpenPyramidLayer(MSRSDatasetH hDS, short PyLayerNo); /关闭金字塔层 long msRSClosePyramidLayer(MSRSDatasetH hDS);,C#开发基本接口介绍,K9组件 组件库: mc_basRaster7.dll 影像栅格数据存储库 mc_ImageAnalyse7.dll 影像分

17、析功能库 mc_RasterAnalyse7.dll 栅格分析功能库 IRasterDataSet接口中经常会用到的方法 : 打开影像 创建影像 关闭影像 影像读写 影像运算,C#开发基本接口介绍,K9组件打开影像 打开影像,分本地和GDB中的栅格数据集 mcRasterDataSet.Open(object RdsVal, meRasterAccess Access); 参数说明: object RdsVal 文件路径或URL meRasterAccess Access 读写方式 mcRasterDataSet Ras = new mcRasterDataSet(); 1) 本地 /Ras.

18、Open(“绝对路径”,”读写方式”) 如:Ras.Open(E:DATAodense_height.tif“, meRasterAccess.meRead); 2) GDB栅格数据集常用接口介绍 /Ras.Open(“URL”,”读写方式”),URL有规范 如:Ras.Open(“GDBP:/MapGISLocalSamplerasTest”, meRasterAccess.meRead);,C#开发基本接口介绍,K9组件创建影像 影像创建,分本地和GDB中的栅格数据集 mcRasterDataSet.Create(int hDriver, string Name, int xSize, i

19、nt ySize, int bands, meRasterDataType Type, mcGDataBase GDB); 参数说明: int hDriver 数据格式驱动 string Name:本地的为绝对路径名,GDB数据库中的为名字 int xSize, int ySize, int bands,影像列值,行值,波段数 mcGDataBase GDB 本地为空,栅格数据集的话传GDB对象 1)本地 hDriver = Ras.GetDriverByName(“MAPGISMSI”); Ras.Create(hDriver,”E:DataNewCreate.msi”,500,500,3,

20、 meRasterDataType. meByte,null );,C#开发基本接口介绍,K9组件创建影像 2)GDB中的栅格数据集 mcRasterDataSet Ras = new mcRasterDataSet(); mcGDBServer Svr = new mcGDBServer(); mcGDataBase gdb = new mcGDataBase(); Svr.Connect(MapGISLocal, , ); gdb = svr.get_gdb(Sample); hDriver = Ras.GetDriverByName(“MAPGIS7MSI”); Ras.Create(h

21、Driver,”NewCreate”,500,500,3, meRasterDataType. meByte, gdb );,C#开发基本接口介绍,K9组件影像读写 IRasterBand 1)获取影像像元值 int GetOneCell(int Row, int Col, out double CellVal); 2)设置影像像元值 int SetOneCell(int Row, int Col, double CellVal); 注意:在调用影像读写接口时要调用相应的金字塔打开和关闭接口 int OpenOverView(short PyLayerNo); int CloseOverView();,C#开发基本接口介绍,K9组件栅格目录相关接口 IRasterCatalog /根据名字获取栅格目录ID int GetCatalogID(mcGDataBase ptGDB, string CatalogName, out int CatalogID); /通过URL打开栅格目录 int OpenByURL(string URL); /获取栅格目录条目数 Int GetItemNum(out

温馨提示

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

评论

0/150

提交评论