中国矿业大学计算机地图制图原理与方法

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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)

相关文档
最新文档