GeoExplorer

enjoy

导航

地图浏览

今天做一个小的地图浏览程序,用到了几个类库:

 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 }

 

以下是进行指定字段属性查询的代码,该事件主要是从图层中读取要素类的属性信息,并且显示到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 }

posted on 2008-10-06 20:10  GeoExplorer  阅读(480)  评论(0)    收藏  举报