校园监控设施查询系统实习进程书.docx
- 文档编号:9744806
- 上传时间:2023-02-06
- 格式:DOCX
- 页数:48
- 大小:1.88MB
校园监控设施查询系统实习进程书.docx
《校园监控设施查询系统实习进程书.docx》由会员分享,可在线阅读,更多相关《校园监控设施查询系统实习进程书.docx(48页珍藏版)》请在冰豆网上搜索。
校园监控设施查询系统实习进程书
实习进程计划书
一系统实施计划
9月19日:
选定课题,大体定下系统的结构和功能。
9月20日:
实现图层基本操作功能,如放大、缩小、漫游、全图等。
9月21日:
补写概要设计说明书和任务计划书。
9月22日:
制定监控设施查询系统的查询功能的大致思路,改善之前的系统功能,增改基本控件。
9月23日:
实现点击查询。
9月24日:
实现属性查图。
9月25日:
实现查看图层属性表。
9月26日:
准备实施监控设施查询。
9月27日:
实施监控设施查询。
9月28日:
查漏补缺,总体优化。
二系统界面和代码
1.系统界面
图一初始界面
图二查询界面
2.文件打开功能
点击“文件”菜单,在下拉菜单中选择“打开SHP”或“打开MXD”,通过相应路径即可添加相应图层数据(默认打开文件为MXD)。
图三选择图层数据
代码:
//打开SHP文件
privatevoid打开aSHPToolStripMenuItem_Click(objectsender,EventArgse)
{
stringfilePath=string.Empty;
OpenFileDialogaddShape=newOpenFileDialog();
addShape.Filter="AddShapeFile|*.shp";
addShape.Title="AddShape";
//点击确定按钮
if(addShape.ShowDialog()==DialogResult.OK)
{
//构造ShapeWorkspace工厂
IWorkspaceFactoryfactory=newShapefileWorkspaceFactory();
//利用工厂建立Workspace
IFeatureWorkspacefileSpace=factory.OpenFromFile(addShape.FileName.Replace(addShape.SafeFileName,string.Empty),0)asIFeatureWorkspace;
//打开aworkspace中的一个图层(FeatureClass)
IFeatureClassfeatureClass=fileSpace.OpenFeatureClass(addShape.SafeFileName);
//建立一个Layer,并初始化
IFeatureLayerlayer=newFeatureLayer();
layer.FeatureClass=featureClass;
layer.Name=featureClass.AliasName;
//将Layer加载到Mapcontrol中
this.axMapControl1.Map.AddLayer(layer);
//刷新mapcontrol
this.axMapControl1.ActiveView.PartialRefresh(esriViewDrawPhase.esriViewGeography,layer,null);
}
}
//打开MXD文件
privatevoid打䨰开aMXDToolStripMenuItem_Click(objectsender,EventArgse)
{
OpenFileDialogopenfiledialog=newOpenFileDialog();
openfiledialog.Title="打开地图文档;//名称
openfiledialog.Filter="mapdocuments(*.mxd)|*.mxd";//过滤
openfiledialog.ShowDialog();//显示对话框
stringfilepath=openfiledialog.FileName;
if(axMapControl1.CheckMxFile(filepath))
{
axMapControl1.MousePointer=esriControlsMousePointer.esriPointerArrowHourglass;
axMapControl1.LoadMxFile(filepath,0,Type.Missing);
axMapControl1.MousePointer=esriControlsMousePointer.esriPointerDefault;
}
else
{
MessageBox.Show(filepath+"不是有效的地图文档");
}
}
3.图层基本操作功能
在查询界面,点击“图层操作”菜单,在下拉菜单中选择“放大”、“缩小”、“漫游”、“全图”即可进行相应操作。
图四图层基本操作
图五放大操作
代码:
privatevoid放大ToolStripMenuItem_Click_1(objectsender,EventArgse)
{
axMapControl1.MousePointer=esriControlsMousePointer.esriPointerZoomIn;
flag=2;
flg=1;
}
图六缩小操作
代码:
privatevoid缩小ToolStripMenuItem_Click(objectsender,EventArgse)
{
axMapControl1.MousePointer=esriControlsMousePointer.esriPointerZoomOut;
flag=1;
flg=1;
}
图七漫游操作
代码:
privatevoid漫游ToolStripMenuItem_Click(objectsender,EventArgse)
{
axMapControl1.MousePointer=esriControlsMousePointer.esriPointerPagePan;
flag=3;
flg=1;
}
图八全图操作
privatevoidaxMapControl1_OnMouseDown(objectsender,IMapControlEvents2_OnMouseDownEvente)
{
if(flg==1)
{
IEnvelopeipEnv;
if(flag==2)
{
ipEnv=axMapControl1.TrackRectangle();
axMapControl1.Extent=ipEnv;
}
elseif(flag==1)
{
ipEnv=axMapControl1.TrackRectangle();
ipEnv=axMapControl1.Extent;
ipEnv.Expand(2,2,true);
axMapControl1.Extent=ipEnv;
}
elseif(flag==3)
{
ipEnv=axMapControl1.Extent;
axMapControl1.Pan();
}
}
elseif(flg==2)
{
ILayerpLayer;
IFeatureLayerpFL;
IFeatureSelectionpFeatureSelection;
IEnvelopepEnv;
IGeometrypGeometry;
ISpatialFilterpSpatialFilter;
ISelectionSetpSelectionSet;
IEnumIDspEnumIDs;
IFeaturepFeature;
pEnv=newEnvelopeClass();
doubleext=0;
IEnvelopemapExt=this.axMapControl1.Extent;
intmapWidth=this.axMapControl1.Right-this.axMapControl1.Left;
ext=5*(mapExt.XMax-mapExt.XMin)/mapWidth;
pEnv.PutCoords(e.mapX-ext,e.mapY-ext,e.mapX+ext,e.mapY+ext);
pGeometry=pEnvasIGeometry;
pSpatialFilter=newSpatialFilterClass();
pSpatialFilter.Geometry=pGeometry;
pSpatialFilter.SpatialRel=esriSpatialRelEnum.esriSpatialRelIntersects;
Form4frmShowAttribute=Form4.CreateForm();
frmShowAttribute.Show();
frmShowAttribute.AttributeTreeView.Nodes.Clear();
frmShowAttribute.AttributeTreeView.ShowLines=true;
frmShowAttribute.AttributeTreeView.ShowPlusMinus=true;
TreeNoderootNode=newTreeNode();
rootNode.Text="属性信息";
Fontfont=newFont("黑体",10);
rootNode.NodeFont=font;
frmShowAttribute.AttributeTreeView.Nodes.Add(rootNode);
for(inti=0;i { try { pLayer=this.axMapControl1.get_Layer(i); pFL=(IFeatureLayer)pLayer; } catch(Exceptione1) { continue; } if(pFL.Visible&&pFL.Selectable) { pFeatureSelection=pFLasIFeatureSelection; pFeatureSelection.Clear(); pFeatureSelection.SelectFeatures(pSpatialFilter,esriSelectionResultEnum.esriSelectionResultNew,true); pSelectionSet=pFeatureSelection.SelectionSet; if(pSelectionSet.Count>0) { TreeNodelayerNameNode=newTreeNode(); layerNameNode.ForeColor=Color.Green; layerNameNode.Text="图层名: "+pFL.Name; rootNode.Nodes.Add(layerNameNode); pEnumIDs=pSelectionSet.IDs; longid=pEnumIDs.Next(); while(id! =-1) { pFeature=pFL.FeatureClass.GetFeature((int)id); for(intj=0;j { if(j! =1) { TreeNodefieldInfoNode=newTreeNode(); fieldInfoNode.Text=pFeature.Fields.get_Field(j).Name+": "+pFeature.get_Value(j).ToString(); layerNameNode.Nodes.Add(fieldInfoNode); } else { TreeNodefieldInfoNode=newTreeNode(); fieldInfoNode.Text=pFeature.Fields.get_Field(j).Name+": "+pFeature.Shape.GeometryType.ToString(); layerNameNode.Nodes.Add(fieldInfoNode); } frmShowAttribute.AttributeTreeView.ExpandAll(); } id=pEnumIDs.Next(); } } } axMapControl1.ActiveView.Refresh(); } } 4.点击查询功能 点击“查询”菜单,在下拉菜单中选择“点击查询”和“属性查询”即可进行相应操作。 图九点击查询和属性查询 图十点击查询实现 代码: privatevoid点击查询ToolStripMenuItem_Click(objectsender,EventArgse) { axMapControl1.MousePointer=esriControlsMousePointer.esriPointerDefault; flg=2; } privatevoidaxMapControl1_OnMouseDown(objectsender,IMapControlEvents2_OnMouseDownEvente) { if(flg==1) { IEnvelopeipEnv; if(flag==2) { ipEnv=axMapControl1.TrackRectangle(); axMapControl1.Extent=ipEnv; } elseif(flag==1) { ipEnv=axMapControl1.TrackRectangle(); ipEnv=axMapControl1.Extent; ipEnv.Expand(2,2,true); axMapControl1.Extent=ipEnv; } elseif(flag==3) { ipEnv=axMapControl1.Extent; axMapControl1.Pan(); } } elseif(flg==2) { ILayerpLayer; IFeatureLayerpFL; IFeatureSelectionpFeatureSelection; IEnvelopepEnv; IGeometrypGeometry; ISpatialFilterpSpatialFilter; ISelectionSetpSelectionSet; IEnumIDspEnumIDs; IFeaturepFeature; pEnv=newEnvelopeClass(); doubleext=0; IEnvelopemapExt=this.axMapControl1.Extent; intmapWidth=this.axMapControl1.Right-this.axMapControl1.Left; ext=5*(mapExt.XMax-mapExt.XMin)/mapWidth; pEnv.PutCoords(e.mapX-ext,e.mapY-ext,e.mapX+ext,e.mapY+ext); pGeometry=pEnvasIGeometry; pSpatialFilter=newSpatialFilterClass(); pSpatialFilter.Geometry=pGeometry; pSpatialFilter.SpatialRel=esriSpatialRelEnum.esriSpatialRelIntersects; Form4frmShowAttribute=Form4.CreateForm(); frmShowAttribute.Show(); frmShowAttribute.AttributeTreeView.Nodes.Clear(); frmShowAttribute.AttributeTreeView.ShowLines=true; frmShowAttribute.AttributeTreeView.ShowPlusMinus=true; TreeNoderootNode=newTreeNode(); rootNode.Text="属性信息"; Fontfont=newFont("黑体",10); rootNode.NodeFont=font; frmShowAttribute.AttributeTreeView.Nodes.Add(rootNode); for(inti=0;i { try { pLayer=this.axMapControl1.get_Layer(i); pFL=(IFeatureLayer)pLayer; } catch(Exceptione1) { continue; } if(pFL.Visible&&pFL.Selectable) { pFeatureSelection=pFLasIFeatureSelection; pFeatureSelection.Clear(); pFeatureSelection.SelectFeatures(pSpatialFilter,esriSelectionResultEnum.esriSelectionResultNew,true); pSelectionSet=pFeatureSelection.SelectionSet; if(pSelectionSet.Count>0) { TreeNodelayerNameNode=newTreeNode(); layerNameNode.ForeColor=Color.Green; layerNameNode.Text="图层名: "+pFL.Name; rootNode.Nodes.Add(layerNameNode); pEnumIDs=pSelectionSet.IDs; longid=pEnumIDs.Next(); while(id! =-1) { pFeature=pFL.FeatureClass.GetFeature((int)id); for(intj=0;j { if(j! =1) { TreeNodefieldInfoNode=newTreeNode(); fieldInfoNode.Text=pFeature.Fields.get_Field(j).Name+": "+pFeature.get_Value(j).ToString(); layerNameNode.Nodes.Add(fieldInfoNode); } else { TreeNodefieldInfoNode=newTreeNode(); fieldInfoNode.Text=pFeature.Fields.get_Field(j).Name+": "+pFeature.Shape.GeometryType.ToString(); layerNameNode.Nodes.Add(fieldInfoNode); } frmShowAttribute.AttributeTreeView.ExpandAll(); } id=pEnumIDs.Next(); } } } axMapControl1.ActiveView.Refresh(); } } 图十一属性插图窗体 代码: privatevoidcomboBoxlayer_SelectedIndexChanged(objectsender,EventArgse) { listBoxField.Items.Clear(); listBoxValue.Items.Clear(); textBoxFilter.Clear(); stringsLayerName=comboBoxLayer.Text; AxMapControlaxMap=pMainFrm.getMapControl(); IFeatureLayerpFeatLyr=null; IRasterLayerpRsLayer=null; listBoxField.Items.Clear(); try { for(inti=0;i<=axMap.LayerCount-1;i++) { ILayerpLyr=axMap.get_Layer(i); if(pLyr.Name==sLayerName) { if(pLyrisIFeatureLayer) { pFeatLyr=pLyrasIFeatureLayer; m_pFeatCls=pFeatLyr.FeatureClass; for(intj=0;j<=m_pFeatCls.Fields.FieldCount-1;j++) { listBoxField.Items.Add(m_pFeatCls.Fields.get_Field(j).Name); if(j==m_pFeatCls.FindField("Shape")) listBoxField.Items.RemoveAt(j); } } else { pRsLayer=pLyrasIRasterLayer; IRa
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 校园 监控 设施 查询 系统 实习 进程