GIS实习报告.docx
- 文档编号:8635998
- 上传时间:2023-02-01
- 格式:DOCX
- 页数:38
- 大小:712.88KB
GIS实习报告.docx
《GIS实习报告.docx》由会员分享,可在线阅读,更多相关《GIS实习报告.docx(38页珍藏版)》请在冰豆网上搜索。
GIS实习报告
组
件
式
GIS
实
习
报
告
班级:
地信122
姓名:
张开瑞
时间:
2014.6.9-6.20
指导老师:
尹涛
实习题目:
数字长清校园
………………………………………………………前言
一、………………………………………………………………系统简要
1、………………………………系统分析及其开发环境。
2、………………………………校园截图及配准过程。
3、………………………………矢量化及添加要素名称。
二、………………………………………………………………窗口设计
三、………………………………………………………………开发案例
1、………………………………欢迎页面、浮动加载工具箱功能。
2、………………………………量测功能。
3、………………………………查询功能。
4、………………………………鹰眼功能。
5、………………………………不同的分析功能。
6、………………………………数据和布局视图。
7、………………………………鼠标跟随、坐标状态显示功能。
7、………………………………北京54坐标转换。
8、………………………………标签编辑和右击属性、快捷键设置
四、………………………………………………………………代码加载
五、………………………………………………………………运行截图
六、………………………………………………………………发布安装
七、………………………………………………………………结论
………………………………………………………………后记
前言:
改设计是由山东交通学院长清校区卫星地图运用桌面版GIS和AE共同设计的计算机软件,对于初学者具有较强的实习功能,体现出对AE初级程序的开发,对初学者具有较好的研究基础。
一、1、系统分析:
用户对象:
各类用户。
功能简介:
结合桌面版GIS,设计对地图的浏览功能,数据及布局视图,进行网络、缓冲区等分析,进行空间和属性查询、进行坐标系的转换等功能。
2、开发环境:
VS2010、开发语言C#、ArcGISEngine组件、ArcGISDeskTop
3、校园地图设计:
地图范围:
山东交通学院长清校区
地图的坐标系:
WGS84坐标系
地图的现势性:
最新的
地图原始图像来源:
4.地图配准:
1、加载数据和影像配准工具2、输入控制点3、设定数据框的属性4、矫正并重采样栅格生成新的栅格文件。
地图图层:
在校园地图中分为点、线、面图层、还有一个地图图层。
校园地图:
二、功能设计:
2、页面布局设计(窗体分为多个)
3、程序设计代码:
ShowInTaskbar->True(令窗口不在任务栏里显示)
StartPosition->CenterScreen(让窗口运行时出现在屏幕最中间)
FormBorderStyle->None(去掉窗体的边框和标题栏,这样才像欢迎界面嘛)
BackgroundImage->(这个可以自己先做一副比较好的图片或者找一副都可以,最好是刚好和你的欢迎窗口相同大小的)
或者你也可以在窗口上设置背景颜色写些文字之类的都可以,窗口大小就随便你啦。
修改Program.cs文件里的Application.Run(newform1());
将其改成Application.Run(newForm9());
进入:
Form1frm1=newForm1();
frm1.MdiParent=this.MdiParent;
frm1.Show();
this.Hide();
退出:
DialogResultresult=MessageBox.Show("确定要退出吗","提示",MessageBoxButtons.YesNo,MessageBoxIcon.Question);
if(result==DialogResult.Yes)
{
Application.Exit();
}
滚动:
设置Timer属性Enable改为true。
Label中属性ATUsize改为False。
添加代码:
label1.Text=label1.Text.Substring(1,label1.Text.Length-1)+label1.Text.Substring(0,1);
加载地图:
1:
许可:
ESRI.ArcGIS.RuntimeManager.Bind(ESRI.ArcGIS.ProductCode.Engine)
2:
MapControl加载属性
3:
浮动加载:
根据这个位置作为当前位置找到地图文档位置及文件名的命令为:
boolblMxdFileOK;
stringMxdPath;
MxdPath=Application.StartupPath+@"\..\..\..\..\..\data\无T标括?
题琣.mxd";
blMxdFileOK=axMapControl1.CheckMxFile(MxdPath);
if(blMxdFileOK)
{
axMapControl1.LoadMxFile(MxdPath);
}
else
{
}
2、浏览功能:
保存:
ICommandcommand=newControlsSaveAsDocCommandClass();
command.OnCreate(axMapControl1.Object);
command.OnClick();
打开地图:
privatevoidToolStripMenuItem_Click(objectsender,EventArgse)
{
ICommandpMxd=newControlsOpenDocCommandClass();
pMxd.OnCreate(axMapControl1.Object);
pMxd.OnClick();
}
添加数据:
privatevoidToolStripMenuItem_Click(objectsender,EventArgse)
{
ICommandpAddData=newControlsAddDataCommandClass();
pAddData.OnCreate(axMapControl1.Object);
pAddData.OnClick();
}
放大:
privatevoidToolStripMenuItem_Click(objectsender,EventArgse)
{
ICommandpfangda=newControlsMapZoomInToolClass();
pfangda.OnCreate(axMapControl1.Object);
axMapControl1.CurrentTool=pfangdaasITool;
}
缩小:
privatevoidToolStripMenuItem_Click(objectsender,EventArgse)
{
ICommandpsuoxiao=newControlsMapZoomOutToolClass();
psuoxiao.OnCreate(axMapControl1.Object);
axMapControl1.CurrentTool=psuoxiaoasITool;
}
漫游:
privatevoidToolStripMenuItem_Click(objectsender,EventArgse)
{
ICommandpPan=newControlsMapPanToolClass();
pPan.OnCreate(axMapControl1.Object);
axMapControl1.CurrentTool=pPanasITool;
}
全幅显示:
privatevoidToolStripMenuItem1_Click(objectsender,EventArgse)
{
ICommandFullExtent=newControlsMapFullExtentCommandClass();
FullExtent.OnCreate(axMapControl1.Object);
FullExtent.OnClick();
}
自由缩放:
privatevoidToolStripMenuItem1_Click(objectsender,EventArgse)
{
ICommandpziyou=newControlsMapZoomPanToolClass();
pziyou.OnCreate(axMapControl1.Object);
axMapControl1.CurrentTool=pziyouasITool;
}
前一视图:
privatevoid前一视图ToolStripMenuItem_Click(objectsender,EventArgse)
{
ICommandpCommand=newControlsMapZoomToLastExtentBackCommandClass();
pCommand.OnCreate(this.axMapControl1.Object);
pCommand.OnClick();
}
后一视图:
privatevoid后一视图ToolStripMenuItem_Click(objectsender,EventArgse)
{
ICommandpCommand=newControlsMapZoomToLastExtentForwardCommandClass();
pCommand.OnCreate(this.axMapControl1.Object);
pCommand.OnClick();
}
右键快捷菜单:
Contextmenustrip快捷菜单工具
在mousedonwn中添加
if(e.button!
=2)
return;//
else
{
contextMenuStrip1.Show(axMapControl1,e.x,e.y);//
}
3、查询
图查属性
点选查询代码:
privatevoidbutton2_Click(objectsender,EventArgse)
{
ICommandpse=newControlsMapIdentifyToolClass();
pse.OnCreate(axMapControl1.Object);
axMapControl1.CurrentTool=pseasITool;
}
查询显示图层:
在MapControl事件中的OnSelectionChanged
privatevoidaxMapControl1_OnSelectionChanged(objectsender,EventArgse)
{
stringstringvalue;
IMappMap;
pMap=axMapControl1.Map;
ISelectionselection=pMap.FeatureSelection;
IEnumFeatureSetupenumFeatureSetup=selectionasIEnumFeatureSetup;
enumFeatureSetup.AllFields=true;//这里很必要
IEnumFeatureenumFeature=enumFeatureSetupasIEnumFeature;
enumFeature.Reset();
IFeaturefeature=enumFeature.Next();
while(feature!
=null)
{
stringvalue=feature.get_Value
(2).ToString();//字段的值
MessageBox.Show(stringvalue,"城市");
feature=enumFeature.Next();
}
}
矩形选择:
privatevoidbutton1_Click(objectsender,EventArgse)
{
ICommandpselect=newControlsSelectFeaturesToolClass();
pselect.OnCreate(axMapControl1.Object);
axMapControl1.CurrentTool=pselectasITool;
}
点选:
IPointpoint=newPointClass();
point.PutCoords(e.mapX,e.mapY);
IGeometrypgeo=pointasIPoint;
axMapControl1.Map.SelectByShape(pgeo,null,false);
axMapControl1.ActiveView.Refresh();
线选:
IGeometrypgeo=axMapControl1.TrackLine();
axMapControl1.Map.SelectByShape(pgeo,null,false);
axMapControl1.ActiveView.Refresh();
圆选:
IGeometrypgeo=axMapControl1.TrackCircle();
axMapControl1.Map.SelectByShape(pgeo,null,false);
axMapControl1.ActiveView.Refresh();
多边形:
IGeometrypgeo=axMapControl1.TrackPolygon();
axMapControl1.Map.SelectByShape(pgeo,null,false);
axMapControl1.ActiveView.Refresh();
矩形:
IGeometrypgeo=axMapControl1.TrackRectangle();
axMapControl1.Map.SelectByShape(pgeo,null,false);
axMapControl1.ActiveView.Refresh();
3.2属性查图
在窗体中加入一个标签(Label)、一个按钮(button)和一个文本框(TextBox),添加引用Geodatabase并设置它们的属性值如下
代码:
IMappMap=axMapControl1.Map;
IFeatureLayerpfeaturelayer=pMap.get_Layer
(2)asIFeatureLayer;
IFeatureSelectionpfeatureSelection=pfeaturelayerasIFeatureSelection;
IQueryFilterpQuery=newQueryFilterClass();
pQuery.WhereClause="name='"+this.textBox1.Text+"'";
pQuery.WhereClause="Lower(name)like'%"+this.textBox1.Text.ToLower().Trim()+"%'";
pfeatureSelection.SelectFeatures(pQuery,esriSelectionResultEnum.esriSelectionResultNew,false);
if(pfeatureSelection.SelectionSet.Count==0)
{
MessageBox.Show("无法找到");
}
else
{
ICommandpcenter=newControlsZoomToSelectedCommandClass();
pcenter.OnCreate(axMapControl1.Object);
pcenter.OnClick();
}
}
4、量算设计
4.1、量算(举例:
距离量算和面积量算)
MapControl中
privateinti;
PrivatevoidaxMapControl1_OnMouseDown(objectsender,ESRI.ArcGIS.Controls.IMapControlEvents2_OnMouseDownEvente)
{
switch(i)
{
case1:
IPolylinepPolyline=null;
pPolyline=(IPolyline)axMapControl1.TrackLine();
doubledist;
dist=Math.Abs(Math.Round(pPolyline.Length,2));
MessageBox.Show("您量测的距离为"+dist.ToString()+"米。
","量测提示",MessageBoxButtons.OK,MessageBoxIcon.Information);
break;
case2:
IPolygonpPolygon=null;
pPolygon=(IPolygon)axMapControl1.TrackPolygon();
IAreapArea=(IArea)pPolygon;
doubles;
s=Math.Abs(Math.Round(pArea.Area,2));
MessageBox.Show("您量测的面积为"+s.ToString()+"平方米。
","系统提示",MessageBoxButtons.OK,MessageBoxIcon.Information);
break;}
4.2、比例尺和坐标
状态栏:
statusStrip
MapControl中的OnMousemove事件
privatestringsMapUnits;
PrivatevoidaxMapControl1_OnMouseMove(objectsender,IMapControlEvents2_OnMouseMoveEvente)
{
Scalbel.Text="比例尺1:
"+((long)this.axMapControl1.MapScale).ToString();
CoordinateLabel.Text="坐标X="+e.mapX.ToString()+"Y="+e.mapY.ToString()
+""+sMapUnits;
}
privatevoidForm1_Load(objectsender,EventArgse)
{
esriUnitsmapUnits=axMapControl1.MapUnits;
switch(mapUnits)
{
caseesriUnits.esriCentimeters:
sMapUnits="Centimeters";
break;
caseesriUnits.esriDecimalDegrees:
//sMapUnits="DecimalDegrees";
sMapUnits="度";
break;}
4.3、跟随添加label
label2.Visible=true;
label2.Left=10+e.x;
label2.Top=50+e.y;
label2.Text="X="+e.mapX.ToString()+"Y="+e.mapY.ToString();
5、分析:
5.1、网络分析:
添加TOOLBarControl在里面添加网络分析工具。
5.2、缓冲分析:
1.项目中添加一个新的窗体,名称为“BufferForm”,Name属性设为“缓冲区分析”,添加四个Label、一个ComboBox、两个TextBox、三个Button控件,控件属性设置如下:
控件类型
Name属性
Text属性
控件说明
Label
选择图层:
Label
缓冲半径:
Label
lblUnit
地图单位
标示当前地图的地图单位
Label
输出图层:
ComboBox
cboLayers
所有图层的名称
TextBox
txtBufferDistance
1.0
生成缓冲区的缓冲半径
TextBox
txtOutputPath
缓冲区文件的输出路径,其ReadOnly属性设为True
Button
btnOutputLayer
…
选择缓冲区文件的输出路径
Button
btnBuffer
分析
进行缓冲区分析
Button
btnCancel
取消
取消
2.首先声明两个成员变量,用于保存地图数据和输出文件的路径。
//接收MapControl中的数据
privateIHookHelpermHookHelper=newHookHelperClass();
//缓冲区文件输出路径
publicstringstrOutputPath;
重写BufferForm的构造函数,添加一个参数,用于接收MapControl中的数据。
//重写构造函数,添加参数hook,用于传入MapControl中的数据
publicBufferForm(objecthook)
{
InitializeComponent();
this.mHookHelper.Hook=hook;
}
添加一个自定义函数,用于根据图层名称获取要素图层并返回。
privateIFeatureLayerGetFeatureLayer(stringlayerName)
{
IFeatureLayerpFeatureLayer=null;
//遍历图层,获取与名称匹配的图层
for(inti=0;i { ILayerpLayer=this.mHookHelper.FocusMap.get_Layer(i); if(pLayer.Name==layerName) {
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- GIS 实习 报告