- 1、本文档共39页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
北大地理信息系统教程第七章
PAGE
PAGE 216
第七章 地理信息系统的开发与应用
对从事地理信息系统研究和应用的工程技术人员而言,开发和设计地理信息系统具有两个方面的含义:(1)从底层开发一个通用的地理信息系统,即通用平台的开发;从底层开发一个专用的地理信息系统。实际上,在专用的地理信息系统功能中应包括通用地理信息系统的所有命令。(2)在商业化地理信息系统(主要是通用的地理信息系统开发平台)的基础上进行二次开发,完成专用地理信息系统的开发任务。
7.1 地理信息系统通用功能的实现
下面结合VC++介绍从底层开发地理信息系统的通用功能需要完成的部分工作及技术方法(在前面的章节中已经涉及到的内容不作详细介绍)。
1.程序设计和开发人员应注意的问题
(1)一切工作都要以总体设计为依据。在进行系统变量的设计时,应避免与后期编程中可能出现的变量相同。解决方法可以采用如下方法:在具体的变量前加一具有特定含义的前缀,如sys_color,sys_ltype。变量的名称一定合乎英语或中文的拼写习惯。
(2)撰写详细的文挡,这又包括详细的文字描述材料和对程序行
的注记。对程序行的注记,建议用汉字,不要用英文。
对程序行的注记十分重要,这不仅包括子模块的功能,变量的
含义,更重要的是对程序行功能的描述;
(3)形成良好的编程习惯。这里主要指程序行结构的对称。
//本程序的功能是修改图形实体的颜色
void CWindow::mod_color() { Cdialog *pDlg;
char huge **p_set,huge *p[1],huge *p1,huge *p2,*mao,*chr;
int ii,i,j,k,n,color,cel_number;
int id[6],**id_set,type,head_long,total_long,ltype;
double x0,y0,r,xmi,ymi,alf,high,xy[2];
int k1,k2,k3,k4,k5,k6,k7,k8;
int m1,m2,m3;
long n1,n2,n3,n4;
int id_hz,id_ch,x00,y00;
id_hz=id_hz_style;//保存已有的字体,颜色等参数
id_ch=id_ch_style;
color=cadcolor;
mao=new char[2];
if(mao==NULL) exit(1);
p_set=(char huge **)_halloc(2000,1);//记录图形实体在内存中的初始位置
if(p_set==NULL) exit(1);
id_set=i_dim_alloc(2000,6); //记录图形实体的类型,颜色,线型等参数
strcpy(ex_string,请选择将被修改颜色的图形实体(窗口方式请按w键)!);
//利用鼠标通过交互式的方式选中图形实体。这里cel_number为得到的图形实体数
cel_number=find_object(p_set,id_set,ex_string);
if(cel_number0){//没有选中图形实体或中断的标志
if(cel_number==-30000) cel_number=0;//中断标志,如敲 ESC键
k=0;
cel_number=-cel_number;
}
else k=1;//选中图形实体的标志
*mao=-1;
if((cel_number0)(k==1)){ //满足修改图形实体颜色的条件
i=id_set[0][1]; //得到图形实体的颜色
if(i0) i=256+i; //保证为256色
sprintf(ex_string,%d,i); //把整数转换为字符串
id_dlg=60; //对话框的代码
pDlg=new CAppDialog(SET_COLOR,NULL);//通过对话框得到修改后的颜色代码
if(pDlg-DoModal()==IDOK){
i=strlen(ex_string);
if(i0) cadcolor=atoi(ex_string);//颜色代码
else k=0;
}
else{
k=0;//没有得到新的颜色代码的标志
文档评论(0)