版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、 地图学实验报告 课程: 地图学 班级: * 学号: * 姓名: * 实验目的及要求:1.利用计算机编程实现地图图幅编号的计算。2.深化对地图图幅编号计算的原理,地图图幅编号的计算的理解,并掌握其计算步骤。3.提高自己的计算机语言编程能力。4.实验完成后提交报告,实验总结,编写代码,要独立编程,程序稳定可行。工具:Visual C+ 6.0实验感悟: 此次实验,首先认真学习了书中对地图分幅编号的计算。首先在数据输入的编辑框中添加了判断语句,以确保编辑框中输入数据的可用性。在旧的比例尺分幅计算中,有时W计算完成后需要转换成英文大写或小写字母,此处运用了ASCII码进行了转换。最后根据课件内容对程
2、序进行了调试、验证。通过这次试验,熟悉了新旧两种地图分幅编号的计算。 程序运行结果:程序代码:/地图分幅的计算void CMyDlg:OnCal() / TODO: Add your control notification handler code hereUpdateData(); /字符转换int LDeg = atoi(m_LDeg.Right(m_LDeg.GetLength()-1);double LMin = strtod(m_LSec,NULL);int BDeg = atoi(m_BDeg);double BMin = strtod(m_BSec,NULL);int inde
3、x;index = (CComboBox*)GetDlgItem(IDC_COMBO1)->GetCurSel()+1;int i,j,c,d,W,V,n;/W所求比例尺图幅代号 n代表划分为该比例尺后的列数 c列号 d行号CString C,D;double l,b;/l,b分别表示经差和纬差i = (int)(BDeg/4.0)+1;CString s = m_LDeg.Left(1);CString s1;/判断东经西经if(s = "E" | s = "e")j = (int) (floor(LDeg/6.0)+31;else if(s =
4、 "W" | s = "w")j = 31-(int)(floor(LDeg/6.0);elseMessageBox("输入经度错误", "Error", MB_ICONERROR );/1:100万基本比例尺图幅计算s = ""s.Format(_T("-%d"),j); Old = (int)(i+64); Old+=s; New = (int)(i+64); s.Format(_T(" %d"),j); New+=s;/1:10万基本比例尺计算 V=
5、133;l=30.0*60;b=20.0*60;n=12;W = V-(int)(int)(BDeg*3600+BMin*60)%(4*3600)/(int)b)*n +(int)(int)(LDeg*3600+LMin*60)%(6*3600)/(int)l);s1.Format(_T("-%d"),W);Old1=Old+s1;switch(index) case 1:/1:100万 m_Old=Old; m_New=New; break; case 2:/1:50万 V=3; l=3*3600.0; b=2*3600.0; n=2; /旧的分幅编号 W = V-(in
6、t)(int)(BDeg*3600+BMin*60)%(4*3600)/(int)b)*n +(int)(int)(LDeg*3600+LMin*60)%(6*3600)/(int)l); s = (int)(W+64); Old += "-" m_Old=Old+s; /新的分幅编号 c=(int)(4*3600/b)-(int)(int)(BDeg*3600+BMin*60)%(4*3600)/b); d=(int)(int)(LDeg*3600+LMin*60)/(6*3600)/l)+1; C.Format(_T("%.3d"),c); D.Fo
7、rmat(_T("%.3d"),d); m_New = New + " B"+C+D; break; case 3:/1:25万 V=13; l=1.5*3600; b=1.0*3600; n=4; /旧的分幅编号 W = V-(int)(int)(BDeg*3600+BMin*60)%(4*3600)/(int)b)*n +(int)(int)(LDeg*3600+LMin*60)%(6*3600)/(int)l); s.Format(_T("-%d"),W); m_Old=Old+s; /新的分幅编号 c=(int)(4*3600
8、/b)-(int)(int)(BDeg*3600+BMin*60)%(4*3600)/b); d=(int)(int)(LDeg*3600+LMin*60)%(6*3600)/l)+1; C.Format(_T("%.3d"),c); D.Format(_T("%.3d"),d); m_New=New+" C"+C+D; break; case 4:/1:10万 m_Old=Old1; /新的分幅编号 c=(int)(4*3600/b)-(int)(int)(BDeg*3600+BMin*60)%(4*3600)/b); d=(int
9、)(int)(LDeg*3600+LMin*60)%(6*3600)/l)+1; C.Format(_T("%.3d"),c); D.Format(_T("%.3d"),d); m_New=New+" C"+C+D; break; case 5:/1:5万 V=3; l=15.0*60; b=10.0*60; n=2; /旧的分幅编号 W = V-(int)(int)(BDeg*3600+BMin*60)%(20*60)/(int)b)*n +(int)(int)(LDeg*3600+LMin*60)%(30*60)/(int)l);
10、 s=(int)(W+64); m_Old=Old1+"-"+s; /新的分幅编号 c=(int)(4*3600/b)-(int)(int)(BDeg*3600+BMin*60)%(4*3600)/b); d=(int)(int)(LDeg*3600+LMin*60)%(6*3600)/l)+1; C.Format(_T("%.3d"),c); D.Format(_T("%.3d"),d); m_New=New+" D"+C+D; break; case 6:/1:2.5万 /1:5万编号计算 V=3; l=15.
11、0*60; b=10.0*60; n=2; W = V-(int)(int)(BDeg*3600+BMin*60)%(20*60)/(int)b)*n +(int)(int)(LDeg*3600+LMin*60)%(30*60)/(int)l); s=(int)(W+64); m_Old=Old1+"-"+s; V=3; l=7.5*60; b=5*60; n=2; /旧的分幅编号 W = V-(int)(int)(BDeg*3600+BMin*60)%(10*60)/(int)b)*n +(int)(int)(LDeg*3600+LMin*60)%(15*60)/(int
12、)l); s.Format(_T("-%d"),W); m_Old+=s; /新的分幅编号 c=(int)(4*3600/b)-(int)(int)(BDeg*3600+BMin*60)%(4*3600)/b); d=(int)(int)(LDeg*3600+LMin*60)%(6*3600)/l)+1; C.Format(_T("%.3d"),c); D.Format(_T("%.3d"),d); m_New=New+" F"+C+D; break; case 7:/1:1万 V=57; l=3.75*60; b
13、=2.5*60; n=8; /旧的分幅编号 W = V-(int)(int)(BDeg*3600+BMin*60)%(20*60)/(int)b)*n +(int)(int)(LDeg*3600+LMin*60)%(30*60)/(int)l); s.Format(_T("-(%d)"),W); m_Old = Old1+s; /新的分幅编号 c=(int)(4*3600/b)-(int)(int)(BDeg*3600+BMin*60)%(4*3600)/b); d=(int)(int)(LDeg*3600+LMin*60)%(6*3600)/l)+1; C.Format(
14、_T("%.3d"),c); D.Format(_T("%.3d"),d); m_New=New+" G"+C+D; break; case 8:/1:5000 /1:1万基本比例尺计算 V=57; l=3.75*60; b=2.5*60; n=8; W = V-(int)(int)(BDeg*3600+BMin*60)%(20*60)/(int)b)*n +(int)(int)(LDeg*3600+LMin*60)%(30*60)/(int)l); s.Format(_T("-(%d)"),W); m_Old =
15、 Old1+s; V=3; l=1.875*60; b=1.25*60; n=2; /旧的分幅编号 W = V-(int)(int)(BDeg*3600+BMin*60)%150)/(int)b)*n +(int)(int)(LDeg*3600*60+LMin*60*60)%(225*60)/(int)(l*60); s=(int)(W+96); m_Old+="-"+s; /新的分幅编号 c=(int)(4*3600/b)-(int)(int)(BDeg*3600+BMin*60)%(4*3600)/b); d=(int)(int)(LDeg*3600+LMin*60)%
16、(6*3600)/l)+1; C.Format(_T("%.3d"),c); D.Format(_T("%.3d"),d); m_New=New+" H"+C+D; break; if(m_BDeg = "" | m_BSec = "" | m_LSec = "" | m_LDeg = "")if (m_BDeg = "" && m_BSec = "" && m_LSec = &quo
17、t;" &&(m_LDeg = "E" | m_LDeg = "W")MessageBox("请输入经度、纬度","错误",MB_ICONERROR);m_Old = ""m_New = ""else MessageBox("系统将空白处自动赋值为0","提示",MB_ICONEXCLAMATION);UpdateData(false);/对话框的初始设置BOOL CMyDlg:OnInitDialog()CD
18、ialog:OnInitDialog();/ Add "About." menu item to system menu./ IDM_ABOUTBOX must be in the system command range.ASSERT(IDM_ABOUTBOX & 0xFFF0) = IDM_ABOUTBOX);ASSERT(IDM_ABOUTBOX < 0xF000);CMenu* pSysMenu = GetSystemMenu(FALSE);if (pSysMenu != NULL)CString strAboutMenu;strAboutMenu.L
19、oadString(IDS_ABOUTBOX);if (!strAboutMenu.IsEmpty()pSysMenu->AppendMenu(MF_SEPARATOR);pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);/ Set the icon for this dialog. The framework does this automatically/ when the application's main window is not a dialogSetIcon(m_hIcon, TRUE);
20、/ Set big iconSetIcon(m_hIcon, FALSE);/ Set small icon/ TODO: Add extra initialization hereGetDlgItem(IDC_EDIT5)->EnableWindow(false);GetDlgItem(IDC_EDIT6)->EnableWindow(false);/设置图标m_hIcons0 = LoadIcon(AfxGetInstanceHandle(),MAKEINTRESOURCE(IDI_ICON1);m_hIcons1 = LoadIcon(AfxGetApp()->m_hI
21、nstance,MAKEINTRESOURCE(IDI_ICON2);m_hIcons2 = LoadIcon(AfxGetApp()->m_hInstance,MAKEINTRESOURCE(IDI_ICON3);m_hIcons3 = LoadIcon(AfxGetApp()->m_hInstance,MAKEINTRESOURCE(IDI_ICON4);m_hIcons4 = LoadIcon(AfxGetApp()->m_hInstance,MAKEINTRESOURCE(IDI_ICON5);m_hIcons5 = LoadIcon(AfxGetApp()->
22、m_hInstance,MAKEINTRESOURCE(IDI_ICON6);m_hIcons6 = LoadIcon(AfxGetApp()->m_hInstance,MAKEINTRESOURCE(IDI_ICON7);SetClassLong(m_hWnd,GCL_HICON,(long)m_hIcons0);SetTimer(1,1000,NULL);/列表框(CComboBox*)GetDlgItem(IDC_COMBO1)->AddString("1:100万");(CComboBox*)GetDlgItem(IDC_COMBO1)->AddS
23、tring("1:50万");(CComboBox*)GetDlgItem(IDC_COMBO1)->AddString("1:25万");(CComboBox*)GetDlgItem(IDC_COMBO1)->AddString("1:10万");(CComboBox*)GetDlgItem(IDC_COMBO1)->AddString("1:5万");(CComboBox*)GetDlgItem(IDC_COMBO1)->AddString("1:2.5万");(CC
24、omboBox*)GetDlgItem(IDC_COMBO1)->AddString("1:1万");(CComboBox*)GetDlgItem(IDC_COMBO1)->AddString("1:5000");(CComboBox*)GetDlgItem(IDC_COMBO1)->SetCurSel(0);/设置字体 CFont * f; f = new CFont; f->CreateFont(18, / nHeight 0, / nWidth 0, / nEscapement 0, / nOrientation FW_BO
25、LD, / nWeight FALSE, / bItalic FALSE, / bUnderline 0, / cStrikeOut ANSI_CHARSET, / nCharSet OUT_DEFAULT_PRECIS, / nOutPrecision CLIP_DEFAULT_PRECIS, / nClipPrecision DEFAULT_QUALITY, / nQuality DEFAULT_PITCH | FF_SWISS, / nPitchAndFamily _T("宋体"); / lpszFacGetDlgItem(IDC_STATIC1)->SetFo
26、nt(f);return TRUE; / return TRUE unless you set the focus to a controlvoid CMyDlg:OnQuit() / TODO: Add your control notification handler code herethis->DestroyWindow();void CMyDlg:OnTimer(UINT nIDEvent) / TODO: Add your message handler code here and/or call defaultstatic int index=1;SetClassLong(m_hWnd,GCL_HICON,(long)m_hIconsindex);index = +index%7;CDialog:OnTimer(nIDEvent);void CMyDlg:OnHelp() / TODO: Add your control notification handler code hereCAboutDlg dlgAbout;dlgAbout.DoModal();/GotoDlgCtrl(CEdit*)GetDlgItem(IDC_LDeg);void CMyDlg:OnClear() / TODO: Add your control notificatio
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 机械cad实训课程设计
- 机房空间吸声体课程设计
- 2024年化工厂租赁合同
- 机床齿轮材料课程设计
- 钢筋市场调研与供货策略方案
- 2024年KTV场所废弃物处理合同
- 金融服务采购人沟通策略方案
- 机器学习综合课程设计
- 机器人编程课程设计
- 机器人积木拼装课程设计
- 医院感染现患率调查方案
- 兄妹4人继承房产协议书范文
- 上海市市辖区(2024年-2025年小学五年级语文)部编版期中考试(下学期)试卷及答案
- GB/T 44692.2-2024危险化学品企业设备完整性第2部分:技术实施指南
- 2024年煤矿安全管理人员(机电运输)考试题库(浓缩500题)
- 2024年广西高考化学试卷真题(含答案解析)
- 网络协议分层设- 快递环节我能懂 课件 2024-2025学年人教版(2024)初中信息科技七年级全一册
- 项目式学习在小学英语教学中的应用与研究
- 期中测试卷(试题)-2024-2025学年数学六年级上册北师大版
- 供应链安全培训教材课件
- 食堂食材配送采购 投标方案(技术方案)
评论
0/150
提交评论