地理信息系统原理
实验报告
班 级:
学 号:
姓 名:
指导教师:
1熟悉桌面GIS软件Super Map的界面环境
2初步掌握Super Map的主要工具及菜单命令的使用
3理解GIS软件应具有的基本功能
4结合对所选地图的矢量化的操作,具体掌握GIS软件的操作步骤
1、第八周----第十六周进行实验绘图实体操作
2、第十七周----第十九周进行图片剪切,资料整理,总结报告
l Supermap Deskpro的认识
Supermap Deskpro是超图的专业桌面GIS软件之一。Super Map GIS桌面平台产品是基于Super Map GIS核心技术研制开发的一体化的GIS桌面软件,是Super Map GIS系列产品的重要组成部分,它界面友好、简单易用,不仅可以很轻松地完成对空间数据的浏览、编辑、查询、制图输出等操作,而且还能完成拓扑分析、三维建模、空间分析、网络分析等较高级的 GIS 功能。
SuperMap Deskpro 是一款专业桌面GIS软件,提供了地图编辑、属性数据管理、分析与辅助决策相关业务以及输出地图、打印报表、三维建模等方面的功能。SuperMap Deskpro 作为一个全面分析管理的工具,应用于土地管理、林业、电力、电信、交通、城市管网、资源管理、环境分析、旅游、水利、航空和军事等所有需要地图处理行业。
l Supermap Deskpro的使用
通过该软件进行地图的矢量化,具体过程如下:
1、 前期的准备
数据来源:纸质西安地图
地图的整体设计:遵循地图越详细越好的原则,我们对点、线、面数据集作了详细的规划,详情请看图层分层。考虑到以后做专题图,对数据集属性字段做了必要的添加,用以区分不同的地物。
本地图特色:采用Deskpro软件自带的矢量符号库符号分别作点、线、面专题图。
2、 地图矢量
2.1 纸质地图的扫描 扫描之前对地图进行图面整理,扫描的分辨率设为300-500dpi,扫描后得到*.jpg格式的原始栅格数据的地图
2.2 创建相应的坐标系数据源 启动Deskpro选择新建工作空间。
新建数据源
根据需要设置数据源坐标系
创建数据源和数据集
(1)鼠标右键单击数据源—>新建数据源,创建数据源“西安”。
(2)鼠标右键单击“西安”数据源—>新建数据集,创建数据集。
创建的数据集分别是居民区(面状要素)、水系(线状要素)、道路(线状要素)、标志性建筑物(点状要素)、注记(文本要素)。
2.3 导入影像数据集
导入栅格数据集
(1)鼠标右键单击“西安”数据源—>导入数据集,点击栅格图像文件,添加到数据打入窗体中
(2)单击导入按钮,将栅格数据导入到西安数据源中。
2.4 配准
配准的目的:将待配准的数据由平面坐标系映射或转换到地理坐标系。
配准的数学原理:进行坐标仿射变换。
配准的意义:为了赋予地物实际的空间位置,使地物具有地理含义。同时也可以对原始数据进行几何校正。
2.5 创建矢量数据集
新建各种类型的数据集,用来表达地图上各种特征的地物。
1> 新建点数据集采集点状地物;
2> 线数据集采集线状地物;
3> 面数据集采集面状地物;
4> 文本数据集采集注记等等。
2.6 修改属性表结构
鼠标右键点击数据集名称->【属性】->【属性表结构】-属性添加
2.7 手动跟踪矢量化
设置当前图层为可编辑 →择绘制工具 →绘地图
2.8 属性数据的录入
双击绘制的地图元素打开属性窗口,录入具有地理语义或者行业特点的属性
2.9 数据的编辑和检查
检查图形数据与属性数据,以及图形数据和属性数据的对应关系。 数据编辑和检查是控制数据质量的重要环节。
3、 地图屏幕数字化
(1)在图例管理器中,选择矢量化图层,以线状地物为例;
(2)在对象绘制工具栏中,选择矢量化工具
(3)选好数字化起点,然后单击鼠标左键开始数字化,让鼠标“十字丝”严格按沿境界线移动,选取图形特征点,单击左键采集坐标点,连续进行下去,直到一个多边形终点,双击左键结束数字化;
(4)直到把地图上的所有边界绘制完成,
4、 地图要素的编辑
首先,选择需要编辑的地图对象,其次,选择“整形”工具按钮,最后利用选择工具,依据底图进行调整
5、 地图要素的整饰
鼠标右键单击图例窗口中的点数据集,选择“风格设置”命令,为选定的符号设定
属性,如符号类型、大小和颜色等。
6、 标注注记并整饰
(1)选择“地图>图层控制”命令,把注记数据集设置为“可见”状态。
(2)选择工具按钮,,选定名称等有关注记,单击样式”命令,按规定整饰注
记。
(3)如果注记的位置不合适,可选中该注记,按鼠标左键拖曳到合适位置上即可。
(4)参照1~3步,分别把数据集河流和铁路数据集设置为“可见”状态,标注河流
和铁路的名称。
7、 制作专题图
按照开始的规划利用属性字段创建点、线、面专题图。 右键单击图例相关图层,选择专题图向导,根据需要分别制作单值专题图和标签专题图。
8、 为图层设置可见比例
为每个图层设计可见比例使地图富有层次感,让地图显示更流畅、清楚。
9、 为道路数据集建立拓扑关系
在菜单项选择
10、对面数据集进行拓扑检查
11、布局的绘制
(1)新建布局窗口
操作方式:在工作空间管理器中右键点击“布局”节点,选择“新建布局窗口”。此
时,会出现一个新的布局窗口,
(2) 设置布局版面
新建布局窗口后,在菜单项中会出现【布局】菜单项。通过该菜单项以及“布局操作”
和“布局格式”、“布局绘制”工具条(鼠标右键点击工具栏即可加载)完成布局设置。
12、输出
输出成果展示:
通过对地理信息系统概念和原理的学习让我们初步了解了GIS和与其相关的SuperMap Deskpro和MAPGIS等应用软件。通过运用软件对所选地图进行实践操作让我们进一步明白了地理信息系统的发展及应用前景。通过对它的应用价值和发张前景的探索让我们也对未来的就业充满了信心。总之,随着科学技术越来越先进,人们对空间数据的要求也越来越高。GIS将运用于各行各业,主要从业领域为:交通运输部门、高等院校、政府部门、研究机构、规划勘测设计部门,以及国土、矿业、水利电力、通讯、农林、城市建设、旅游、公司及企业从事与地球空间信息相关的管理、研究、技术开发及教学工作。尽管目前的MAPGIS系统水平尚未成熟,但前景广阔。希望未来的MAPGIS 可以实现更快捷、更方便、智能化的多重功能,为数据库存储和数据分析、处理带来方便。
组件式GIS
实验报告册
二零一三年
地点: 时间: 节次:
一、 实验目的
1. 安装配置组件式GIS开发环境
2. 设计GIS基本功能
二、 实验内容
1. 实验01 SuperMap Objects 安装,开发环境VS2010 安装
2. 实验02地图浏览功能设计
3. 实验03量算设计
4. 实验04基本查询设计
5. 实验05空间查询设计
三、 实验结果
1. 实验01 SuperMap Objects 安装,开发环境VS2010 安装
结果: 在VS2010 C#开发环境下建立的第一个项目,在设计窗体上添加SuperMap Objects核心控件后,整个设计环境的截图。
截图:
2. 实验02地图浏览功能设计
设计的地图浏览功能及其代码:
private void Form1_Load(object sender, EventArgs e)
{
axSuperMap1.Connect(axSuperWorkspace1.CtlHandle);
String strSpaceFileName;
strSpaceFileName = @"E:\My project\world.smw";
axSuperWorkspace1.Open(strSpaceFileName, "");
axSuperMap1.OpenMap("世界地图");
}
private void buttton1_Click(object sender, EventArgs e)
{
this.axSuperMap1.Action = SuperMapLib.seAction.scaPan;
}
private void button1_Click(object sender, EventArgs e)
{
axSuperMap1.Action = SuperMapLib.seAction.scaZoomOut;
}
private void button2_Click(object sender, EventArgs e)
{
axSuperMap1.Action = SuperMapLib.seAction.scaZoomIn;
}
private void button3_Click(object sender, EventArgs e)
{
axSuperMap1.Action = SuperMapLib.seAction.scaZoomFree;
}
private void button4_Click(object sender, EventArgs e)
{
this.axSuperMap1.ViewEntire();
}
系统运行截图:
3. 实验03量算设计
坐标、距离、面积、方位角等量算功能代码:
string temp;
private void toolStripButton1_Click(object sender, EventArgs e)
{
temp = "A";
this.axSuperMap1.Action = seAction.scaTrackPoint;
}
private void toolStripButton2_Click(object sender, EventArgs e)
{
temp = "B";
axSuperMap1.TrackingLayer.ClearEvents();
axSuperMap1.TrackingLayer.Refresh();
axSuperMap1.Action = SuperMapLib.seAction.scaTrackPolyline;
}
private void toolStripButton3_Click(object sender, EventArgs e)
{
temp = "C";
axSuperMap1.TrackingLayer.ClearEvents();
axSuperMap1.TrackingLayer.Refresh();
axSuperMap1.Action = SuperMapLib.seAction.scaTrackPolygon;
}
private void toolStripButton4_Click(object sender, EventArgs e)
{
temp = "D";
axSuperMap1.TrackingLayer.ClearEvents();
axSuperMap1.TrackingLayer.Refresh();
axSuperMap1.Action = SuperMapLib.seAction.scaTrackPolyline;
}
private void axSuperMap1_Tracking(object sender, AxSuperMapLib._DSuperMapEvents_TrackingEvent e)
{
string strCoordinateUnit;
strCoordinateUnit = this.axSuperWorkspace1.Datasources[1].PJCoordSys.CoordUnits.ToString();
switch(temp)
{
case "A": this.toolStripStatusLabel1.Text = "x:" + Math.Round(e.x, 4).ToString() + strCoordinateUnit + " " + "y:" + Math.Round(e.y, 4).ToString() + strCoordinateUnit; break;
case "B": this.toolStripStatusLabel2.Text = "当前长度:" + e.dCurrentLength.ToString() + "总长度:" + e.dTotalLength.ToString(); break;
case "C": this.toolStripStatusLabel3.Text = "总面积:" + e.dTotalArea.ToString(); break;
case "D": this.toolStripStatusLabel4.Text = "方位角:" + e.dCurrentAngle.ToString(); break;
}
}
面积量算截图:
实验04基本查询设计
图查属性代码:
private void button5_Click(object sender, EventArgs e)
{
this.axSuperMap1.Action = seAction.scaSelect;
}
private void axSuperMap1_GeometrySelected(object sender, AxSuperMapLib._DSuperMapEvents_GeometrySelectedEvent e)
{
soSelection objSel;
soRecordset objRecordset;
String strValue;
objSel = axSuperMap1.selection;
if (objSel.Count != 0)
{
objRecordset = objSel.ToRecordset(false);
objRecordset.MoveFirst();
strValue = objRecordset.GetFieldValue("Capital").ToString();
MessageBox.Show(strValue, "");
}
}
属性查图代码:
private void button6_Click(object sender, EventArgs e)
{
string strQueryTxt;
soDataset objDt;
soDatasetVector objDtv;
soRecordset objRd;
Double dRatio;
dRatio = 2;
objDt = this.axSuperWorkspace1.Datasources["World"].Datasets["Countries"];
objDtv = (SuperMapLib.soDatasetVector)objDt;
strQueryTxt = "Country like '*" + this.textBox1.Text + "*'";
objRd = objDtv.Query(strQueryTxt, true, null, "");
this.axSuperMap1.selection.FromRecordset(objRd);
this.axSuperMap1.EnsureVisibleRecordset(objRd, dRatio);
this.axSuperMap1.Refresh();
}
图查属性截图:
属性查图截图:
4. 实验05空间查询设计
空间查询算子
基本查询模式:scsExtentOverlap、scsLinCross、scsContaining、scsContainedBy、scsOverlap、scsDisjoint、scsTouch、scsIdentical、scsAreaIntersect
常用查询模式:scsCentroidInPolygon、scsCommonPoint、scsCommonLine
组合查询模式:scsContainedByNoEdgeTouch、scsContainingNoEdgeTouch、scsContainOrOverlap、scsPointInPolygon、scsTouchNoCross、scsCommonLineOrOverlap、scsCommonPointOrLineCross、scsEdgeTouchOrAreaIntersect、scsAreaIntersectNoEdgeTouch
空间查询功能代码:
private void button7_Click(object sender, EventArgs e)
{
axSuperMap1.TrackingLayer.ClearEvents();
axSuperMap1.selection.RemoveAll();
axSuperMap1.TrackingLayer.Refresh();
this.axSuperMap1.Action = seAction.scaTrackPolyline;
}
private void axSuperMap1_Tracked(object sender, EventArgs e)
{
soGeometry objSearchGeo =axSuperMap1.TrackedGeometry;
if (objSearchGeo == null)
{
MessageBox.Show("未获得用于搜索的对象", "提示");
return;
}
soStyle objStyle = new soStyleClass();
objStyle.PenColor = (uint)ColorTranslator.ToOle(Color.Red);
axSuperMap1.TrackingLayer.AddEvent(objSearchGeo, objStyle, "");
soDatasetVector objDtv;
objDtv = (SuperMapLib.soDatasetVector)axSuperWorkspace1.Datasources["World"].Datasets["Countries"];
soRecordset objSearchRd = null;
objSearchRd = objDtv.QueryEx(objSearchGeo, seSpatialQueryMode.scsLineCross, "");
if (objSearchRd.RecordCount == 0)
{
MessageBox.Show("没有找到符合条件的对象", "提示");
return;
}
axSuperMap1.selection.FromRecordset(objSearchRd); this.axSuperGridView1.Connect(objSearchRd);
axSuperMap1.TrackingLayer.Refresh();
axSuperMap1.Refresh();
axSuperGridView1.Refresh();
}
空间查询运行截图:
四、 其它的实验内容
显示信息随鼠标移动,利用地图控件的MouseMove事件,代码编写:
l label1.Left = 10+e.x;
l label1.Top = e.y;
l label1.Text = axSuperMap1.PixelToMapX(e.x).ToString();
五、 实验中你发现的问题及解决的方法?
运行的时候出现错误,显示上次运行失败是否继续运行,点击是之后,显示有错误,显示程序正在运行中。解决方法:启动任务管理器,将其关闭,再次进行运行。
应用程序中发成了未经处理的异常。
解决方法:所找数据集名字与原图数据集名字不符,进行修改(Datasets),使之与原图数据集名字一致。
地理实验报告班级姓名实验日期实验名称演示季风的成因实验目的直观演示由于海陆热力性质差异产生的季风及其风向变化规律实验器材一束香电炉…
地图学上机实验报告学院人文社科学院专业地理教育学号20xx1129学生姓名何鑫指导教师候雨乐日期20xx1231实验基于GIS的企…
计量地理学实验报告班级地理092学号组别姓名郑德欣山东建筑大学土木工程学院二零一一年十一月实验须知实验是配合课堂教学的一个重要教学…
本科学生综合性实验报告学号姓名学院专业班级实验课程名称地理信息系统教师及职称开课学期至填报时间云南师范大学教务处编印1一实验设计方…
实验报告GIS应用软件开发专业测绘工程班级10级测绘三班姓名学号指导教师胡亚撰写时间20xx年5月20日星期一1目录一程序运行演示…
“感受幸福,感受快乐”心理主题班会活动总结--统计0802按照理学院的要求,同时根据我们班的实际情况我们班于本周五下午3:00召开…
校园安全工作事关青少年学生的健康成长,事关每个学生、家庭的幸福。一年来,在学校管理过程中我们把安全工作放在各项工作的首位,牢牢树立…
20xx年镇办档案工作总结今年以来,我镇的档案工作在市档案局和镇党委镇政府的领导和支持下,以科学发展观为指导,紧紧围绕“档案为经济…
我校行风评议工作以十八大重要思想为指导,认真贯彻教育局行风评议工作会议精神,以依法治校为核心,以校务公开为载体,师德师风建设为重点…
最近真的好忙加班、学习、开会、搞活动。。。。。让我几乎快没有时间思考了,终于抽了点空出来,年初岗位调整现在的我由一个普通员工成为一…