《计算机地图制图原理与方法》
实
验
报
告
姓名:xxx
班级:测绘10-3班
学号:xxx
实验一、地图的扫描矢量化
实验目的
深入理解栅格图形和矢量图形之间的根本区别和各自的优缺点;了解扫描矢量化的的基本原理和过程;学会使用南方cass软件对图像进行纠正并在cass上(或者切换到AUTO-CAD上)进行扫描矢量化。
实验内容
利用所学的知识对老师给的图像(3001-3010、3102-3108.tif)在南方cass上进行图像纠正和扫描矢量化。
实验步骤
打开cass软件,利用:工具|光栅图像|插入图像,导入要进行操作的图像。
找出图像的比例尺,换算到实地坐标。利用:工具|光栅图像|图像纠正,在图像上选取特征点并输入换算后的实地坐标进行图像纠正。
直接在cass软件下(也可以右键|选项|配置,切换到AUTO-CAD)下,分别新建房屋、道路、河流、田地、注记等图层在各自的图层下进行扫描矢量化绘图。
检查、核对、修改,保存矢量化成果。结果保存为:王东明.dwg
实验成果
矢量化前后的图像比较(上图为矢量化前,下为矢量化后)
实验体会
通
通过本次试验,我学会了如何运用cass软件,虽然在试验中遇到了很多问题,但都通过老师和同学的帮助一一解决。
实验二、高级语言图形编程
实验目的
学会使用学过的高级语言(C++)进行简单的图形编程;进一步熟悉Visual C++的开发环境,知道选中菜单里的选项和鼠标的单击、移动产生的消息与程序和窗口之间是怎样通信的;掌握简单的图行生成的原理。
实验内容
利用Visual C++的开发环境进行简单的图形编程,实现能简单的绘制矩形、椭圆、直线、随意曲线等功能。
实验步骤
建立基于MFC的单文档程序,工程名为huitu;
2.在单文档中的视图View类添加成员变量CPoint m_point1;CPoint m_point2;bool m_Rectangle;bool m_Ellipse;bool m_Line;bool m_Xian;
bool m_Duan;目的是对各种不同绘图程序的分离操作。
3.切换到资源视图,打开Meau,新建“绘图”菜单,并在“绘图”菜单下建立5个下拉菜单修改其Caption并给其ID赋于有意义的名字分别为:任意曲线(ID_MEAUITEMQU)、线段(ID_MEAUITEMDUAN)、矩形(ID_MEAUITEMJU)、椭圆(ID_MEAUITEMTUO)、辐射发散线(ID_MEAUITEMXIAN)。
4.建立消息处理函数OnMeauitemXXXX()系列的绘图函数、OnUpdateMeauitemXXXX()系列函数标记是否被选中、添加消息WM_LBUTTONDOWN,WM_LBUTTONUP,WM_MUOSEMOVE消息和相应的消息相应函数OnLButtonDown(),OnLButtonup(),OnMouseMove()并添加相应的代码各种函数的具体代码如下:
void CHuituView::OnLButtonDown(UINT nFlags, CPoint point)
{
// TODO: Add your message handler code here and/or call default
if(m_Rectangle||m_Ellipse)
{
m_point1=point;
m_point2=point;
SetCapture();
}
if(m_Line)
{
m_point1=point;
}
if(m_Xian)
{
m_point1=point;
m_point2=point;
SetCapture();
}
if(m_Duan)
{
m_point1=point;
m_point2=point;
SetCapture();
}
CView::OnLButtonDown(nFlags, point);
}
void CHuituView::OnLButtonUp(UINT nFlags, CPoint point)
{
// TODO: Add your message handler code here and/or call default
CClientDC dc(this);
if(m_Rectangle&&(GetCapture()==this))
{
ReleaseCapture();
CGdiObject*pOldObject=dc.SelectStockObject(NULL_BRUSH);
dc.R