校园监控设施查询系统实习进程书Word格式文档下载.docx
《校园监控设施查询系统实习进程书Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《校园监控设施查询系统实习进程书Word格式文档下载.docx(48页珍藏版)》请在冰豆网上搜索。
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;
图七漫游操作
privatevoid漫游ToolStripMenuItem_Click(objectsender,EventArgse)
axMapControl1.MousePointer=esriControlsMousePointer.esriPointerPagePan;
flag=3;
图八全图操作
privatevoidaxMapControl1_OnMouseDown(objectsender,IMapControlEvents2_OnMouseDownEvente)
if(flg==1)
IEnvelopeipEnv;
if(flag==2)
ipEnv=axMapControl1.TrackRectangle();
axMapControl1.Extent=ipEnv;
elseif(flag==1)
ipEnv=axMapControl1.Extent;
ipEnv.Expand(2,2,true);
elseif(flag==3)
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<
this.axMapControl1.LayerCount;
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<
pFeature.Fields.FieldCount;
j++)
if(j!
=1)
TreeNodefieldInfoNode=newTreeNode();
fieldInfoNode.Text=pFeature.Fields.get_Field(j).Name+"
:
"
+pFeature.get_Value(j).ToString();
layerNameNode.Nodes.Add(fieldInfoNode);
+pFeature.Shape.GeometryType.ToString();
frmShowAttribute.AttributeTreeView.ExpandAll();
id=pEnumIDs.Next();
axMapControl1.ActiveView.Refresh();
4.点击查询功能
点击“查询”菜单,在下拉菜单中选择“点击查询”和“属性查询”即可进行相应操作。
图九点击查询和属性查询
图十点击查询实现
privatevoid点击查询ToolStripMenuItem_Click(objectsender,EventArgse)
flg=2;
图十一属性插图窗体
privatevoidcomboBoxlayer_SelectedIndexChanged(objectsender,EventArgse)
listBoxField.Items.Clear();
listBoxValue.Items.Clear();
textBoxFilter.Clear();
stringsLayerName=comboBoxLayer.Text;
AxMapControlaxMap=pMainFrm.getMapControl();
IFeatureLayerpFeatLyr=null;
IRasterLayerpRsLayer=null;
=axMap.LayerCount-1;
ILayerpLyr=axMap.get_Layer(i);
if(pLyr.Name==sLayerName)
if(pLyrisIFeatureLayer)
pFeatLyr=pLyrasIFeatureLayer;
m_pFeatCls=pFeatLyr.FeatureClass;
=m_pFeatCls.Fields.FieldCount-1;
listBoxField.Items.Add(m_pFeatCls.Fields.get_Field(j).Name);
if(j==m_pFeatCls.FindField("
Shape"
))
listBoxField.Items.RemoveAt(j);
else
pRsLayer=pLyrasIRasterLayer;
IRa