地图浏览
今天做一个小的地图浏览程序,用到了几个类库:
DataSourcesFile:包含了为支持的矢量数据格式提供的工作空间工厂和工作空间
GeoDatabase:包含了所有相关数据组织的定义类型。要素、表、网络、TIN都在这个库中定义
Controls:控件库,包含了各种控件,包括在控件中使用的命令和工具
以下是一个在map中添加单个shp文件的代码:
1 private void AddShp_Click(object sender,EventArgs e)
2 {
3 IWorkspaceFactory pWorkspaceFactory=new ShapefileWorkspaceFactory();
4
5 OpenFileDialog dlg= new OpenFileDialog();
6 dlg.InitialDirectory = @"D:\ArcTutor\Map";
7 dlg.RestoreDirectory = true;
8 dlg.Title = "Open Shp";
9 dlg.Multiselect=false;
10 dlg.Filter = "Shp(*.shp)|*.shp";
11 DialogResult pDialogResult=dlg.ShowDialog();
12 if(pDialogResult!=DialogResult.OK)
13 return;
14
15 string pPath=dlg.FileName;
16 string pFolder=System.IO.Path.GetDirectoryName(pPath);
17 string pFileName=System.IO.Path.GetFileName(pPath);
18
19
20 IWorkspace pWorkspace=pWorkspaceFactory.OpenFromFile(pFolder,0);
21 IFeatureWorkspace pFeatureWorkspace=pWorkspace as IFeatureWorkspace;
22
23 IFeatureClass pFC=pFeatureWorkspace.OpenFeatureClass(pFileName);
24 IFeatureLayer pFLayer=new FeatureLayerClass();
25 pFLayer.FeatureClass=pFC;
26 pFLayer.Name=pFC.AliasName;
27 ILayer pLayer=pFLayer as ILayer;
28
29 IMap pMap=MapMain.Map;
30 pMap.AddLayer(pLayer);
31 MapMain.ActiveView.Refresh();
32 }
2 {
3 IWorkspaceFactory pWorkspaceFactory=new ShapefileWorkspaceFactory();
4
5 OpenFileDialog dlg= new OpenFileDialog();
6 dlg.InitialDirectory = @"D:\ArcTutor\Map";
7 dlg.RestoreDirectory = true;
8 dlg.Title = "Open Shp";
9 dlg.Multiselect=false;
10 dlg.Filter = "Shp(*.shp)|*.shp";
11 DialogResult pDialogResult=dlg.ShowDialog();
12 if(pDialogResult!=DialogResult.OK)
13 return;
14
15 string pPath=dlg.FileName;
16 string pFolder=System.IO.Path.GetDirectoryName(pPath);
17 string pFileName=System.IO.Path.GetFileName(pPath);
18
19
20 IWorkspace pWorkspace=pWorkspaceFactory.OpenFromFile(pFolder,0);
21 IFeatureWorkspace pFeatureWorkspace=pWorkspace as IFeatureWorkspace;
22
23 IFeatureClass pFC=pFeatureWorkspace.OpenFeatureClass(pFileName);
24 IFeatureLayer pFLayer=new FeatureLayerClass();
25 pFLayer.FeatureClass=pFC;
26 pFLayer.Name=pFC.AliasName;
27 ILayer pLayer=pFLayer as ILayer;
28
29 IMap pMap=MapMain.Map;
30 pMap.AddLayer(pLayer);
31 MapMain.ActiveView.Refresh();
32 }
以下是进行指定字段属性查询的代码,该事件主要是从图层中读取要素类的属性信息,并且显示到DataGridView控件中:
1 private void FrmAttributeTable_Load(object sender,EventArgs e)
2 {
3 ILayer pLayer=m_MapCtl.get_Layer(0);
4 IFeatureLayer pFlayer=pLayer as IFeatureLayer;
5 IFeatureClass pFC=pFlayer.FeatureClass;
6
7 //search方法只能返回要素索引,所以只能进行一次选择,选择后的渲染也只能一个一个要素的渲染
8 IFeatureCursor pFCursor=pFC.Search(null,false);
9 IFeature pFeature=pFCursor.NextFeature();
10
11 DataTable pTable=new DataTable();
12 DataColumn colName=new DataColumn("城市名");
13 colName.DataType=System.Type.GetType("System.String");
14 pTable.Columns.Add(colName);
15
16 DataColumn colArea=new DataColumn("人口");
17 colArea.DataType=System.Type.GetType("System.String");
18 pTable.Columns.Add(ColArea);
19
20 int indexOfName1=pFC.FindField("NAME");
21 int indexOfName2=pFC.FindField("POPULATION");
22
23 while(pFeature!=null)
24 {
25 string name=pFeature.get_Value(indexOfName1).ToString();
26 string pop=pFeature.get_Value(indexOfName2).ToString();
27
28 DataRow pRow=pTable.NewRow();
29 pRow[0]=name;
30 pRow[1]=pop;
31 pTable.Rows.Add(pRow);
32
33 pFeature=pFCursor.NextFeature();
34 }
35
36 dataGridView1.DataSource=pTable;
37 }
2 {
3 ILayer pLayer=m_MapCtl.get_Layer(0);
4 IFeatureLayer pFlayer=pLayer as IFeatureLayer;
5 IFeatureClass pFC=pFlayer.FeatureClass;
6
7 //search方法只能返回要素索引,所以只能进行一次选择,选择后的渲染也只能一个一个要素的渲染
8 IFeatureCursor pFCursor=pFC.Search(null,false);
9 IFeature pFeature=pFCursor.NextFeature();
10
11 DataTable pTable=new DataTable();
12 DataColumn colName=new DataColumn("城市名");
13 colName.DataType=System.Type.GetType("System.String");
14 pTable.Columns.Add(colName);
15
16 DataColumn colArea=new DataColumn("人口");
17 colArea.DataType=System.Type.GetType("System.String");
18 pTable.Columns.Add(ColArea);
19
20 int indexOfName1=pFC.FindField("NAME");
21 int indexOfName2=pFC.FindField("POPULATION");
22
23 while(pFeature!=null)
24 {
25 string name=pFeature.get_Value(indexOfName1).ToString();
26 string pop=pFeature.get_Value(indexOfName2).ToString();
27
28 DataRow pRow=pTable.NewRow();
29 pRow[0]=name;
30 pRow[1]=pop;
31 pTable.Rows.Add(pRow);
32
33 pFeature=pFCursor.NextFeature();
34 }
35
36 dataGridView1.DataSource=pTable;
37 }
posted on 2008-10-06 20:10 GeoExplorer 阅读(480) 评论(0) 收藏 举报
浙公网安备 33010602011771号