组件式GIS二次开发 丁利旺文档格式.docx
《组件式GIS二次开发 丁利旺文档格式.docx》由会员分享,可在线阅读,更多相关《组件式GIS二次开发 丁利旺文档格式.docx(13页珍藏版)》请在冰豆网上搜索。
地图制图及输出
实验六:
空间数据查询
学生姓名:
专业:
班级:
课程名称:
组件式GIS二次开发
实验名称:
实验编号:
No1
指导教师:
李丹
实验地点:
逸夫楼6楼机房1
实验时间:
小组合作:
是()
否(√)
小组成员:
实验目的:
掌握ArcGISEngine软件和VisualStudio2010软件的安装方法,能够完成开发环境的配置。
实验设备:
普通PC
实验内容及步骤:
(可插入图片)
(1)安装VisualStudio2010
选择VisualStudio2010安装程序文件夹中的Setup.exe,在弹出的对话框中选择
“安装MicrosoftVisualStudio2010”。
在弹出的安装向导中单击“下一步”。
在显示的界面中选中“我已阅读并接受条款”,然后单击下一步。
在显示界面的左侧面板中选择“自定义”,可以改变默认的安装路径。
在安装组件选择的界面中根据实际情况选择需要安装的组件,确保VisualC#被
选中,然后点击安装开始整个安装过程。
等待整个安装过程的完成。
安装完成后,点击完成结束整个安装过程。
在开始菜单中或桌面选择运行VisualStudio2010。
第一次运行VisualStudio2010,需要选择默认环境设置。
选择“VisualC#开发
设置”,然后点击“启动VisualStudio”。
显示的界面即是VisualStudio2010集成开发环境。
(2)安装ArcGISEngine
在ArcGISEngineDeveloperKit10安装目录下点击ESRI.exe,在弹出的安装向导
对话框中单击“ArcObjectsSDKfortheMicrosoft.NETFramework”。
在弹出的对话框中选择Next。
在弹出的对话框中选择“Iacceptlicenseagreement”,并单击“Next”。
根据需要在弹出界面中的功能组件选择对话框中选择要安装的功能组件,并在定
义好安装路径后单击“Next”。
在安装信息确认对话框中单击Next,开始安装过程。
在安装信息确认对话框中单击Next。
在安装完成对话框中单击Finish完成安装过程。
在弹出的对话框中对安装软件进行注册。
点击“RegisterNow”。
选择“RegistrationOptions”中的“IhavereceivedanauthorizationfromESRIandam
nowreadytofinishtheregistrationprocess.”,点击“下一步”继续
。
在弹出的对话框中选择license文件进行注册。
点击“完成”按钮,完成ArcGISEngine的安装。
实验小结:
通过本实验的学习我掌握了ArcGISEngine软件和VisualStudio2010软件的安装方法,以及能够完成开发环境的配置。
指导教师评语及成绩:
丁利旺专业:
地理信息科学班级:
13级4班
No2
掌握使用MapControl控件及其它控件进行基本的地图浏览和显示的实现方法。
掌握与地图浏览和显示的相关组件的功能和使用方法。
(1)使用向导创建一个ArcGISEngine应用程序
打开VS2010,点击文件菜单下的新建→项目菜单项,弹出新建项目对话框。
在已安装的模版一栏选择VisualC#下面的ArcGIS,选择ExtendingArcobjects,在中间栏将.NETFramework调整至3.5版本,然后选择WindowsApplication(Engine)项目,选择创建位置和名称,点击确定,就建立了一个基于C#和ArcGISEngine的二次开发程序模版。
(2)在窗体上添加Windows菜单,LicenseControl,MapControl,TOCControl,ToolbarControl等控件,并摆放整齐,设置好控件的属性,使其能够加载并显示实例数据,则完成了最基本的地图数据显示和浏览。
(3)添加放大、缩小和全图功能。
privatevoid放大ToolStripMenuItem_Click(objectsender,EventArgse)
{
//使用IMap接口得到当前地图
IMapmap=this.axMapControl1.Map;
//使用IActiveView得到当前的视图
IActiveViewactiveView=mapasIActiveView;
//得到当前视图的显示范围
IEnvelopeenvelope=activeView.Extent;
//新定义一个IEnvelope接口的对象,来存储新的视图范围
IEnvelopenewEnvelope=newEnvelopeClass();
//分别得到当前视图的宽度和高度
doublemapWidth=envelope.XMax-envelope.XMin;
doublemapHeight=envelope.YMax-envelope.YMin;
//计算新视图范围的四个坐标值
newEnvelope.XMin=envelope.XMin+mapWidth/4;
newEnvelope.XMax=envelope.XMax-mapWidth/4;
newEnvelope.YMin=envelope.YMin+mapHeight/4;
newEnvelope.YMax=envelope.YMax-mapHeight/4;
//将新的视图范围赋值给当前视图,从而更新视图范围
activeView.Extent=newEnvelope;
//刷新当前视图,从而显示放大效果
activeView.Refresh();
}
privatevoid缩小ToolStripMenuItem_Click(objectsender,EventArgse)
//使用IMap接口得到当前地图
newEnvelope.XMin=envelope.XMin-mapWidth/4;
newEnvelope.XMax=envelope.XMax+mapWidth/4;
newEnvelope.YMin=envelope.YMin-mapHeight/4;
newEnvelope.YMax=envelope.YMax+mapHeight/4;
privatevoid全图ToolStripMenuItem_Click(objectsender,EventArgse)
activeView.Extent=activeView.FullExtent;
通过本实验的学习掌握了使用MapControl控件及其它控件进行基本的地图浏览和显示的实现方法。
掌握了与地图浏览和显示的相关组件的功能和使用方法。
No3
掌握使用空间数据访问组件进行基本的空间数据加载的实现方法。
掌握与地图数据加载的相关组件的功能和使用方法。
(3)添加加载shapefile文件的功能。
privatevoidfileGeodatabaseToolStripMenuItem_Click(objectsender,EventArgse)
IWorkspaceFactorywf=newFileGDBWorkspaceFactoryClass();
IPropertySetps=newPropertySetClass();
ps.SetProperty("
DATABASE"
@"
D:
\Software\ArcGIS\ArcTutor\ArcTutor\BuildingaGeodatabase\Montgomery.gdb"
);
IWorkspacews=wf.Open(ps,0);
//MessageBox.Show(ws.Exists().ToString());
IFeatureWorkspacefw=wsasIFeatureWorkspace;
IFeatureClassfc=fw.OpenFeatureClass("
parcels"
MessageBox.Show(fc.FeatureCount(null).ToString());
通过本实验的学习我掌握了使用空间数据访问组件进行基本的空间数据加载的实现方法以及掌握了与地图数据加载的相关组件的功能和使用方法。
No4
掌握使用空间数据访问组件进行基本的空间数据访问的实现方法。
掌握与地图数据访问的相关组件的功能和使用方法。
(3)添加打开图层数据的功能。
privatevoidlayerNameToolStripMenuItem_Click(objectsender,EventArgse)
ILayerlayer=map.get_Layer(0);
MessageBox.Show(layer.Name);
IFeatureLayerfeatureLayer=layerasIFeatureLayer;
IFeatureClassfeatureClass=featureLayer.FeatureClass;
MessageBox.Show(featureClass.AliasName);
通过本实验的学习我掌握了使用空间数据访问组件进行基本的空间数据访问的实现方法。
掌握了与地图数据访问的相关组件的功能和使用方法。
No5
掌握使用地图制图和输出组件进行基本地图制图和地图输出的实现方法。
掌握与地图制图和输出的相关组件的功能和使用方法。
(3)添加从地图输出图像的功能。
privatevoidprintToolStripMenuItem_Click(objectsender,EventArgse)
IPrintAndExportprintAndExport=newPrintAndExportClass();
IExportexport=newExportBMPClass();
export.ExportFileName=@"
c:
\1.bmp"
;
printAndExport.Export(axPageLayoutControl1.ActiveView,export,300,true,null);
通过本实验的学习我掌握了使用空间数据访问组件进行基本的空间数据访问
的实现方法并且掌握了与地图数据访问的相关组件的功能和使用方法。
No6
掌握使用GIS分析组件进行基本查询功能的实现方法。
掌握与GIS查询的相关组件的功能和使用方法。
(3)添加查询统计的功能。
privatevoid查询ToolStripMenuItem_Click(objectsender,EventArgse)
IQueryFilterqueryFilter=newQueryFilterClass();
stringwhereClause="
NAME='
郑州'
"
queryFilter.WhereClause=whereClause;
IFeatureLayerfeatureLayer=this.axMapControl1.Map.get_Layer
(2)asIFeatureLayer;
IFeatureCursorfeatureCursor=featureLayer.Search(queryFilter,true);
IFeaturefeature=featureCursor.NextFeature();
while(feature!
=null)
MessageBox.Show(feature.get_Value(11).ToString());
feature=featureCursor.NextFeature();
IFeatureSelectionfeatureSelection=featureLayerasIFeatureSelection;
featureSelection.SelectFeatures(queryFilter,esriSelectionResultEnum.esriSelectionResultNew,true);
this.axMapControl1.ActiveView.Refresh();
privatevoid统计ToolStripMenuItem_Click(objectsender,EventArgse)
IDataStatisticsdataStatistics=newDataStatisticsClass();
IFeatureLayerfeatureLayer=this.axMapControl1.Map.get_Layer(4)asIFeatureLayer;
dataStatistics.Cursor=(ICursor)featureLayer.FeatureClass.Search(null,false);
dataStatistics.Field="
AREA"
IStatisticsResultsstatisticsResult=dataStatistics.Statistics;
MessageBox.Show(statisticsResult.Maximum.ToString());
MessageBox.Show(statisticsResult.Minimum.ToString());
通过本实验的学习我掌握了使用GIS分析组件进行基本查询功能的实现方
法以及掌握了与GIS查询的相关组件的功能和使用方法。