SingThink分享 http://blog.sciencenet.cn/u/ymdushandong

博文

关于代码开发的一些思考

已有 5600 次阅读 2011-12-27 14:12 |个人分类:开发手册|系统分类:科研笔记| 开发

(1)所有代码应尽可能的设想到它的通用性;包括功能的通用性和平台的通用性;尽可能的使用标准C或者C++。少使用MFC里面的类库。
(2)所有代码应尽可能的规范化。
(3)数据处理使用C++,数据显示使用IDL。菜单界面使用VC。少量的数据处理可能使用IDL中的数学工具。
(4)需要开发的标准类库有:
       通用类库:内存管理类,数据读入写出类,C++与IDL数据交换类,字符串处理类,矩阵运算类(一纬卷积,二维卷积,矩阵的加减乘除)。
       辐射专业类库:普朗克公式计算,SAIL模型计算,PROSPECT模型计算,6S模型计算,Modtran模型调用和计算,对波谱库的读取。
       几何专业类库:几何定位类,前方交汇类,经纬度和UTM的转换,数据重采样,仿射变换等。
       图形化显示类库:投影转换,地图叠加,调色板类。
      
数据显示:
   
    角度的显示,图像的波段显示,动画显示,卷帘显示
从应用的角度来看:一个遥感应用程序的数据模型基本上包括:卫星平台、传感器、辐射传输模型、几何投影模型、数据操作的描述,数据显示设定参数等信息。
从计算机技术的角度看:一个遥感应用程序的数据模型基本上包括:内存的开辟和销毁,数据的读取和写出,数据运算的数学库,数据显示等。
底层的开发:(基本上和集成环境开发框架很相似)
***********************
内存管理类:(1)内存的注册与开辟;(2)内存的统计;(3)内存销毁。//这个类声明的对象放在APP的函数体内作为整个程序的全局变量。
数据读写类:(1)文本文件的读写类;(2)二进制文件的读写类;(4)GDAL的读写类;统一封装为一个读写的函数。
数据交换类:(1)C++与IDL的交换;(2)C++与MatCom的交换;(3)内存变量之间的互相赋值机制。
数据运算的数学库:(1)卷积运算;(2)数据内插;(3)矩阵运算等;(4)调用IDL的数学库的封装;(5)调用MatCom的数学库的封装。
逻辑流程控制类:能够进行流程的发起,流程的逻辑判断分支计算等控制。
数据显示类:
应用层的开发:(基本上和模拟通用平台很相似)
***********************
应用层工作的基本过程是:
(1)声明一个遥感应用变量;
(2)初始化应用变量(根据需要的尺寸为变量开辟内存,读取输入的数据);
(3)开始运算(比如:一次查找表生成的运算;一次几何投影的计算;一次数据重采样的运算;一次图像卷积的运算;一次查找表查找结果的反演过程;一次图像的加减乘除运算);
(4)结果的输出和显示。
这里,遥感应用变量是一个结构体,需要能够将所有参与运算的可能出现的变量都包括在内。所有的变量,预先只定义结构,长度由程序定义。


https://wap.sciencenet.cn/blog-98709-522601.html

上一篇:一个软件的开发笔记(2)通用头文件设计
下一篇:在路上
收藏 IP: 159.226.117.*| 热度|

3 黄富强 刘洋 shihanyu

该博文允许注册用户评论 请点击登录 评论 (0 个评论)

数据加载中...

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2024-4-29 21:45

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部