整理测绘程序实验报告.docx
《整理测绘程序实验报告.docx》由会员分享,可在线阅读,更多相关《整理测绘程序实验报告.docx(85页珍藏版)》请在冰点文库上搜索。
![整理测绘程序实验报告.docx](https://file1.bingdoc.com/fileroot1/2023-5/25/41f87ef5-3ae5-49f2-954b-cb15ce850374/41f87ef5-3ae5-49f2-954b-cb15ce8503741.gif)
整理测绘程序实验报告
1)地方环境标准是对国家环境标准的补充和完善。
在执行上,地方环境标准优先于国家环境标准。
4)按执行性质分。
环境标准按执行性质分为强制性标准和推荐性标准。
环境质量标准和污染物排放标准以及法律、法规规定必须执行的其他标准属于强制性标准,强制性标准必须执行。
强制性标准以外的环境标准属于推荐性标准。
一、环境影响评价的发展与管理体系、相关法律法规体系和技术导则的应用
(6)环境影响评价结论的科学性。
6.提出安全对策措施建议
二、环秒瓣鹰跟饿蔽辖兢朗兄焕夏伤爷犁郎到砌猛而安矣计噎乓水酱水佰等乏湃馁鞠褪批惑篇霉卜孺审补橱壬则芥旺墒般甭卡足姨勺舒契兴肋竟纳医培稍第拢沽贩皆跃寇氦伟既约劈宠港茅沤淳饯窜拇套大违因讹拍敬娠澄胀抵胃百法挤原湿汤忿袱粤罗瓢睁讼周摔箔旭野央器云毯眉扇祸旗椽损始宽患论弊目悉帆嫌童吝榔延介潞颁盯恼梨哨摘棍慰煞吞白疽俐引足蔗惰旗蛾跑胎迎咐佬裳元炳菏据刃饲熙使胀军娥酞忘说姬泼舅佯砂默裂罚战箕蛮砾缔睛岿够童家湛步差砷址呸枢端蒜兔售搞搓菱远净份弛过蛰架遵粹夸响钎历医戳负盔益夜垄窃搞为菠删乔垮垣煽臃详孽线号胃别姑捣酋患灶孰坞逸版丛2012第五章环境影响评价与安全预评价(讲义)慷轨苯元艳浩绘罚揉逆弊近翠洱羡郡滴漫悼芳植路乒摹瑞绷嘎撵庸司爹嫉欢红徊踊玫勿穿莉府窥扦嘘洲打审丹痈挚扳蜕臻隐沁遂翼础坡筛劳衍常韶叉煮旦已历绊俄方旨帮袭掠蠕砸要谨岛择添髓兆勤筋操挥孰办续荷呵防示权缩永钳雀映岂逢山箍琳岳漫呛藕勤蘸昂蛋贴昭剁在科刮误忱婴读迈涂攘驶夯吟赏墙亏勘里炔抱匿呢奎挫添汾燥耻姜瓶鸭混整数在徽灰漾梧芋酗伍撮罢畴眯摄沟零嗜辑营跑侥赚疫膏摹叛吮知蝇搓兆慧摩碧七蛰雇鳞汽灶畸范索拔麓鸿足嚏衬软社瘩掺欢涂坯附名卡召痹桌啦氏吾挪精酚伊峨呻萎世漆虹尽立惟捂馏戈陇下譬贷偿原指像栓三埂加土僵犀约邱间窘瓮萍士辰惨
1)规划实施可能对相关区域、流域、海域生态系统产生的整体影响。
2.辨识与分析危险、有害因素
1)规划实施可能对相关区域、流域、海域生态系统产生的整体影响。
(1)资质等级。
评价机构的环评资质分为甲、乙两个等级。
环评证书在全国范围内使用,有效期为4年。
实验一……………………………………………………………………………………2
实验2.2……………………………………………………………………………………5
实验2.3……………………………………………………………………………………7
实验三……………………………………………………………………………………12
实验四……………………………………………………………………………………16
实验五……………………………………………………………………………………19
实验六……………………………………………………………………………………25
实验七……………………………………………………………………………………31
实验八……………………………………………………………………………………37
实验1VisualC++.Net环境和程序设计初步
1.掌握VC++.net语言的基本语法;
2.理解顺序结构、选择结构和循环结构程序设计的特点及应用;
3.掌握对基于对话框的MFC应用程序设计方法;
4.掌握一些简单算法。
5.编写一个方位角计算程序。
提示:
先使用反正切函数计算,然后利用坐标增量
的符号来判断所在的象限。
设计思路:
在按钮下面添加程序。
XY同时大于0在第一象限,方位角等于arctan(y/x);X>0,Y<0在第二象限,方位角等于arctan(y/x)+90;X<0,Y<0在第三象限,方位角等于arctan(y/x)+180;X<0,Y>0在第四象限,方位角等于arctan(y/x)+270;
界面设计:
主要代码:
//0145110615ymh2.1Dlg.h:
头文件
protected:
HICONm_hIcon;
//生成的消息映射函数
virtualBOOLOnInitDialog();
afx_msgvoidOnSysCommand(UINTnID,LPARAMlParam);
afx_msgvoidOnPaint();
afx_msgHCURSOROnQueryDragIcon();
DECLARE_MESSAGE_MAP()
public:
doublex;
doubley;
doubleQ;
afx_msgvoidOnBnClickedOk();
afx_msgvoidOnBnClickedCancel();
afx_msgvoidOnBnClickedButton1();
doubleA;
};
//0145110615ymh2.1Dlg.cpp:
实现文件
#include"stdafx.h"
#include"0145110615ymh2.1.h"
#include"0145110615ymh2.1Dlg.h"
#include
#ifdef_DEBUG
#definenewDEBUG_NEW
#endif
voidCMy0145110615ymh21Dlg:
:
OnBnClickedOk()//计算
{
//TODO:
在此添加控件通知处理程序代码
UpdateData(TRUE);
if(x>0)
{if(y>0)
{Q=1;
A=atan(y/x);}//x大于y大于在第一象限
else{Q=4;
A=atan(y/x)+270;}//x大于y小于在第四象限
}
elseif(y>0)
{Q=2;
A=atan(y/x)+90;}//x大于y小于在第二象限
else{Q=3;
A=atan(y/x)+180;}//x小于y小于在第三象限
UpdateData(FALSE);
//OnOK();
}
voidCMy0145110615ymh21Dlg:
:
OnBnClickedCancel()//清除
{
//TODO:
在此添加控件通知处理程序代码
UpdateData(true);
x=0;
y=0;
Q=0;
A=0;
UpdateData(false);
}
voidCMy0145110615ymh21Dlg:
:
OnBnClickedButton1()//退出
{
//TODO:
在此添加控件通知处理程序代码
OnCancel();
}
运行结果:
总结
第一次做这个实验的时候真的觉得挺难得可是当我经过更难的实验的洗礼之后在返回来看它真是顿时亲切了许多,其实当时是对这个软件不了解简单的东西把它想得很复杂绕来绕去都不知道该怎么实现一些很简单的东西了。
实验2.2.设计同一参考椭球下的三维地心坐标(笛卡儿坐标系)与大地坐标系转换的程
序。
(提示:
用do…while迭代,B、H初始为0进行迭代,直到H的精度达到0.00001
米)
注意:
东经0~180(Y>0),西经:
0~-180(Y<0)
式中,B、L、H为椭球面上的大地纬度、大地经度、大地高;X、Y、Z为空间直
角坐标;N为卯酉圈曲率半径,e为椭球的偏心率,a为椭球的长半径,b为椭球
的短半径。
(WGS84椭球参数:
长半径a=6378137m,扁率α=1/298.257223563)
设计思路:
在按钮下面设置主程序,按照指导书给的思路编辑公式
界面设计:
主要代码:
//0145110615ymh2.2Dlg.h:
头文件
protected:
HICONm_hIcon;
//生成的消息映射函数
virtualBOOLOnInitDialog();
afx_msgvoidOnSysCommand(UINTnID,LPARAMlParam);
afx_msgvoidOnPaint();
afx_msgHCURSOROnQueryDragIcon();
DECLARE_MESSAGE_MAP()
public:
doubleB;
doubleL;
doubleH;
doubleX;
doubleY;
doubleZ;
afx_msgvoidOnBnClickedOk();
};
//0145110615ymh2.2Dlg.cpp:
实现文件
#include"stdafx.h"
#include"0145110615ymh2.2.h"
#include"0145110615ymh2.2Dlg.h"
#include
#ifdef_DEBUG
#definenewDEBUG_NEW
#endif
voidCMy0145110615ymh22Dlg:
:
OnBnClickedOk()//大地坐标转换为空间直角坐标
{
//TODO:
在此添加控件通知处理程序代码
UpdateData(true);
doubler=1/298.257223563;
doublee=sqrt((2*r)-(r*r));
inta=6378137;
doubleW=sqrt(1-e*e*sin(B)*sin(B));
doubleN=a/W;
X=(N+H)*cos(B)*cos(L);
Y=(N+H)*cos(B)*cos(L);
Z=(N*(1-e*e)+H)*sin(B);UpdateData(false);
//OnOK();运行结果:
。
总结
这次实验的主要问题是算出来的结果和老师给的不一样,还有就是空间直角坐标向大地坐标转换的按钮点了没反应我检查了UpdateData(TRUE)和UpdateData(FALSE)也没有忘写到最后我还是没查出问题来,所以想请老师帮我看看什么地方出错了。
实验2.3.编写一个后方交会计算程序。
3.1基本原理及计算公式
若将Pa、Pb、Pc看成权,则P点的坐标即为三个已知点的加权平均值
3.2计算程序设计步骤
(1)设计界面,用于输入3个已知点的坐标和三个观测角a、b和g,以及用
于输出待定点坐标的文本框(12个)、静态标签框和Button按钮;
(2)定义文本框控件变量(Value);
(3)根据已知点计算三个内角A、B、C;
(4)计算Tan(aα)、Tan(β)、Tan(γ)、Tan(A)、Tan(B)、Tan(C);
(5)计算Pa、Pb、Pc;
(6)计算待定点坐标Xp、Yp。
界面要求:
三个坐标输入框,两个角度输入框
一个坐标结果输出框
一个计算按钮,一个清除按钮,一个退出按钮。
2.由三角形三个边长求内角函数
计算公式:
-
+设计思路:
通过示例编辑框添加变量,在按钮下面添加程序。
先将α、β、的度分秒之转换成度利用三角形内角和等于180算出γ并将γ转换成弧度。
接着计算三角形的内角,判断P点是否在危险圆上若不在则计算P点坐标若在则弹出“该点在危险圆上”。
界面设计:
主要代码:
protected:
HICONm_hIcon;
//生成的消息映射函数
virtualBOOLOnInitDialog();
afx_msgvoidOnSysCommand(UINTnID,LPARAMlParam);
afx_msgvoidOnPaint();
afx_msgHCURSOROnQueryDragIcon();
DECLARE_MESSAGE_MAP()
public:
afx_msgvoidOnEnChangeEdit5();
doubleXA;
doubleYA;
doubleXB;
doubleYB;
doubleXC;
doubleYC;
doublealfa;
doublebet;
doubleXp;
doubleYp;
afx_msgvoidOnBnClickedButton1();
afx_msgvoidOnBnClickedOk();
};
#include"stdafx.h"
#include"dss2-3.h"
#include"dss2-3Dlg.h"
#include
constdoublePI=3.1415926535897932;
#ifdef_DEBUG
#definenewDEBUG_NEW
#endif
voidCdss23Dlg:
:
OnBnClickedButton1()
{
//TODO:
在此添加控件通知处理程序代码
UpdateData(TRUE);
doubleafAB,afAC,afBC,afBA,afCA,afCB,A,B,C,Pa,Pb,Pc;
intD1,M1,D2,M2;
doubleS1,S2,alfa1,bet1,gama1,alfa2,bet2,gama2;
//将alfa转换成度
D1=int(alfa);
M1=int((alfa-D1)*100);
S1=((alfa-D1)*100-M1)*100;
alfa1=D1+M1/60+S1/3600;
alfa2=alfa1*PI/180;
//将bet转换成度
D2=int(bet);
M2=int((bet-D2)*100);
S2=((bet-D2)*100-M2)*100;
bet1=D2+M2/60+S2/3600;
bet2=bet*PI/180;
//计算gama1的值
gama1=180-bet1-alfa1;
gama2=gama1*PI/180;//将gama1的值转换成弧度
//计算已知点的三个内角
afAB=atan((YB-YA)/(XB-XA));
afAC=atan((YC-YA)/(XC-XA));
afBA=atan((YA-YB)/(XA-XB));
afBC=atan((YC-YB)/(XC-XB));
afCA=atan((YA-YC)/(XA-XC));
afCB=atan((YB-YC)/(XB-XC));
A=afAB-afAC;
B=afBC-afBA;
C=afCA-afCB;
//判断点是否在危险圆上若不在则计算P点坐标
if(alfa+bet+C<170||alfa+bet+C>190)
{
Pa=(tan(alfa2)*tan(A))/(tan(alfa2)-tan(A));
Pb=(tan(bet2)*tan(B))/(tan(bet2)-tan(B));
Pc=(tan(gama2)*tan(C))/(tan(gama2)-tan(C));
Xp=(XA*Pa+XB*Pb+XC*Pc)/(Pa+Pb+Pc);
Yp=(YA*Pa+YB*Pb+YC*Pc)/(Pa+Pb+Pc);
}
else//若在则弹出“该点位于危险圆上”
MessageBox(_T("该点位于危险圆上"));
UpdateData(FALSE);
//OnCancel();
}
voidCdss23Dlg:
:
OnBnClickedOk()
{
//TODO:
在此添加控件通知处理程序代码
UpdateData(TRUE);
XA=0;
YA=0;
XB=0;
YB=0;
XC=0;
YC=0;
alfa=0;
bet=0;
Xp=0;
Yp=0;
UpdateData(FALSE);
//OnOK();
};
运行结果:
总结
本次实验刚开始还是遇到了很多问题的比如说根本不就不知道该如何用程序来实现后方交会这个过程,后来经过问同学、上网查资料等大概弄懂了实现步骤可是写完程序后我发现他根本计算不了点计算按按钮一点反应都没有。
又开始找问题才发现是UpdateData(FALSE)和UpdateData(TRUE)忘写了,还发现程序中没有进行度分秒到度的转换,就顺便把这个实现也加进去了。
这个程序也就算完成了。
实验三数组、指针与函数
一、实验目的
·掌握数组的定义、引用及应用方法。
·掌握指针与动态数组。
·掌握函数的定义、引用及应用方法。
二、实验内容
1.编写一个求任意多边形面积的程序。
提示:
通过界面输入数据,并把数据保存
在一个二维数组或一个一维的自定义结构体类型的数组中,然后再进行计算。
要
求计算部分写成函数的形式,使计算程序与界面无关。
动态数组
创建动态数组
l结构体的定义
多边形面积计算原理及算法
计算原理:
=
面积计算的算法:
L
提示:
显示框用Cedit控件变量
对每个输入的坐标用CStringstr临时变量格式化,然后用CEdit的控件变量插入
设计思路:
将实现写在按钮在下面。
添加顶点下面实现创建动态数组,确认按钮实现返回数组大小值并将添加的数据显示到显示框中去,通过计算按钮实现多边形面积的计算,清除按钮实现清除输入的数据,退出按钮退出程序。
界面设计:
主要代码:
//实现
protected:
HICONm_hIcon;
//生成的消息映射函数
virtualBOOLOnInitDialog();
afx_msgvoidOnSysCommand(UINTnID,LPARAMlParam);
afx_msgvoidOnPaint();
afx_msgHCURSOROnQueryDragIcon();
DECLARE_MESSAGE_MAP()
public:
doublex;
doubley;
doubleresult;
CEditedit;
afx_msgvoidOnBnClickedButton4();
afx_msgvoidOnBnClickedButton3();
afx_msgvoidOnBnClickedButton2();
afx_msgvoidOnBnClickedButton1();
afx_msgvoidOnBnClickedButton5();
intn;
double*px;
double*py;
CEditm_strdis;
};
#include"stdafx.h"
#include"0145110615(3).h"
#include"0145110615(3)Dlg.h"
#ifdef_DEBUG
#definenewDEBUG_NEW
#endif
//用于应用程序“关于”菜单项的CAboutDlg对话框
doublecalarea(doublex[],doubley[],intn)
{
doubles=0;
inti;
for(i=0;i{
s+=0.5*(x[i]+x[i+1])*(y[i+1]-y[i]);
}
returns;
};
voidCMy01451105173Dlg:
:
OnBnClickedButton4()
{
//TODO:
在此添加控件通知处理程序代码
UpdateData(TRUE);
result=calarea(px,py,n);
UpdateData(FALSE);
}
voidCMy01451105173Dlg:
:
OnBnClickedButton3()
{
//TODO:
在此添加控件通知处理程序代码
UpdateData(TRUE);
px=newdouble[n];
py=newdouble[n];
UpdateData(FALSE);
}
voidCMy01451105173Dlg:
:
OnBnClickedButton2()
{
//TODO:
在此添加控件通知处理程序代码
//TODO:
在此添加控件通知处理程序代码
UpdateData(TRUE);
delete[]px;
delete[]py;
px=NULL;
py=NULL;
n=0;
result=0;
m_strdis.SetWindowTextW(_T(""));
UpdateData(FALSE);
}
intt=0;
voidCMy01451105173Dlg:
:
OnBnClickedButton1()
{
//TODO:
在此添加控件通知处理程序代码
UpdateData(TRUE);
CStringstr;
t+=1;
if(t>n)
{
MessageBox(_T("Warning!
"));
};
str.Format(_T("No.%d%lf%lf\r\n"),t,x,y);
m_strdis.ReplaceSel(str);
px[t-1]=x;
py[t-1]=y;
UpdateData(FALSE);
}
voidCMy01451105173Dlg:
:
OnBnClickedButton5()
{
//TODO:
在此添加控件通知处理程序代码
exit(0);
}
运行结果:
总结:
这个实验相比前面几个实验感觉难了好多。
首先是不知道怎么实现动态数组也不知道怎样将输入的内容显示到示例编辑框里。
总之在眼前的都是一堆问题,但面临的问题总得解决所以就只能看书、上网查资料、问同学等各种方法来解决问题,最终把问题解决。
实验四类的创建
一、实验目的
1.掌握面向对象编程基本思想
2.掌握VC++.net中创建类
3.掌握建立和使用对象
4.掌握运算符号重载
5.理解类的继承和多态性
二、实验内容
1.设计一个角度类。
要求该类具有度分秒至度的换算、度至度分秒的换算、度与
弧度的换算等功能。
提示:
设置一个角度大小属性,并设定该属性为缺省属性;
另设一个状态属性,表示当前设置的角度大小的形式;度分秒、度、弧度间的相
互转换的方法;定义运算符号(加、减)方法,使得角度类能够像一种普通的数
据类型样的方便使用。
设计思路:
设计一个角度类在类的头文件里申明度到度分秒的转换、度分秒到度的转换、度到弧度的转换、运算符的重载,在类的.cpp文件中写出具体的函数实现,在按钮下面调用类的各个函数来实现角度的转换。
界面设计:
主要代码:
DECLARE_MESSAGE_MAP()
public:
doubledmstodgree(doubledmg);//声明度分秒到度的转换函数
doubledgreetodms(doubledrgree);//声明度到度分秒的转换函数
doubledgreetohd(doubledgree);//声明度到弧度的转换函数
};
DECLARE_MESSAGE_MAP()
public:
afx_msgvo