组件式GIS-实验报告

时间:2024.4.7

组件式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),使之与原图数据集名字一致。


第二篇:组件式GIS-实验报告1 - 20xx版


组件式GIS

    年:  20## -2014__

    期:    第二学期

    业:地理系新系统

    级:  地信112   

    号:    110716223

    名:   师明圣    

指导教师:   尹涛      

山东交通学院土木工程系  

二零##年


实验报告1 GIS基本功能设计

地点:   土木楼               时间:   20##-04-18               节次:  1      

一、        实验目的

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 sp;

            sp = @"D:\supermap\Samples\World\World.smw";

        

            bool a, b;

            a = axSuperWorkspace1.Open(sp, "");

            b = axSuperMap1.OpenMap("世界”);

            if (!a)

            {

                MessageBox.Show("打开工作空间失败”);

            }

            if(!b)

                MessageBox.Show("打开地图失败”);

        }

系统运行截图:

3.     实验03量算设计

坐标、距离、面积、方位角等量算功能代码: private void button1_Click(object sender, EventArgs e)

        {

            axSuperMap1.Action = seAction.scaZoomIn;

        }

        private void button2_Click(object sender, EventArgs e)

        {

            axSuperMap1.Action = seAction.scaZoomOut;

        }

        private void button3_Click(object sender, EventArgs e)

        {

            axSuperMap1.Action = seAction.scaPan;

        }

        private void button4_Click(object sender, EventArgs e)

        {

            axSuperMap1.ViewEntire();

        }

        private void button5_Click(object sender, EventArgs e)

        {

            axSuperMap1.Action = seAction.scaZoomFree;

        }

面积量算截图:

4.     实验04基本查询设计

图查属性代码:

        private void button6_Click(object sender, EventArgs e)

        {

            axSuperMap1.Action = seAction.scaSelect;

        }

  private void axSuperMap1_GeometrySelected(object sender, AxSuperMapLib._DSuperMapEvents_GeometrySelectedEvent e)

        {

            soSelection objs;

            soRecordset objr;

            objs = axSuperMap1.selection;

            objr = objs.ToRecordset(false);

            objr.MoveFirst();

            String str;

            str = objr.GetFieldValue("Country").ToString();

            MessageBox.Show(str);

        }

属性查图代码: private void button7_Click(object sender, EventArgs e)

        {  

            string str;

            soDataset objt;

            soDatasetVector objDtv;

            soRecordset obj;

            Double dRatio;

            dRatio = 2;

            objt = this.axSuperWorkspace1.Datasources["World"].Datasets["Countries"];

            objDtv = (SuperMapLib.soDatasetVector)objt;

           

            str = "country like '*" + this.textBox2.Text + "*'";

            obj = objDtv.Query(str, true, null, "");

            this.axSuperMap1.selection.FromRecordset(obj);

            this.axSuperMap1.EnsureVisibleRecordset(obj, dRatio);

            this.axSuperMap1.Refresh(); 

           

        }

图查属性截图:

属性查图截图:

5.     实验05空间查询设计

空间查询算子:ExtentOverlap,LineCross,Containing,ContainedBy ,Overlap, Disjoint ,Touch,Identical,AreaIntersect,CentroidInPolygon ,CommonPoint,CommonLine,ContainedByNoEdgeTouch ,ContainingNoEdgeTouch,ContainOrOverlap,PointInPolygon,CommonLineOrOverlap,CommonPointOrLineCross,AreaIntersectNoEdgeTouch,

空间查询功能代码:   private void axSuperMap1_Tracked(object sender, EventArgs e)

        {

            soGeometry objSearchGeo = axSuperMap1.TrackedGeometry;

            soDatasetVector objDtv;

            if (objSearchGeo == null)

            {

                MessageBox.Show("未获得用搜索的对象");

                return;

            }

            soStyle objStyle = new soStyleClass();

            objStyle.PenColor = (uint)ColorTranslator.ToOle(Color.Red);

            axSuperMap1.TrackingLayer.AddEvent(objSearchGeo, objStyle, "");

            objDtv = (SuperMapLib.soDatasetVector)axSuperWorkspace1.Datasources["World"].Datasets["Countries"];

            soRecordset objSearchRd;

          

           objSearchRd = objDtv.QueryEx(objSearchGeo, seSpatialQueryMode.scsLineCross, "");

               

            if (objSearchRd.RecordCount == 0)

            {

                MessageBox.Show("没有找到条件 ");

                return;

            }

            axSuperMap1.selection.FromRecordset(objSearchRd);

            this.axSuperGridView1.Connect(objSearchRd);

            axSuperGridView1.Refresh();

            axSuperMap1.TrackingLayer.Refresh();

            axSuperMap1.Refresh();

        }

     

    }

空间查询运行截图:

四、        其它的实验内容

五、        学了如果地图或空间打开失败时的判断方法以及提示;如图所示:

六、        实验中你发现的问题及解决的方法?

1,有事打开时,不显示地图,可能打开了supermapdesk,先关掉他

2,为变量使用别名:

3,数据源如果是字母,要注意大小写;

更多相关推荐:
组网技术实验报告

实验报告组网技术学院数理与软件工程学院专业信息与计算科学姓名李贵生学号20xx05232指导老师崔永君完成日期20xx74目录一概述2实验目的2实验要求2实施计划2二DHCP和DNS服务搭建及测试2该项服务的搭...

计算机网络路由配置组网实验报告

路由配置组网实验路由器组网一实验目的通过路由建立起网络之间的连接熟悉路由器的基本操作命令并掌握组网的基本技术二实验设备路由器两台华为V35电缆一对集线器两台学生实验主机三实验内容和要求给定3个C类网络地址192...

组网实验报告

实验一路由器交换机综合实验一一实验目的掌握NetSim模拟器的安装配置掌握交换机的工作原理以及交换机各项基本配置二实验内容及测试结果设计的拓扑图1测试结果2三算法或核心技术思考体会通过这次实验我掌握了NetSi...

组网实验报告

组网技术与网络管理实验报告姓名学号班级实验一本地DHCP配置一实验目的掌握DHCP配置方法二实验设备Cisco路由器2台Cisco交换机1台PC机3台三实验过程如图动态分配IP地址PC2图66DHCP服务器主机...

计算机组网实验报告

班级自动化1332班姓名郑显彬学号24前言熟悉思科常用命令routergtenable进入特权模式routerconfigterminal进入全局配置模式routerconfighostnamelthostna...

计算机网络组网实验报告

昆明理工大学信息工程与自动化学院学生实验报告20xx20xx学年第2学期课程名称计算机网络基础开课实验室信自44220xx年4月8日一实验目的及内容正确制作和识别以太网络中使用的双绞线电缆学会为点对点网络和交换...

综合组网实验(综合性实验)

计算机与信息技术学院综合性实验报告一实验目的通过对网络设备的连通和对拓扑的分析加深对常见典型局域网拓扑的理解通过路由建立起网络之间的连接熟悉交换机路由器的基本操作命令了解网络路由的设计与配置二实验仪器或设备三层...

校园局域网组建实验报告

校园局域网设计学生姓名刘蓉蓉学号100601010920xx年12月12日一校园网建设的需求分析11背景12目标13校园网建设任务与需求目标14校园网的总体设计思想2二校园网络规划与设计31校园网基本拓扑结构3...

组建局域网 实验报告

河北科技师范学院实验报告20xx20xx年度第二学期专业信息管理与信息系统课程计算机网络班级姓名学号7教师计算机网络组建局域网实验报告

计算机组网实训实验报告cisco packet tracer vlan划分

常州大学计算机组网实训与管理实验报告姓名学号10403422专业班级装备101院系怀德学院实验时间实验地点实验目的1通过使用PacketTracer模拟软件学会并掌握网络规划设备的配置管理及网络的运行维护的基本...

组网与运维实验报告

组网与运维实验报告班级031112学号姓名丁焓地点EII508时间20xx年12月1实验目的了解路由器交换机的基本配置Web服务Web压力测试和抓包软件的使用及基本的协议分析2实验内容配置Vlan单臂路由基于路...

实验二 局域网的组建实验报告

实验二局域网的组建课程名称计算机网络班级姓名学号同组学生实验时间20xx1110指导教师教师评分一实验目的1掌握星型局域网连接的方法2掌握添加协议的方法3掌握IP地址的设置方法4掌握网络标识的设置方法二实验原理...

组网实验报告(24篇)