GIS实验报告-地信

地理信息系统原理

实验报告

班    级:                

学    号:                

姓    名:                

指导教师:                


一、      实验目的

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-实验报告

组件式GIS

二零一三年


实验报告1 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),使之与原图数据集名字一致。

相关推荐