中国矿业大学计算机地图制图原理与方法
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
《计算机地图制图原理与方法》上机实验报告
学号:07103081
姓名:罗京辉
班级:测绘10-2班
指导教师:王中元
学院:环境与测绘学
院
环境与测绘学院
实验一、扫描矢量化
一、实验目的
1、熟悉Cass制图环境。
2、掌握在计算机制图中扫描矢量化处理。
3、掌握用南方Cass制图软件扫描矢量化的基本步骤与基本方法。
4、进一步对计算机制图课堂知识加深了解。
二、实验原理
扫描矢量化其基本原理是对各种类型的数字工作底图如纸质地图、黑图或聚酯薄膜图,使用扫描仪及相关扫描图像处理软件,把底图转化为光栅图像,对光栅图像进行诸如点处理、区处理、桢处理、几何处理等,在此基础上对光栅图像进行矢量化处理和编辑,包括图像二值化、黑白反转、线细化、噪声消除、结点断开、断线连接等。这些处理由专业扫描图像处理软件进行,其中区处理是二值图像处理(如线细化)的基础,而几何处理则是进行图像坐标纠正处理的基础,通过处理达到提高影像质量的目的。然后利用软件矢量化的功能,采用交互矢量化或自动矢量化的方式,对地图的各类要素进行矢量化,并对矢量化结果进行编辑整理,存储在计算机中,最终获得矢量化数据,即数字化地图,完成扫描矢量化的过程。
数据采集是数字化图最重要的工作,在数字化过程中各种地物的数字化均有自身特点,因而,在数字化作业时必须充分考虑各种类型地物的特点进行数据采集。
对于点状类符号(如独立地物符号),仅需采集符号的定位点数据;对折线类型的线状符号只需采集各转折点数据;曲线类型的线状符号,只对其特征点的数据进行采集,由程序自动拟合为曲线,特征点的选择同地形测图时的方法相同,曲线上明显的转弯点等均是特征点。对于斜坡、陡坎、围墙、栏杆等有方向性的线状类符号,数据的采集要结合图式符号库的具体算法进行,数据采集只在定位线上进行,采集数据的前进方向的选择要按软件图式符号库的规定进行,如规定有方向性的线状类符号的短毛线或小符号在前进方向右侧(或左侧),由此可结合图上符号的具体位置决定数据采集的前进方向;对面状类符号,则只需采集在其轮廓线上的拐点或特征点。面状符号内部有填充符号时,面状符号的轮廓线必须闭合。
三、实验数据
在本次实验中,我所用实验数据为王老师提供的Tif格式的地形图中第二幅地图,数据如下:
四、实验步骤
运行南方Cass软件,在Cass中载入数据:
步骤:工具->光栅图像->插入图像。
图象纠正,对图象进行变形纠正并赋以坐标:
步骤:工具->光栅图像->图像纠正。
图像纠正完毕后,进行矢量化处理
(1)对线状要素数字化:
对于线状要素,首先点击多段线命令,然后在图上选择要素的特征点,连成多段线。
对于曲线部分,用折线段来替代,曲率小时取点较少,大时可多取些点,尽量避免冗余数据。
数据采集要尽量与原图保持一致,但要识别出原图中模糊、毛刺、斑点等质量问题,做到精益求精。数字化时,要正确划分要素个体,不要多个要素连成一体,也不要单一要素分成若干段。对于能用线状符号描述的,只需数字化符号的中心线或控制线、边界线即可;不能用符号描述的,可以整体数字化。数字化时,有时找中心线很困难,可以沿着某边数字化,完成后再整体平移到中心线处。数字化具有平行、垂直、相交、相切、相连等关系的要素,需要使用捕捉功能,以及复制、镜象、旋转等操作,保证要素的精确、完整。
(2)对面状要素数字化:
对于面状要素,首先点击多段线命令,然后在图上选择面域边界的特征点,连成闭合的多段线。对面状要素,数字化为闭合的多段线,一定在结束时选择闭合命令,或在多段线属性中选择闭合,首尾点重合不表示闭合。数据点的采集要符合实际,如房屋的墙体一般是平直的,并且前后面保持平行,对于共用边界,要严格保证边界的一致,不要出现空洞、交叠的现象,做到不重、不漏。可以采用捕捉、复制等手段。对于不同层要素,也要注意相互的关系,点与线、线与线,线与面,面与面等的关系是否正确。
(3)对点状要素数字化:
对于点状要素,数字化为点,点的采集要尽量位于要素中心,可以适当放大要素。
五、成果截图
六、实验体会
通过本次试验我熟悉了AutoCAD制图环境;掌握在计算机制图中扫描矢量化处理;掌握用南方Cass制图软件扫描矢量化的基本步骤与基本方法;进一步对计算机制图课堂知识加深了解。本次实验我在实验过程中遇到了许多问题,比如说如何加图幅、图名、图框,辨认地形图上不清晰的地物符号、文字,最终经过请教同学和老师最终操作问题得以解决。受益匪浅!
实验二、高级语言图形编程
一、实验目的
掌握直线段、基本曲线曲面的生成算法,并用VC++实现算法,包括中点法生成直线,微分数值法生成直线段,圆、椭圆、抛物线等生成。
二、实验内容
用不同的方法生成斜率不同的直线段,比较各种方法的效果。自己设计一个图形,比如椭圆的生成算法,其它曲线如抛物线、圆都用类似的算法生成。
三、实验代码(摘录)
CDrawView::CDrawView()
{
// TODO: add construction code here
m_Dragging = 0;
m_IsRect = FALSE;
m_hArrow =
AfxGetApp()->LoadStandardCursor(IDC_A RROW);
m_hCross =
AfxGetApp()->LoadStandardCursor(IDC_C ROSS);
m_PenDotted.CreatePen(PS_DOT, 1, RGB(0,0,0));
m_cTextColor = RGB(0,0,0);
m_lf.lfHeight = 30;
m_lf.lfWidth = 0;
m_lf.lfEscapement = 0;
m_lf.lfOrientation = 0;
m_lf.lfWeight = FW_NORMAL;
m_lf.lfItalic = FALSE;
m_lf.lfUnderline = FALSE;
m_lf.lfStrikeOut = FALSE;
m_lf.lfCharSet = GB2312_CHARSET;
m_lf.lfOutPrecision =
OUT_STROKE_PRECIS;
m_lf.lfClipPrecision =
CLIP_STROKE_PRECIS;
m_lf.lfQuality = DRAFT_QUALITY;
m_lf.lfPitchAndFamily = VARIABLE_PITCH|FF_MODERN;
strcpy(m_lf.lfFaceName, "仿宋_GB2312");
}
CDrawView::~CDrawView()
{
}
BOOL
CDrawView::PreCreateWindow(CREATESTRU CT& cs)
{
// TODO: Modify the Window class or styles here by modifying
// the CREATESTRUCT cs
m_ClassName = AfxRegisterWndClass(CS_HREDRAW|CS_VRE DRAW, 0,
(HBRUSH)::GetStockObject(WHITE_BR USH), 0);
cs.lpszClass = m_ClassName;
return
CScrollView::PreCreateWindow(cs);
}
///////////////////////////////////// ///////////////////////////////////// ///
// CDrawView drawing
void CDrawView::OnDraw(CDC* pDC)