中国矿业大学计算机地图制图原理与方法.docx
《中国矿业大学计算机地图制图原理与方法.docx》由会员分享,可在线阅读,更多相关《中国矿业大学计算机地图制图原理与方法.docx(18页珍藏版)》请在冰豆网上搜索。
中国矿业大学计算机地图制图原理与方法
《计算机地图制图原理与方法》
上机实验报告
学 号:
07103081
姓 名:
罗京辉
班 级:
测绘10-2班
指导教师:
王中元
学 院:
环境与测绘学院
环境与测绘学院
实验一、扫描矢量化
一、实验目的
1、熟悉Cass制图环境。
2、掌握在计算机制图中扫描矢量化处理。
3、掌握用南方Cass制图软件扫描矢量化的基本步骤与基本方法。
4、进一步对计算机制图课堂知识加深了解。
二、实验原理
扫描矢量化其基本原理是对各种类型的数字工作底图如纸质地图、黑图或聚酯薄膜图,使用扫描仪及相关扫描图像处理软件,把底图转化为光栅图像,对光栅图像进行诸如点处理、区处理、桢处理、几何处理等,在此基础上对光栅图像进行矢量化处理和编辑,包括图像二值化、黑白反转、线细化、噪声消除、结点断开、断线连接等。
这些处理由专业扫描图像处理软件进行,其中区处理是二值图像处理(如线细化)的基础,而几何处理则是进行图像坐标纠正处理的基础,通过处理达到提高影像质量的目的。
然后利用软件矢量化的功能,采用交互矢量化或自动矢量化的方式,对地图的各类要素进行矢量化,并对矢量化结果进行编辑整理,存储在计算机中,最终获得矢量化数据,即数字化地图,完成扫描矢量化的过程。
数据采集是数字化图最重要的工作,在数字化过程中各种地物的数字化均有自身特点,因而,在数字化作业时必须充分考虑各种类型地物的特点进行数据采集。
对于点状类符号(如独立地物符号),仅需采集符号的定位点数据;对折线类型的线状符号只需采集各转折点数据;曲线类型的线状符号,只对其特征点的数据进行采集,由程序自动拟合为曲线,特征点的选择同地形测图时的方法相同,曲线上明显的转弯点等均是特征点。
对于斜坡、陡坎、围墙、栏杆等有方向性的线状类符号,数据的采集要结合图式符号库的具体算法进行,数据采集只在定位线上进行,采集数据的前进方向的选择要按软件图式符号库的规定进行,如规定有方向性的线状类符号的短毛线或小符号在前进方向右侧(或左侧),由此可结合图上符号的具体位置决定数据采集的前进方向;对面状类符号,则只需采集在其轮廓线上的拐点或特征点。
面状符号内部有填充符号时,面状符号的轮廓线必须闭合。
三、实验数据
在本次实验中,我所用实验数据为王老师提供的Tif格式的地形图中第二幅地图,数据如下:
四、实验步骤
运行南方Cass软件,在Cass中载入数据:
步骤:
工具->光栅图像->插入图像。
图象纠正,对图象进行变形纠正并赋以坐标:
步骤:
工具->光栅图像->图像纠正。
图像纠正完毕后,进行矢量化处理
(1)对线状要素数字化:
对于线状要素,首先点击多段线命令,然后在图上选择要素的特征点,连成多段线。
对于曲线部分,用折线段来替代,曲率小时取点较少,大时可多取些点,尽量避免冗余数据。
数据采集要尽量与原图保持一致,但要识别出原图中模糊、毛刺、斑点等质量问题,做到精益求精。
数字化时,要正确划分要素个体,不要多个要素连成一体,也不要单一要素分成若干段。
对于能用线状符号描述的,只需数字化符号的中心线或控制线、边界线即可;不能用符号描述的,可以整体数字化。
数字化时,有时找中心线很困难,可以沿着某边数字化,完成后再整体平移到中心线处。
数字化具有平行、垂直、相交、相切、相连等关系的要素,需要使用捕捉功能,以及复制、镜象、旋转等操作,保证要素的精确、完整。
(2)对面状要素数字化:
对于面状要素,首先点击多段线命令,然后在图上选择面域边界的特征点,连成闭合的多段线。
对面状要素,数字化为闭合的多段线,一定在结束时选择闭合命令,或在多段线属性中选择闭合,首尾点重合不表示闭合。
数据点的采集要符合实际,如房屋的墙体一般是平直的,并且前后面保持平行,对于共用边界,要严格保证边界的一致,不要出现空洞、交叠的现象,做到不重、不漏。
可以采用捕捉、复制等手段。
对于不同层要素,也要注意相互的关系,点与线、线与线,线与面,面与面等的关系是否正确。
(3)对点状要素数字化:
对于点状要素,数字化为点,点的采集要尽量位于要素中心,可以适当放大要素。
五、成果截图
六、实验体会
通过本次试验我熟悉了AutoCAD制图环境;掌握在计算机制图中扫描矢量化处理;掌握用南方Cass制图软件扫描矢量化的基本步骤与基本方法;进一步对计算机制图课堂知识加深了解。
本次实验我在实验过程中遇到了许多问题,比如说如何加图幅、图名、图框,辨认地形图上不清晰的地物符号、文字,最终经过请教同学和老师最终操作问题得以解决。
受益匪浅!
实验二、高级语言图形编程
一、实验目的
掌握直线段、基本曲线曲面的生成算法,并用VC++实现算法,包括中点法生成直线,微分数值法生成直线段,圆、椭圆、抛物线等生成。
二、实验内容
用不同的方法生成斜率不同的直线段,比较各种方法的效果。
自己设计一个图形,比如椭圆的生成算法,其它曲线如抛物线、圆都用类似的算法生成。
三、实验代码(摘录)
CDrawView:
:
CDrawView()
{
//TODO:
addconstructioncodehere
m_Dragging=0;
m_IsRect=FALSE;
m_hArrow=AfxGetApp()->LoadStandardCursor(IDC_ARROW);
m_hCross=AfxGetApp()->LoadStandardCursor(IDC_CROSS);
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,"仿宋");
}
CDrawView:
:
~CDrawView()
{
}
BOOLCDrawView:
:
PreCreateWindow(CREATESTRUCT&cs)
{
//TODO:
ModifytheWindowclassorstylesherebymodifying
//theCREATESTRUCTcs
m_ClassName=AfxRegisterWndClass(CS_HREDRAW|CS_VREDRAW,0,
(HBRUSH):
:
GetStockObject(WHITE_BRUSH),0);
cs.lpszClass=m_ClassName;
returnCScrollView:
:
PreCreateWindow(cs);
}
/////////////////////////////////////////////////////////////////////////////
//CDrawViewdrawing
voidCDrawView:
:
OnDraw(CDC*pDC)
{
CDrawDoc*pDoc=GetDocument();
ASSERT_VALID(pDoc);
CSizeScrollSize=GetTotalSize();
pDC->MoveTo(ScrollSize.cx,0);
pDC->LineTo(ScrollSize.cx,ScrollSize.cy);
pDC->LineTo(0,ScrollSize.cy);
CRectClipRect;
CRectDimRect;
CRectIntRect;
CDrawBase*pDraw;
pDC->GetClipBox(&ClipRect);
intNumDraws=pDoc->GetNumDraws();
for(intIndex=0;Index{
pDraw=pDoc->GetDraw(Index);
DimRect=pDraw->GetDimRect();
if(IntRect.IntersectRect(DimRect,ClipRect))
pDraw->Draw(pDC);
}
}
voidCDrawView:
:
OnInitialUpdate()
{
CScrollView:
:
OnInitialUpdate();
CSizesizeTotal;
sizeTotal.cx=800;
sizeTotal.cy=600;
SetScrollSizes(MM_TEXT,sizeTotal);
}
四、成果截图
五、实验体会
通过这次上机练习,我学会了VC++MFC的简单使用,即如何用MFC编写可视化的界面。
在实验过程中遇到了一些困难,例如如何编写MFC程序。
通过询问老师和查阅资料,学会了简单的MFC编程,这是这次实验收获最大的地方。
另外,通过生成直线。
曲线算法的程序编写,加深了对理论知识的学习,例如:
直线的中点算法、Bresenham算法思想、直线的数值微分法的理解。
实验三、构建TIN
一、实验目的
本次实验是通过Cass7.0成图系统来熟悉数字地图的不规则格网的生成算法,通过实验了解TIN的概念,TIN生成中对几何三角形的形状的要求,掌握TIN生成的两种基本算法,明白其原理,算法的基本步骤,不但能够熟练地使用相关软件进行TIN图的生成,还能够在高级程序开发语言上进行TIN生成算法的实现,为制图系统的开发打下良好的基础。
二、实验内容
利用Cass7.0成图系统来熟悉数字地图的不规则格网的生成算法,熟练地使用相关软件进行TIN图的生成,包括等高线的生成及一些相关的操作。
三、实验过程
1.打开南方Cass7.0软件,将待要进行处理的图形数据加载到当前窗口。
2.仔细观察地图,确定将要生成TIN格网的大致区域,用Cass工具栏中的多段线工具圈画出进行TIN生成的区域,要求是该区域必须是闭合的。
3.点击主菜单上的“等高线按钮”,在出现的下拉菜单中选择“建立DTM”选项,出现如下图的对话框:
选择“由图面高程点生成”“显示建三角网结果”。
4.在Cass左下角的命令行中出现2个选项,选择第一个:
选取高程点的范围。
5.根据提示选择建模区域边界。
6.我们将会看见在选定的区域内出现了TIN格网。
分析可知:
生成的三角形中个别三角形边长过大,不符合三角形形状的三条原则,要进行适当的删除操作。
具体方法是:
在主菜单上的“等高线按钮”,在出现的下拉菜单中选择“删除三角形”,然后用鼠标选中将要删除的三角形,则会将该三角行的一边删除。
7.有时我们划定的区域外有已知的高程点,则将未连成三角形的三个地形点(测点)连成一个三角形。
具体操作如下:
在主菜单上的“等高线按钮”,在出现的下拉菜单中选择“增加三角形”,依次为顶点1:
顶点2:
顶点3:
用鼠标在屏幕上指定,系统自动将捕捉模式设为捕捉交点,以便指定已有三角形的顶点。
增加的三角形的颜色为蓝色,以便和其他三角形区别。
当增加完三角形确认无误后,请立即进行修改结果存盘。
8.重组三角形
功能:
通过改换三角形公共边顶点重组不合理的三角网。
指定两相邻三角形的公共边,系统自动将两三角形删除,并将两三角形的另两点连接起来构成两个新的三角形。
如果因两三角形的形状无法重组,会有出错提示。
具体操作如下:
在主菜单上的“等高线按钮”,在出现的下拉菜单中选择“重组三角形”,然后按命令提示操作。
9.加入地性线
功能:
由于等高线是与地性线是互相垂直的关系,所以在建三角网时要考虑到地性线的位置。
具体操作如下:
在主菜单上的“等高线按钮”,在出现的下拉菜单中选择“加入地性线”,然后按命令提示操作。
10.删除三角网
功能:
删除整个DTM三角网图形。
当您想单看等高线效果时,需要执行此功能删除三角网。
具体操作如下:
在主菜单上的“等高线按钮”,在出现的下拉菜单中选择“删除三角形”,然后按命令提示操作。
11.三角网存取
功能:
可将已经建立好的三角网DTM模型保存到文件中,随时调用。
具体操作如下:
在主菜单上的“等高线按钮”,在出现的下拉菜单中选择“三角网存取”,然后按命令提示操作。
12.修改结果存盘
功能:
将修改好的DTM三角网存入文件。
具体操作如下:
在主菜单上的“等高线按钮”,在出现的下拉菜单中选择“修改结果存盘”,然后按命令提示操作。
四、成果截图
五、实验体会
通过本次实验我熟练掌握了Cass7.0成图系统进行TIN图的生成的步骤,熟悉了数字地图的不规则格网TIN生成中对几何三角形的形状的要求,明确了TIN生成的两种基本算法,明白其原理,算法的基本步骤,但是在操作中关于三角形的删减和如何进行更合理的增加,如果选择是精度更好还是存在一些模糊。
希望以后通过更多的练习来更加熟悉这些步骤。
实验四、利用TIN生成等高线
一、实验目的
本次实验是在TIN的生成实验的基础上进行的,本次实验要利用TIN的生成实验的实验结果进行进一步的处理。
通过本次实验既能对TIN的生成实验的复习巩固和再提高,也能够明白利用TIN生成等高线的原理、方法和基本步骤,增强实际操作能力,从而对课本有更好的理解和掌握。
二、实验内容
本次实验的内容是在TIN的生成实验的基础上进行的,根据三角形顶点的高程值和等高线高程的关系,判断等高线是否与三角形相交。
TIN在追踪等高线时,首先寻找追踪起点寻找到等高线的一个起点所在的三角形就可以开始追踪。
在TIN中,追踪等高线的过程从起点三角形开始,依次处理邻接的三角形,根据邻接三角形具有共同边的性质,逐一确定等高线延伸方向上的三角形。
追踪时,等高线每经过的一个三角形都被加注标记,以避免重复检索。
三、实验过程
1.打开Cass7.0软件,将TIn生成实验的数据加载到当前窗口。
。
2.在主菜单上点击“等高线”按钮,在下拉菜单中选择“绘制等高线”选项。
3.接下来会弹出“绘制等值线”窗口,在该窗口中选择等高距为1米,拟合方式为“三次B样条拟合”,窗口图如下:
4.等高线由软件系统自动生成,生成后对等高线图进行分析,确定等高线的高程值。
等高线内插
功能:
当等高线过疏时,通过此功能在其中内插等高线(合适时跳过此步骤)
具体操作过程如下:
在主菜单的“等高线”按钮下拉框中有“等高线内插”选项,点击此选项然后根据命令区提示进行。
6.等值线过滤
功能:
当等高线或等深线过密时,通过此功能删除部分等高线或等深线(合适时跳过此步骤)
具体操作过程如下:
在主菜单的“等高线”按钮下拉框中有“等高线过滤”选项,点击此选项然后根据命令区提示进行。
7.删全部等高线
功能:
删除屏幕上的全部等高线(当绘制的等高线不合适或者不想要时执行此操作,此操作慎用)
具体操作过程如下:
在主菜单的“等高线”按钮下拉框中有“删除全部等高线”选项,点击此选项然后根据命令区提示进行。
8.查询指定点高程
功能:
查询图面上任一点的坐标及高程。
如之前没有建立过DTM,系统会提示输入数据文件名。
具体操作过程如下:
在主菜单的“等高线”按钮下拉框中有“查询指定点高程”选项,点击此选项然后根据命令区提示进行。
9.等高线修剪
功能:
提供强大的等高线修饰功能。
10.等高线注记
有二级菜单,分别为单个高程注记、沿直线高程注记、单个示坡线、沿直线示坡线,现将各功能说明如下:
(1)单个高程注记
功能:
在指定点给某条等高线注记高程。
具体操作过程如下:
执行此菜单后,见命令区提示。
(2)沿直线高程注记
功能:
在选定直线与等高线相交处注记高程。
(直线必须是line命令画出的)
具体操作过程如下:
执行此菜单后,见命令区提示。
(3)单个示坡线
功能:
给指定等高线加注示坡线,特别在等高线稀疏区。
具体操作过程如下:
执行此菜单后,见命令区提示。
(4)沿直线示坡线
功能:
在选定直线与等高线相交处注记示坡线。
(直线必须是line命令画出的)
具体操作过程如下:
执行此菜单后,见命令区提示。
11.等高线局部替换
有二级菜单,分别为已有线、新画线,现将各功能说明如下:
(1)已有线
功能:
手工修改生成的等高线。
具体操作过程如下:
执行此菜单后,见命令区提示。
(2)新画线
功能:
手工修改生成的等高线。
具体操作过程如下:
执行此菜单后,见命令区提示。
12.复合线滤波
功能:
减少复合线上的结点数目,便于部分修改复合线形状。
减少存储空间。
具体操作过程如下:
在主菜单的“等高线”按钮下拉框中有“复合线滤波”选项,点击此选项然后根据命令区提示进行。
13.三维模型
有二级菜单,分别为绘制三维模型、低级着色方式、高级着色方式、返回平面视图,现将各功能说明如下:
(1)绘制三维模型
功能:
在屏幕上绘制已经建立的DTM模型的三维图形。
具体操作过程如下:
执行此菜单后,在弹出对话框中输入高程点数据文件名。
(2)低级着色方式
功能:
将三维模型进行半色调着色处理。
具体操作过程如下:
执行此菜单后,见命令区提示。
(3)高级着色方式
功能:
将三维模型进行全面的着色处理,得到美观的着色效果图
具体操作过程如下:
执行此菜单后,会弹出一个对话框,一般直接敲[RENDER]按钮或修改了其它的选项后再敲[RENDER]按钮即可。
(4)返回平面视图
功能:
回到平面视图显示方式,同时删除三维图形。
具体操作过程如下:
执行此菜单后,见命令区提示。
14.坡度分析
坡度分析可方便地检查DTM模型中存在的错误,如高程异常等。
有二级菜单,分别为颜色配置、颜色填充、低级着色方式、高级着色方式。
四、成果截图
依据上述实验过程获得的实验结果如下:
局部图显示:
五、实验体会
通过本次实验,我掌握了利用TIN生成等高线的过程与原理,用的方法是利用不规则三角网进行的,通过此次实验加深对课本理论知识的了解,将理论和实践结合起来,以理论指导实践,以实践促理论,融会贯通。
计算机制图做出我们测绘专业一门很重要的课程,自己还是非常重视,尤其是南方CASS软件更是值得学习的软件,不过我们现在还操作不是非常熟练而且一些原理和方法还是比较模糊,这需要课后大量的时间去练习和钻研,这也是需要我们去进行更深层次的学习和理解。
(本资料素材和资料部分来自网络,仅供参考。
请预览后才下载,期待您的好评与关注!
)