利用ArcGIS软件地理信息系统设计与实现.docx
- 文档编号:4108942
- 上传时间:2022-11-27
- 格式:DOCX
- 页数:22
- 大小:489.21KB
利用ArcGIS软件地理信息系统设计与实现.docx
《利用ArcGIS软件地理信息系统设计与实现.docx》由会员分享,可在线阅读,更多相关《利用ArcGIS软件地理信息系统设计与实现.docx(22页珍藏版)》请在冰豆网上搜索。
利用ArcGIS软件地理信息系统设计与实现
地理信息系统设计与实现
------利用ArcGIS软件
指导老师:
******
实习成员:
Tphxmx
实习时间:
2006.7.20—2006.8.3
1.实习目的:
✓学习ArcGIS软件及其组成部分,并能灵活应用。
✓学习定制自己的工作空间,高效率的完成工作。
✓学习利用ArcCatalog建立地理信息数据库,属性入库。
✓学习利用VBA环境做简单的二次开发。
2.实习工具和环境:
工具:
ArcMap、ArcCatalog
硬件环境:
MicrosoftWindowsXPProfessional2002
3.实习内容:
一、基于ArcGIS平台的空间数据库设计与建立
实习目的:
学习应用ArcGIS软件处理地理信息系统问题,学会使用ArcCatalog与ArcMap。
步骤:
1新建地理数据库
在ArcCatalog中建立如下的地理数据库
为个人数据库添加类和要素,属性
根据《成都市交通运输图》的地图的要素和类,把地图分为河流,道路,行政区域和边界,为每一个要素建一个表,选择坐标系统和添加要素的属性,结果图如下:
2图层分类设计
河流:
面状河流,线状河流
行政区:
行政中心,行政区域,运输中心
道路:
公路,铁路
3空间数据库逻辑结构设计
面状河流:
ployonriver属性name线状河流shpriver属性name
行政区域xingzhengquyu属性Maxnumber,Minnumber,name
行政中心xingzhengzhongxin属性name运输中心yunshuzhongxin属性name
公路gonglu属性name,Maxliuliang,Minliuliang铁路tielu属性name
4空间数据库物理结构设计与实现
在ArcCatalog建库,建类,建要素,选择坐标系,添加属性,过程如下所示
5空间数据库地理参考系统的设置与坐标转换方法
坐标投影采用高斯投影中的北京54(17带)投影坐标系
6空间几何信息入库;实体相关属性入库
将地图导入ArcMAP中进行校正,直到在误差的可允许范围之内.导入建好的数据库,然后开始分要素进行数字化,结果如图所示
1)配准:
当载入bmp格式的成都市交通运输图时需要给地图进行配坐标系,选择坐标系为高斯投影中的北京54(17带)投影坐标系,添加四个控制点保证误差在10m以内.,单击Georeferencing->rectify进行配准.
2)特征提取:
载入《成都市交通图.mdb》数据库,利用Arcmap中的
选择相应图层矢量化并保存结果(即几何信息入库)
3)属性添加:
选中点、线或面状目标,右击,选择Attributes,弹出Attributes对话框,在对话框中设置目标的属性。
(注释:
自动生成的属性无法修改)
4)整饰地图:
标记地图要素,修改要素符号、线条,改变要素颜色以便更好逼真的显示地图
标记地图要素,修改要素符号、线条
.右击要改变属性的图层,在LayerProperties对话框里可以全方面修改图层的显示特性还可以设置简单的查询,连接等功能,更好的表现图层的属性
依比例显示地图:
7.地图数字化结果:
二、ArcMap定制二次开发
目的:
学习制作自己的软件界面,学习基于ArcGIS平台的GIS项目的建立与实现的流程,学习简单的ArcMap二次定制开发。
实习步骤:
(1)菜单定制
(2)工具条定制(3)查询
菜单定制:
包括汉化,屏蔽一些功能,分组,向采单条添加新的功能。
ToolsCustomize,然后右键点击要汉化的菜单名,实现上面的功能
在Customize对话框选择相应的菜单条,把直接拖到采单条可以实现添加,拖动到Customize可以实现删除
工具条定制:
包括工具条的增删和用宏定制工具条
1.利用Customize对话框添加工具条
2.
利用宏定制工具条ToolsMacros在Macros对话框定制宏并编辑功能
例证:
一个表示放大功能的宏示例如下
通过CustomizeCommandsMacros-Commands往工具条里面添加功能,可以改变标签的符号,颜色,实现分组等功能
用界面的方式实现简单查询放大,缩小和查询功能
设计步骤:
ToolsCustomizeCommandsUIControls
单击CreateandEdit按钮进入VBA编程环境
如图所示添加一个用户界面,就可以开始实现功能了
3.例1.简单实现放大缩小,返回上一级,标记要素,打开layer图层等
界面如下
程序如下:
实现放大功能的代码
PrivateSubCommandButton1_Click()
DimpDocAsIMxDocument
DimpEnvAsIEnvelope
SetpDoc=ThisDocument
SetpEnv=pDoc.ActiveView.Extent
pEnv.Expand0.5,0.5,True
pDoc.ActiveView.Extent=pEnv
pDoc.ActiveView.Refresh
EndSub
实现缩小功能的代码
PrivateSubCommandButton2_Click()
DimpDocAsIMxDocument
DimpEnvAsIEnvelope
SetpDoc=ThisDocument
SetpEnv=pDoc.ActiveView.Extent
pEnv.Expand2,2,True
pDoc.ActiveView.Extent=pEnv
pDoc.ActiveView.Refresh
EndSub
返回上一层代码
PrivateSubCommandButton3_Click()
'macro:
FullExtentPlus
DimIntAnsAsInteger
DimPItemAsICommandItem
WithThisDocument.CommandBars
SetPItem=.Find(ArcID.PanZoom_FullExtent)
IntAns=MsgBox("Zoomtopreviousextent?
",vbYesNo)
IfIntAns=vbYesThen
SetPItem=.Find(ArcID.PanZoom_ZoomToLastExtentBack)
PItem.Execute
Else
EndIf
EndWith
EndSub
标记要素的代码
PrivateSubCommandButton4_Click()
DimfilePathAsString
filePath="c:
\arcgis\arcexe83\ArcObjectsDeveloperKit\samples\data\USA\states.lyr"
DimpGxLayerAsIGxLayer
DimpGxFileAsIGxFile
SetpGxLayer=NewGxLayer
SetpGxFile=pGxLayer
pGxFile.Path=filePath
DimpMxDocAsIMxDocument
SetpMxDoc=ThisDocument
pMxDoc.FocusMap.AddLayerpGxLayer.Layer
EndSub
添加图层的代码
PrivateSubCommandButton5_Click()
DimpMxDocAsIMxDocument
DimpGraphicsContainerAsIGraphicsContainer
DimpActiveViewAsIActiveView
DimpTextElementAsITextElement
DimpElementAsIElement
SetpMxDoc=Application.Document
SetpGraphicsContainer=pMxDoc.FocusMap
SetpActiveView=pMxDoc.FocusMap
SetpTextElement=NewTextElement
SetpElement=pTextElement
pTextElement.Text="Xmarksthespot"
pElement.Geometry=pActiveView.ScreenDisplay.DisplayTransformation.ToMapPoint(X,Y)
pGraphicsContainer.AddElementpTextElement,0
pActiveView.PartialRefreshesriViewGraphics,Nothing,Nothing
EndSub
4.例2.构建逻辑表达式查询空间几何对象
界面设计如下:
运行界面:
(一)代码如下
程序1:
根据ComboBox1选择的图层不同ListBox1
用ComboBox选择图层后,通过ListBox显示图层各属性,通过ListBox的Text属性来选择图层的属性。
PrivateSubComboBox1_Change()
'定义文档对象
DimpMxDocAsIMxDocument
'定义地图对象
SetpMxDoc=ThisDocument
DimpMapAsIMap
SetpMap=pMxDoc.FocusMap
DimpILayerAsILayer
DimpLayerAsIFeatureLayer
DimiAsInteger
Fori=0TopMap.LayerCount-1
SetpILayer=pMap.Layer(i)
IfpILayer.Name=ComboBox1.TextThen
SetpLayer=pILayer
ExitFor
EndIf
Nexti
DimpFClassAsIFeatureClass
SetpFClass=pLayer.FeatureClass
DimintLoopAsInteger
DimstrAsString
str=""
ListBox1.Clear
ForintLoop=0TopFClass.Fields.FieldCount-1
str=""+pFClass.Fields.Field(intLoop).Name
ListBox1.AddItemstr
NextintLoop
'Fori=0TopFClass.Fields.FieldCount-1
'str="'"+pFClass.Fields.Field(i).Name+"'"&""+str
'Nexti
'ListBox1.AddItemstr
EndSub
根据查询条件显示查询结果,高亮度显示查询结果
PrivateSubComboBox1_Change()
'定义文档对象
DimpMxDocAsIMxDocument
'定义地图对象
SetpMxDoc=ThisDocument
DimpMapAsIMap
SetpMap=pMxDoc.FocusMap
DimpILayerAsILayer
DimpLayerAsIFeatureLayer
DimiAsInteger
Fori=0TopMap.LayerCount-1
SetpILayer=pMap.Layer(i)
IfpILayer.Name=ComboBox1.TextThen
SetpLayer=pILayer
ExitFor
EndIf
Nexti
DimpFClassAsIFeatureClass
SetpFClass=pLayer.FeatureClass
DimintLoopAsInteger
DimstrAsString
str=""
ListBox1.Clear
ForintLoop=0TopFClass.Fields.FieldCount-1
str=""+pFClass.Fields.Field(intLoop).Name
ListBox1.AddItemstr
NextintLoop
'Fori=0TopFClass.Fields.FieldCount-1
'str="'"+pFClass.Fields.Field(i).Name+"'"&""+str
'Nexti
'ListBox1.AddItemstr
EndSub
实现按钮功能的如下:
PrivateSubCommandButton9_Click()
TextBox1.Text=TextBox1.Text+"And"
EndSub
PrivateSubListBox1_Click()
TextBox1.Text=TextBox1.Text+ListBox1
EndSub
加载图层代码:
通过ComboBox显示各图层,并通过循环遍历各图层,从而寻找选中的图层。
PrivateSubUserForm_Activate()
DimpMxDocAsIMxDocument
SetpMxDoc=ThisDocument
DimpMapAsIMap
SetpMap=pMxDoc.FocusMap
DimpLayerAsILayer
DimiAsInteger
ComboBox1.Clear
Fori=0TopMap.LayerCount-1
SetpLayer=pMap.Layer(i)
ComboBox1.AddItempLayer.Name
Nexti
ComboBox3.Text="CreatanewLayer"
EndSub
查询示例1:
查询行政区域的都江堰市,红色区域为查询结果
查询示例2:
查询行政区域的车流量大于2000的区域Maxnumber>2000
查询结果
4.实习总结:
一、完成的任务:
1基于ArcGIS平台的空间数据库设计与建立
1)图层分类设计
2)空间数据库逻辑结构设计
3)空间数据库物理结构设计与实现
4)空间数据库地里参考系统的设置
5)空间几何信息入库,实体相关属性入库
2ArcMap二次定制开发
1)菜单定制
2)工具条定制
3)扩展模块编程与集成
4)由空间几何信息查询相关属性信息
5)构建逻辑表达式查询空间几何对象
二、个人认为此次实习难点(主要针对ArcMap定制二次开发)
1)不清楚ArcGIS内部的接口,类,方法,不清楚ArcGIS的实现逻辑和功能模式,以至于在实现功能时不知道从那里下手,遇到了很大的麻烦。
2)对于组合框Combobox、ListBox的功能和语法不清楚,不会应用简单的语句来实现功能。
3)不会转化问题,把此次而次开发想的难度太大,没有当一个普通的编程题目来做,那样速度会更快。
三、个人体会
这次实习围绕ArcMap解决实际问题的开发的一个完整生命周期,包括建地理信息数据库,属性入库,定制菜单条工具条,增删功能,设置图层的显示属性,利用宏来实现一些特殊的功能,实现一个有利于解决问题的界面环境。
收获非常的大,加深了对应用软件开发过程的理解,对自己的编程能力也是一个警告和提高。
同时明白,在开发过程过一个人力量是很微弱的,只有大家一起积极讨论提出自己的看法才能加快开发流程,更好的实现功能,所以以后一定要注意多交流观点。
ArcGIS个人实习总结
一、完成的任务:
1基于ArcGIS平台的空间数据库设计与建立
1)图层分类设计
2)空间数据库逻辑结构设计
3)空间数据库物理结构设计与实现
4)空间数据库地里参考系统的设置
5)空间几何信息入库,实体相关属性入库
2ArcMap二次定制开发
1)菜单定制
2)工具条定制
3)扩展模块编程与集成
4)由空间几何信息查询相关属性信息
5)构建逻辑表达式查询空间几何对象
在实习中我遇到了很多的问题,有编程方面的,有数字化方面。
但是经过努力后好多问题都得到了解决,实习对我们是很有益的,特别是对我们的自学能力有很大的提高。
二.实习中遇到的主要问题:
1.基于ArcGIS平台的空间数据库设计与建立的方面遇到的问题:
(1)图层分类
在地图中选择分类图层时很难把各种地图要素合理的进行分类,也就是在图层设计时,很难宏观的把握,还好老师给的地图是一张成都交通地图,图上的要素并不是很多,经过和其他同学的交流取经,最后得到了一个我觉得还比较合理的分类。
(2).对ArcGIS软件的很多功能不熟悉
有了对图层的分类也就有了对数据库的结构,因此就没有遇到设计方面的问题,这次的问题主要是不会使用ArcGIS软件的功能,例如在对行政区域的边界进行数字化时,产生公共边不重合的问题,主要就是不知道ArcGIS软件具有TaceTool这个功能键。
因此吃了不少的亏。
还有很多类似的问题就不一一的列举了。
三。
ArcMap二次定制开发
由空间信息查询相关属性信息
主要的难点都是编程方面的,VB语言是我没有学习过的,所以肯定是有困难的。
老师给的相关资料有很多看不懂,问同学也不是全部能得到解决。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 利用 ArcGIS 软件 地理信息系统 设计 实现