GIS课程设计报告1

地理信息系统课程设计报告

院(系)别:南京工业大学测绘工程系

班      级:测      绘 0  9  0   3

姓      名: 陈                 鹏

指 导教师:   马     文          波  

                                                                20##年6月24日



目   录

1课程设计目的.... 3

2课程设计内容.... 3

3课程设计分析.... 3

4课程设计步骤.... 4

5课程设计成果.... 9

6课程设计体会.... 10

一、课程设计目的

《地理信息系统原理》课程设计是测绘工程专业的专业课实践环节,是《地理信息系统原理》课程教学的组成部分,是巩固和深化课堂教学内容的重要步骤,是培养学生动手能力和实践的有效手段。通过集中实习,加深对地理信息系统原理的理论与方法的认识,能够熟练使用GIS软件,并完成教师布置的任务。

二、课程设计内容

为一个垃圾掩埋场选址。在这个练习里只考虑地形、土地覆盖、水文和土壤等特征,使用的是Grid数据。

注意:Grid 是一些文件的集合。最好不要在Windows 资源管理器里进行移动、更名、拷贝、删除或其它的修改操作,要使用ArcCatalog。Grid 的名称不能超过11 个字符,名称只能包含字母、数字或下划线。

三、课程设计分析

随着社会的发展,位址选址的重要性日益突出,如何对各类位址进行选址。怎样才能选出最佳位址仍然是大家十分关注的问题。传统选址模型是基于统计的静态模型,其选址方法一般是先建立一个模型,然后经过一系列的计算得出选址点的位置。这种数学模型常常不考虑地形地貌,运输条件等因素,这样会造成选址结果在实际应用中往往造成不必要的浪费和环境污染。社会的发展带动了各行各业的发展,但是环境问题日趋严重。现在社会上垃圾场选址日益增多,但由于地址的选择不当造成的经济不景气,环境污染严重的现象也十分严重。本次课程设计的垃圾场选址问题是在某一给定的计划区域中寻找优选位置,从而建立的选址区域, 实现选址达到最少环境污染。

3.1 垃圾场选址的一般原则

垃圾场选址是指在一个具有若干居民地及若干个有需求的经济开发区域内,选一个地址设为垃圾流通点的规划过程。垃圾场选址模型一般遵循下列原则:

(1)适应性原则:垃圾场的选址须与国家以及省市的经济发展方针、政策相适应,与环境资源和需求分布相适应。

(2)协调性原则:垃圾场的选址应将区域的废品处理与垃圾流通作为一个大系统来考虑,使垃圾场的位置,在地域分布、经济水平、环境卫生等方面互相协调。

(3)战略性原则:垃圾场的选址应具有战略眼光,既要考虑目前的实际需要,又要考虑日后发展的可能。

3.2 垃圾场选址的影响因素

现代环保理论原理已经证明,在城市现代经济建设体系规划过程中,垃圾场的选址主要应考虑以下因素。

自然环境因素:地质条件;水文条件;地形条件等。

经营环境因素:居民需求分布;与已有的掩埋场的距离。

为了避免对小溪和河流的污染,必须远离水源至少200米。

垃圾场地的坡度要小于3%。

垃圾场地选择最好距离已有垃圾场400米。

垃圾场地选择最好距离土壤排水层50米外

    空间多准则问题需要使用多条准则来帮助制定决策,但不同的准则对结果的贡献比例也不同。在多准则决策中,使用权重来衡量准则的相对重要性,权重的大小决定了该条准则对结果的影响比重。结合所查阅的资料以及我个人的认识,我认为定权以如下选择:其中,坡度的权重一般为0.1~0.3;已有的掩埋场的距离是垃圾场选址的主要因素,一般在0.3~0.5左右;河流缓冲区状况权重系数一般为0.2~0.4,是仅次于已有的掩埋场的距离次重要因素;其他因素如土壤排水层,一般在0.1~0.2之间。

                          表1  评分表

四、课程设计步骤

1)设置工作环境

1.  创建d:\landfill文件夹,把数据拷贝到此文件夹下。

2.  打开ArcMap,激活空间分析扩展模块。选择Tools>Extensions,选中Spatial Analyst。

3.  从View>Toolbars 选中Spatial Analyst,显示工具条。

4.  打开landfill\If_analysis\下的landfill_analysis.mxd。

5.  从空间分析工具条,选择Options。在Options 对话框,点击General 标签,将工作空间设置为landfill\If_annlysis。

6.  分析环境是为所有grid 操作设置x,y 坐标范围。分析范围默认是一个矩形。边界多边形(Mask)可以用图层的形状来替代矩形范围。在General 标签,从下拉列表中选择county_bnd 作为边界多边形。

7.  点击Extent 标签。选择Same as Layer county_bnd。点击Cell Size 标签,选择As Specified Below,输入1000。

2)制作坡度图

1.  DEM是一个连续面,可以从这个表面派生出山体阴影图、等高线、坡度等信息。坡度在定位垃圾掩埋场时是一个有重要意义的因素,因为地形对于挖掘影响很大。

 

3)河流缓冲区分析

河流和垃圾掩埋场之间的距离是定位新的掩埋场的重要因素。尽管以前有一些掩埋场建在了河岸上,这在今天是不可取的。使用Buffer Wizard创建多重缓冲区,缓冲间隔有自己设计(如200m,500m等),并将结果转换为栅格数据。

4)计算与已有的掩埋场的距离

选择Distance>Straight Line,将图层设置为landfills,接受其它缺省的设置。点击ok。生成了新的栅格图层。像元值表示该点到最近的开放的landfill 的距离,以米为单位。

5)添加土壤排水层

点击Add Data 按钮,漫游到landfill\If_analysis\d_analysis\,将soildrain.lyr 添加到地图。

6)准备分析

1.  右键点击Data Frame,选择Properties,点击General 标签。将名称改为Suitability Analysis。

2.  右键点击Suitability Analysis,选择New Group Layer。右键点击New Group Layer,选择Properties,点击General 标签,将名称改为Final Proposal。

3.  将landfills、county_bnd 和Slope of elevation 图层拖到Final Proposal 图层组,关闭图层组。

4.  移除streams 和elevation 图层。

5.  激活Suitability Analysis。将所有图层的图例隐藏。Final Proposal 图层组提供背景数据。其它图层是用于适宜性分析的。

6.  保存地图文档。

7)适宜度的确定

设计适宜度等级。如可将每个数据图层重新分类到1 到5 的范围,5 作为最适宜的位置,1 是最不适宜的位置。

8)坡度重分类

1.  从Spatial Analyst 下拉菜单中选择Reclassify。选择Slope of elevation 作为输入栅格。在Reclassify 对话框,点击Classify 按钮,将分类方法设置为Equal Interval,分成5 类。点击OK。

2.  在Reclassify 对话框,按照右表所示修改值。注意:在每个值和破折号之间空格。修改后点击OK。会生成一个名为Reclass of Slope of elevation 的图层。

3.  右键点击新图层。选择Properties,在Symbology 标签,使用classified 方式,分成5 类,选择一个合适的色阶。点击OK。

9)距离重分类

1.  从Spatial Analyst 下拉菜单中选择Reclassify。选择sl_dist 为输入栅格。

2.  点击Load 按钮,从\If_analysis\tables 文件夹下选择distance_reclass。在Reclassify 对话框点击OK。生成名称为Reclass of sl_dist 的新的grid。

3.  右键点击图层,选择Properties,按照前面的方案进行符号化。右键点击图层,选择Make Permanent,将数据保存为\If_analysis\d_reclass\distance_rl。

10)土壤排水重分类

点击Add Data 按钮,从\If_analysis\d_reclass 添加soildrain_rl 图层。将图层名称修改为Reclass of soildrain。

11)河流缓冲区重分类

1.         从Spatial Analyst 下拉菜单中选择Reclassify。

2.         在Reclassify 对话框,选择Stream Buffers作为输入栅格。点击Unique 按钮。接受所有缺省的新值,只把NoData 的新值改为5。距离河流4km 以外的区域是垃圾掩埋场的最合适区域。距离河流越近越不适宜。

3.         右键点击图层,选择Properties,进行符号化。右键点击图层,选择Make Permanent,将数据保存为\If_analysis\d_reclass\buffers_rl。

12)土地覆盖分类

1.  在TOC 中让coverclass 图层显示。

2.  自己根据下表确定分类方案。考虑各种土地类型的自然和经济价值,改变土地利用类型的花销,以及土地类型的相对丰富和不足(查看count 字段)。最后的方案应该是5类。有些土地类型可能是完全不适宜的,应该用NoData 进行排除。

3.  从Spatial Analyst 下拉菜单选择Reclassify。以coverclass 为输入栅格。点击Unique 按钮。输入你的分类方案。点击OK。生成名为Reclass of coverclass的新数据。

4.  按照前面的方案进行符号化、永久化,保存为\If_analysis\d_reclass\cover_rl。

13)权重模型

1.  从Spatial Analyst 下拉菜单选择Raster Calculator。在栅格计算器的左边有个grid 图层的列表。

2.  双击图层名称和运算符建立表达式([Reclass of Coverclass] + [Reclass of Distance to landfills] + [Reclass of Slope of elevation] + [Reclass of soildrain] +[Reclass of Stream Buffers])。

3.  在栅格计算器中,点击Evaluate。生成新的名为Calculation 的临时grid。

4.  右键点击图层,选择Properties。在Symbology 标签以独立值的方式分类显示。保存地图文档。

五、课程设计成果

六、课程设计体会

通过这五天来对地理信息系统的实训,使我对这门课程有了更深一层的理解和认识,并且可以熟练的操作ArcGIS,可以进行地址的选址配准,并且可以创建相应的专题地图。在每天的实训过程中不断充实和丰富自己。并且每天都会有新的问题出现,在不断解决问题的过程中提升自己的实际操作能力。在整个实训过程中要感谢周围同学的帮助。

 

第二篇:GIS软件开发课程设计报告书(1)

山东建筑大学

课程设计报告书

课 程: GIS设计与应用 院 (部): 成教学院 专 业: 测绘工程 班 级:学生姓名:学 号:实习期限: 1周(第18周) 指导教师: 孙英君

教研室主任: 院长(主任):1

1引言

随着我国经济水平突飞猛进的发展,科学技术不断向前,传统的教学方式效率不高,因此越来越不能满足教育服务工作的需要。全球查询服务系统将为科学技术普及中学教学工作提供一种方便、快捷的方式。该系统将为科学普及和教学工作的发展带来很好的促进作用。

电子地图是空间信息表达与可视化的主要形式,电子地图作为一种新型地图,无论在地理信息的地图表示方面,还是在地图信息的利用方面,都有其独特的优势。但是目前人们对电子地图的编绘和使用只是局限在用传统的纸质地图的制图理论和方法制作电子地图,将电子地图的利用视为传统纸质地图利用方式的自动化。没有充分挖掘GIS独特的优势(比如要素与属性的双向查询),电子地图的应用也受到限制。空间查询与空间分析是GIS(Geography Informa-tion System,地理信息系统)的核心特征之一,也是空间信息服务(如Web Feature Service)实现中的关键问题。如何在网络地图服务场景下提供高效能的空间查询与空间分析功能是网络地图服务器设计与实现中的挑战性问题。

2 系统分析

2.1 需求分析

目前,随着信息化水平的不断提高以及信息技术的普及,相关技术逐渐进入一般人的生活中,因而数字化信息化的教学方式被引入一般中学教学以及一些科学技术普及工作中,然而在相关需求不断扩大的现在,与其相配套的技术却略有滞后,传统的方法不仅操作难度大,同时效率低下。如何满足人们日益增长的需求以及方便教师与科普工作者进行一般的教育科普工作,是当前必须解决的一个问题。

基于GIS的全球地理查询系统是一个拥有全球地方简易地理信息的数据库,集成了地理信息管理模块可以实现GIS的空间查询,分析功能及可视化功能的软件。其旨在满足广大教育与科学普及工作者的需求,采用GIS技术,使地理数据的查询、分析更加方便快捷,且操作简单容易,易于一般没有任何计算机操作的人员使用。实现了授课的高科技化。

该信息平台大大提高了信息化、智能化程度,提高了数据的集成度,对空间数据的查询,分析更加方便、数据结构更为合理,并增加了对动态数据的存储、处理和显示,提供了更多的管理与分析模块,在一般中学教学与科学普及工作中有一定的优势。

2

3系统设计

3.1 总体设计

3.1.1 用户需求

在系统具体设计前必须明确所要设计系统的用户需求,只有了解了用户的具体要求才能依此为依据进行系统具体功能的设计,这样设计的系统才有其存在的意义。然而对于本系统来说其用户的需求是能够方便快捷的查询,分析世界地图上各个地区的一些基本的地理信息属性,例如面积,经纬度,距离等,并可以实现数据筛选功能。同时操作要求便捷,数据要用文字,数字,图形等快速的显示出来。

3.1.2系统目标

全球地理查询系统的目标主要是实现中学课堂教学及一般科学普及单位科普工作的信息化,来满足当前社会发展趋势下用户要求,可以给用户提供一些最基本的地理信息,为了提高课堂教学以及科学普及工作的信息化,加快教育信息化发展,为地理教学科普而开发基于SuperMapObject6.0和VisualBasic 语言GIS建立的全球地理查询系统,并希望通过这个系统使课堂地理教学信息化更加普及,系统目标如下:

(1)系统应能实现图形和属性的连接,实现用户对图形及属性的双向检索;

(2)系统具有快速对地理信息进行查询、空间分析与显示功能;

(3)系统应具有良好的扩展性与改进空间。

3.1.3 总体结构

本课题所研究的全球地理查询系统根据用户的需要,实现了地理信息查询,以及测距,测面积的功能。经过需求分析阶段的工作后,系统必须 “做什么”的问题已经解决了,现在是解决“怎么做”这个问题的时候了。总体设计的基本目的就是回答系统应该如何实现这个问题。系统总体结构设计是要根据系统分析的要求和组织的实际情况来对新系统的总体结构形式进行大致设计,它是一种宏观、总体上的设计和规划。

1)全球地理查询系统主要功能是让用户方便对于基础地理信息的查询与分析工作 ,方便教学与科普活动。

2)数据的属性查询模块主要功能是对所属地区基本地理信息,例如面积,经纬度等的查询。

3)条件查询的主要功能是设置一条件,对于满足此条件的地域进行显示的功能。

系统功能总体结构图如图1:

3

图1、系统功能总结构图

3.1.4 系统功能

本课题主要基本地理信息的查询分析服务,目的是为课堂教学更加科学更加人性化,是用户轻而易举就可以完成地理相关信息的查询与检索功能。本系统重要包括五个独立的模块:地图浏览模块,查询模块,娱乐模块,精确查询模块,帮助模块。几个模块的使用大大提高了用户信息检索的效率与精确度,为用户提供了很大的方便。

3.2 详细设计

3.2.1 子系统设计

本系统主要分为5个独立的模块:地图浏览模块、娱乐模块、精确查询模块、查询功能模块,帮助模块。在地图浏览模块中,用户可以使用相关控件对地图进行漫游,放大,缩小,也可以根据个人需要进行自由缩放,以及全屏观看在娱乐模块中,为大家在学习工作之余提供了小游戏。在精确查询模块中,进行SQL查询,根据用户的不同需求对信息进行检索,并对检索结果进行排序,并且可以保存输出查询结果。在查询模块中,可以查询相关地域的属性,使用条件查询可以对地图上的符合查询条件的地点通过图像进行显示。帮助模块用于对用户提供一定的帮助。

GIS软件开发课程设计报告书1

4

3.2.2 数据库设计

由于是地理信息系统,全球地理查询系统数据库也应包括空间数据库和属性数据库,再此采用关系型数据库模式。具体的属性数据以图表形式记录,而图形数据以拓扑关系记录。并且在这些建立这些专题数据库时要注意各种专题信息的关系字段,保证互相之间都有联系。数据建库时,要按照分类标准进行科学分类,要符合数据编码的一般要求:

(1)凡国家已施行的编码规范和标准,均按国家规定的执行;

(2)科学编码系统的设计必须可靠地识别数据信息的分类,以较少的代码提供丰富的参考信息,以及根据代码结构能进行数据间关系的逻辑推理和判别;

(3)编码不宜过长,一般为4—7位,以减少出错的可能性和节省存储空间。对于多要素的数据信息,通过设置特征位来有效地压缩码位的长度;

(4)编码标准化,其内容包括统一的码位长度、一致的码位格式和明确的代码含义,不能出现代码的多义性等等。

此外,数据质量要严格控制,主要控制保证:数据完整性、数据一致性、位置精度、时间精度、属性精度。系统E-R图如图2:

GIS软件开发课程设计报告书1

图2、系统E-R

3.2.3功能模块设计

(1) 查询功能模块

Private Sub Toolbar2_ButtonClick(ByVal Button As MSComctlLib.Button) Select Case Button

5

Case "属性查询"

SuperMap1.Action = scaSelect

Case "条件查询"

Dim objDs As soDataSource '数据源

Dim objDtVector As soDatasetVector '矢量数据集

Dim objRecordset As soRecordset '记录集

Dim objSelection As soSelection '选择集

'取矢量数据集:取其中面数据集"World"进行查询

Set objDs = SuperWorkspace1.Datasources.Item("MyDataSource") If objDs Is Nothing Then Exit Sub

Set objDtVector = objDs.Datasets("World")

If objDtVector Is Nothing Then

MsgBox "打开数据集错误", vbInformation

Exit Sub

End If

'使用 SQ L过滤条件安从数据集中查询出记录集,

Set objRecordset = objDtVector.Query(txtExpression.Text, True) If objRecordset Is Nothing Then

Exit Sub

Else

'将查询结果加入到选择集中,使其高亮显示

Set objSelection = SuperMap1.Selection

objSelection.FromRecordset objRecordset

'刷新地图窗口

SuperMap1.Refresh

End If

Set objDtVector = Nothing

Set objRecordset = Nothing

Set objSelection = Nothing

End Select

End Sub

Private Sub Command1_Click()

Dim s1 As String

Dim s_id As String

Dim s_nam As String

6

If Text1.Text = "" Then

s_id = "%"

Else

s_id = Text1.Text

End If

If Text2.Text = "" Then

s_nam = "%"

Else

s_nam = Text2.Text

End If

s1 = "select * from goods where id like '" + s_id + "' and nam like '" + s_nam + "'"

Adodc1.RecordSource = s1

Adodc1.Refresh

End Sub

open "c:\1.txt" for input as #1

rs.open "select * from table_a where 字段1 not in (select 字段1 from

table_b)",conn

while not rs.eof

print #1,rs("字段1")

rs.movenext

wend

rs.close

close #1

open "c:\2.txt" for input as #1

rs.open "select * from table_a where 字段1 in (select 字段1 from table_b)",conn while not rs.eof

print #1,rs("字段1")

rs.movenext

wend

rs.close

close #1

(2) 娱乐模块

Private Sub Toolbar3_ButtonClick(ByVal Button As MSComctlLib.Button) Select Case Button

Case "游戏"

Shell "C:\Documents and Settings\Administrator\桌面\Visual Basic 6.0\ddchess.exe" Case "音乐"

7

Shell "F:\KuGou2010\KuGoo.exe"

Case "惊喜"

Print "售价100万,地科免费!"

FontName ="黑体"

FontItalic = True

FontSize = 48

End Select

End Sub

(3) 精确查找模块

Private Sub btnSQL_Click()

frmSQLExpression.Show vbModal, Me

End Sub

Private Sub btnShowDt_Click()

Dim i As Integer

Dim objDs As soDataSource

Dim objDt As soDataset

If btnShowDt.Caption = "显示生成的数据集" Then Set objDs = SuperWorkspace1.Datasources(1) If strDtName = "" Then Exit Sub

SuperMap1.Layers.RemoveAll

Set objDt = objDs.Datasets(strDtName)

SuperMap1.Layers.AddDataset objDt, True SuperMap1.Refresh

btnShowDt.Caption = "显示全部图层"

Else

Set objDs = SuperWorkspace1.Datasources(1) For i = 1 To objDs.Datasets.Count

Set objDt = objDs.Datasets(i)

SuperMap1.Layers.AddDataset objDt, True Next

btnShowDt.Caption = "显示生成的数据集" End If

SuperMap1.Refresh

End Sub

8

(4) 地图浏览模块

Private Sub Toolbar1_ButtonClick(ByVal Button As MSComctlLib.Button)

Select Case Button

Case "放大"

SuperMap1.Action = scaZoomIn

Case "缩小"

SuperMap1.Action = scaZoomOut

Case "自由缩放"

SuperMap1.Action = scaZoomFree

Case "漫游"

SuperMap1.Action = scaPan

Case "选择"

SuperMap1.Action = scaSelect

Case "全屏"

SuperMap1.ViewEntire

Case "演示"

'建立地图窗口与工作空间的联系,用于显示数据

SuperMap1.Connect SuperWorkspace1.Objec

Dim strAlias As String '数据源别名

Dim nEngineType As seEngineType '数据源引擎类型

Dim strDatasourceName As String '数据源所在路径

Dim objDataSource As soDataSource '数据源对象,指向打开的数据源

Dim bReadOnly As Boolean '数据源是否只读打开

Dim objLayer As soLayer '图层对象变量,指向将要打开的图层

Dim bAddToHead As Boolean '是否将数据集加到地图最上一层显示

Dim i As Integer '数据集索引

strAlias = "MyDataSource" '别名可任意,但建议取数据源文件名相同的名称 nEngineType = sceSDBPlus '可打开不同引擎的数据源

strDatasourceName = "C:\Documents and Settings\Administrator\桌面\Visual Basic 6.0\world.sdb" '数据源所在路径,也可以是相对路径

bReadOnly = False '非只读打开

Set

bReadOnly) objDataSource strAlias, = nEngineType, SuperWorkspace1.OpenDataSource(strDatasourceName,

9

If objDataSource Is Nothing Then

MsgBox "打开数据源失败!", vbInformation

Else

For i = 1 To objDataSource.Datasets.Count

'把数据源中的所有数据集加入到 SuperMap 中显示 bAddToHead = True

SetobjLayer

SuperMap1.Layers.AddDataset(objDataSource.Datasets.Item(i), bAddToHead) Next

End If

'刷新地图窗口

SuperMap1.Refresh '可定制选中对象风格,或保持默认

SuperMap1.Selection.Style.PenColor = RGB(231, 77, 0)

SuperMap1.Selection.Style.PenWidth = 1

SuperMap1.Selection.Style.PenStyle = 1

SuperMap1.Selection.Style.BrushStyle = 5

SuperMap1.Selection.Style.BrushColor = RGB(115, 69, 140)

SuperMap1.Selection.Style.BrushBackColor = RGB(239, 150, 255) SuperMap1.Selection.Style.BrushOpaqueRate = 50

'释放内存

Set objDataSource = Nothing

Set objLayer = Nothing

Case "退出"

End

End Select

End Sub

(5) 帮助模块

Private Sub bb_Click()

MsgBox "GIS全球查询系统1.3,有问题请联系我们!"

End Sub

Private Sub lx_Click()

MsgBox "邮箱jj208512@163.com"

End Sub

Private Sub wz_Click()

= 10

Shell "explorer.exe http://user./470170583/infocenter"

End Sub

3.2.4 用户界面设计

用户界面基于visual basic开发提供,分为登陆界面与使用界面。

登陆界面

Private Sub Command1_Click()

If Text1.Text = "08" And Text2.Text = "08" Then

GIS全球查询系统.Show

GIS全球查询系统3.Hide

Else

MsgBox "密码或账号有错误,请重新输入!", vbExclamation

Text1.Text = ""

Text2.Text = ""

End If

End Sub

Private Sub Command2_Click()

End

GIS软件开发课程设计报告书1

End Sub

图3.2.4(1)

需要账号密码,用户输入后即可享用。通过设置此项目可以保护用户的隐私与使用权。

11

图3.2.4(2)用户使用界面

本界面中提供了世界地图,用户在此界面中可以对地图信息实现查找,分析的功能。能够迅速定位用户所需的地理信息包括人口,面积,经纬度等。

用户除了可以使用主界面已有功能外,另外还可以实现SQL查询(界面如下图)

GIS软件开发课程设计报告书1

图3.2.4(3)

GIS软件开发课程设计报告书1

12

图3.2.4(4)输入相应条件

用户通过输入相应条件,可以检索符合条件的所有结果并对其进行排序,结果如下图图3.2.4(5),3.2.4(6)

GIS软件开发课程设计报告书1

图3.2.4(5)文本显示结果

GIS软件开发课程设计报告书1

13

图3.2.4(6)图片显示结果

通过浏览结果,用户可以查询到符合条件的地区以及其基本地理信息。 4设计结论

全球地理查询系统基于SuperMapObject6.0和VisualBasic的GIS,通过利用信息技术手段,为用户提供传统教学享受不到的便利,界面友好,操作简单,运行过程中反应便捷,迅速,极大提高了教育教学的效率,与传统方式相结合,可以达到相当好的教学效果。

GIS软件开发课程设计报告书1

14

相关推荐