当前位置:文档之家› 武汉大学城市空间信息学实习报告1

武汉大学城市空间信息学实习报告1

课程编号:20141024133 课程性质:专业必修《城市空间信息学课程设计》学院:测绘学院专业:测绘工程班级: D 组姓名:王里根学号:2011301610204教师:胡春春目录一.实习目的与要求 (3)二.实习内容 (3)三.实习步骤简述 (4)四.实习过程详述 (4)五.所遇问题及解决方案 (33)六.实习心得 (34)一.实习目的与要求1、目的通过这次实习让学生深入的理解城市空间信息中相关的理论,掌握城市空间信息建库、信息管理平台建设等相关内容,使学生能够掌握城市空间信息学的综合应用。

在这部分的实习中,希望达到以下目的:1)通过对ArcEngine组件的实践开发,加深城市空间信息系统相关理论和知识的学习,能熟练地应用ArcEngine组件进行简单的二次开发;2)掌握城市空间信息建库的方法;3)掌握空间信息管理平台建设的相关知识。

2、要求1)在实习时,可以依据老师提供的参考资料学习;2)学生固定使用指定区域的计算机;3)实习中应能灵活应用实习参考资料中的方法,处理实习过程中出现的问题;4)写出整个实习过程和所遇到的问题,并给出解决方法;5)最后需要进行实习成果整理,撰写实习报告(包括实习过程、遇到的问题、解决的方法及实习成果分析)。

二.实习内容实习内容主要包括2个部分,具体如下:1、空间信息数据库设计和建库要求学生能根据提供的实习数据进行空间信息管理平台数据库的设计,并建立平台数据库(可以用Access或Sql Server数据库软件工具进行建库),数据建库可参考相关的资料;2、搭建土地利用信息管理平台通过利用arcEngine组件进行土地利用信息管理基础平台的开发,要求熟悉arcEngine 组件开发的基本内容,包括地图的加载、操作、查询等。

系统能通过结合地图显示功能实现土地利用信息的基本管理,包括土地利用信息的录入、查询和统计功能,要求图文一体化,从地图中的每一个图斑能跟土地利用的属性信息一一对应。

三.实习步骤简述实习软件要求:AE(arcengine),SQL Server 数据库,VS2010。

大致实习过程如下:1. 根据软件功能和要求进行建库工作,并利用建好的数据库支持软件的运行和功能设计操作。

2. 对软件界面和功能进行设计,对不同窗口和主窗口的交互进行设计,对数据库和窗口的交互进行设计。

3. 代码编辑,调试和程序运行4. 报告编写,问题总结和心得陈述。

四.实习过程详述-------建库部分实习建库主要是将shape 文件数据库的属性数据导进个人数据库里,这里的个人数据库主要包括access 和 sql server 。

用两种数据库软件的其中一种建库就可以了,比较简单。

建库以sql server 为例,安装完sql server 后,在右击database->new database ,然后输进你数据库名字就好了,如图1,是我自己建的数据库名mytest.图1建表,左击自己数据库展开,找到table 目录,右键new table新建自己的数据表用来储存shape 文件的属性数据,新建表字段必须有一个唯一值的字段作为索引,且不为空,这里我选取BSM 作为这唯一值字段。

其他字段自己根据课程设计任务书来选取,最好有代表性。

建表完成后结果如.图2图2数据库建完后就到导入数据这部分了,这里数据导入主要通过代码实现。

----------编程部分首先,我们得了解我们这次实习的目的,主要是熟悉AE 的各种接口并利用其进行二次开发和进行数据库建库方法,数据库我们刚才已经建了,主要包括建库和建表,但里面没有数据,因此,编程部分会涉及到导数据的代码部分。

在搭建土地利用信息平台时,我们需要用到axMapControl , axTOCControl , ToolbarControl ,axLicenseControl ,MenuStrip 控件分别用来显示地图,显示图层信息,提供工具栏选项,提供证书验证,和作为菜单。

分别右键axTOCControl,ToolbarControl ,并点击其属性,设置buddy 为axMapControl 来实现控件关联,如图3,我们可以通过右键ToolbarControl ,点击属性,在items 页面上点击add 按钮来添加自己需要的工具,命令或者菜单,如图4。

图3 图4然后点击调试,一个简单的加载数据,显示数据和操作数据的程序就产生了。

接下来,我们需要分析自己的土地信息利用平台的功能和特性,并在此基础上进行功能设计和实现。

根据任务要求,土地信息利用平台主要实现数据统计,空间查询,数据录入,数据库认证4大功能,由于还有数据库数据导入这块,我在这里还加上了数据导入功能。

我们在MenuStrip 单击创建菜单项目,命名分别为data(负责将数据导进数据库),spatialquery (空间查询),statistics (统计),logging data (录入数据)程序界面如,图5图5围绕着这4大功能,我们就得开始设计程序并实现之。

由于数据统计,空间查询,数据录入,都以数据库的数据为基础,我这里首先进行数据导入功能的实现。

数据导入的实现:找到解决方案资源管理器,右键自己建的窗口程序名(我自己的是mytry ),添加->新建项->窗体应用程序,并改名为importData ,如图6图6双击主窗体menustrip 里的data菜单项,进入代码编辑界面,然后在dataToolStripMenuItem_Click 函数里创建importData 对象,并调用该对象的show()函数用来显示数据导入窗口。

代码如下private void dataToolStripMenuItem_Click(object sender, EventArgs e) {importData iP = new importData ();iP.Show();}双击解决资源管理器的importData.cs 文件,打开数据导入编辑界面。

界面主要用到的控件有Label ,TextBox ,DataGridView 和Button 。

Label 控件主要用来显示信息,TextBox 控件主要用来接受信息输入,DataGridView 控件主要用来显示数据导入结果,Button 控件用来创建点击响应函数执行代码。

建成界面如图8图8importData 类加载窗口时代码如下private void importData_Load(object sender, EventArgs e){//声明dataBaseNameCmd 控件初始化时连接sql server 字符串对象string constr;constr = "server=localhost;database=Master;Integrated Security=True"; //连接sqlserver 操作SqlConnection mycon = new SqlConnection (constr);mycon.Open();SqlCommand mycmd = new SqlCommand ();mycmd.Connection = mycon;//设置sql 命令,该命令内容是从Master..SysDatabases 表里获取所有的数据库名字并对其以名字进行排列mandText = "SELECT Name FROM Master..SysDatabases ORDER BY Name";//设置dataBaseNameCmd控件显示的数据源(list 是种集合类型,与数组类似,不过可以自动改变自身长度List<string> mydataBaseName;//执行查询操作SqlDataReader mydr;mydr = mycmd.ExecuteReader();mydataBaseName = new List<string>();//逐行查询,获取数据库名并加到mydataBaseName变量后面while (mydr.Read())mydataBaseName.Add(mydr[0].ToString());dataBaseNameCmd.DataSource = mydataBaseName;dataBaseNameCmd.Update();}这里有3个Label,1个TextBox和2个ComboBox控件,分别用来对应dbf数据文件的输入,待更新的数据库表,数据库名的提示和数据输入接收操作。

Dbf输入框不用输入数据,通过点击dbf Button按钮控件打开选择dbf文件框便可获得dbf文件数据。

我们命名dbf数据文件的输入TextBox控件的name属性为showDbfPath。

待更新的数据库表,数据库名的ComboBox控件的name属性,DataTableCmd,dataBaseNameCmd。

在窗口初始化时自动连接数据库,获取数据库名称并显示在dataBaseNameCmd控件上。

设置dataBaseNameCmd的SelectedIndexChanged函数,其内容是用来根据下拉列表的改变而改变DataTableCmd控件里下拉值。

其代码如下private void dataBaseNameCmd_SelectedIndexChanged(object sender, EventArgs e){string constr = string.Format("server=localhost;database={0};Integrated Security=True", dataBaseNameCmd.Text);SqlConnection mycon = new SqlConnection(constr);mycon.Open();SqlCommand mycmd = new SqlCommand();mycmd.Connection = mycon;mandText = "Select Name FROM SysObjects Where XType='U' orDER BY Name ";List<string> mydataTableName;SqlDataReader mydr;mydr = mycmd.ExecuteReader();mydataTableName = new List<string>();while (mydr.Read())mydataTableName.Add(mydr[0].ToString());DataTableCmd.DataSource = mydataTableName;DataTableCmd.Update();}dbf Button按钮控件的name属性为openDbf。

相关主题