C# 读取MDB空间数据并加载在地图视图

加载控件,连接并加载相应功能,如下图所示


Private void GetDataFromMDBToolStripMenumItem_Click(object sender,EventArgs e)
{
	  IWorkspaceFactory MyWorkSpaceFactory = new AccessWorkspaceFactoryClass();
            IWorkspace MyWorkSpace = MyWorkSpaceFactory.OpenFromFile(@"C:\数据资料等\hzdatabase.mdb", 0);//我的MDB数据库存放的路径
            IFeatureWorkspace MyFeatureWorkSpace=MyWorkSpace as IFeatureWorkspace;
            IEnumDataset MyEnum = MyWorkSpace.get_Datasets(esriDatasetType.esriDTAny);
            IDataset MyDataSat = MyEnum.Next();
            while (MyDataSat != null)
            {
                IFeatureDataset MyFeatureDataSat =(IFeatureDataset) MyDataSat;
                if (MyDataSat.Type == esriDatasetType.esriDTFeatureClass)
                {
		//这部分是在视图中加载不同的图层
                 IFeatureLayer  FeatureLayer = new FeatureLayerClass();
                         FeatureLayer.FeatureClass = MyFeatureWorkSpace.OpenFeatureClass(DataSat.Name);
                         ILayer  MyLayer = FeatureLayer as ILayer;
                         MyLayer.Name = MyDataSat.Name;
                        axMapControl1.Map.AddLayer(MyLayer);
                        MyDataSat = MyDataSatEnum.Next();                         }
                else if (MyDataSat.Type == esriDatasetType.esriDTFeatureDataset)
                {
                    IEnumDataset DataSatEnum = MyDataSat.Subsets;
                    IDataset DataSat = DataSatEnum.Next();
                   while (DataSat != null)
                    {
                       IFeatureLayer MyFeatureLayer = new FeatureLayerClass();
                         MyFeatureLayer.FeatureClass = MyFeatureWorkSpace.OpenFeatureClass(DataSat.Name);
                         ILayer Layer = MyFeatureLayer as ILayer;
                         Layer.Name = DataSat.Name;
                        axMapControl1.Map.AddLayer(Layer);
                        DataSat = DataSatEnum.Next();                    }
                }
                MyDataSat = MyEnum.Next();               
            }
}
F5运行,结果如下图:

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
c# 读取.mdb的栅格数据 string path = @"E:\zxl\npgDB.mdb"; axMapControl1.ActiveView.Clear(); axMapControl1.ActiveView.Refresh(); pFWorkspace = OpenAccessWorkspace(path, pFWorkspace); IFeatureLayer iflayer; iflayer = new FeatureLayerClass(); iflayer.FeatureClass = pFWorkspace.OpenFeatureClass("地标"); axMapControl1.AddLayer(iflayer, 0); IFeatureLayer featureLayer = iflayer; //this.axMapControl1.Map.get_Layer(0) as IFeatureLayer; IFeatureCursor featureCursor; IFeature feature; IGeometry geometry; IActiveView activeView = this.axMapControl1.ActiveView; ITopologicalOperator topo; featureCursor = featureLayer.FeatureClass.Search(null, false); feature = featureCursor.NextFeature(); ISpatialFilter spatialFilter = new SpatialFilterClass(); IFeatureSelection featureSelection; if (feature != null) { MessageBox.Show("if","tishi"); topo = feature.Shape as ITopologicalOperator; //double bufferLength = ConvertPixelsToMapUnits(activeView, 2); //geometry = topo.Buffer(bufferLength); geometry = topo.Buffer(1000); spatialFilter.SpatialRel = esriSpatialRelEnum.esriSpatialRelIntersects; spatialFilter.Geometry = geometry; spatialFilter.GeometryField = featureLayer.FeatureClass.ShapeFieldName; spatialFilter.SubFields = "name"; spatialFilter.WhereClause = "name='第一教学楼'"; featureSelection = featureLayer as IFeatureSelection; featureSelection.SelectFeatures(spatialFilter, esriSelectionResultEnum.esriSelectionResultNew, false); ISelectionSet selectionSet = featureSelection.SelectionSet; ICursor cursor; selectionSet.Search(null, true, out cursor); featureCursor = cursor as IFeatureCursor; feature = featureCursor.NextFeature(); while (feature != null) { MessageBox.Show("while", "tishi"); this.axMapControl1.Map.SelectFeature(featureLayer, feature); feature = featureCursor.NextFeature(); } // activeView.PartialRefresh(esriViewDrawPhase.esriViewGeoSelection, null, null); activeView.PartialRefresh(esriViewDrawPhase.esriViewGeoSelection, null, geometry.Envelope); } } private void button13_Click(object sender, EventArgs e) { string path = @"E:\zxl\npgDB.mdb"; axMapControl1.ActiveView.Clear(); axMapControl1.ActiveView.Refresh(); pFWorkspace = OpenAccessWorkspace(path, pFWorkspace); IFeatureLayer iflayer; iflayer = new FeatureLayerClass(); iflayer.FeatureClass = pFWorkspace.OpenFeatureClass("地标"); axMapControl1.AddLayer(iflayer, 0); Filter filter = new Filter(); ISpatialFilter filter1=new SpatialFilterClass(); filter1.WhereClause=""; //filter1. = "CITY_NAME = 'Phoenix'"; //Envelope envelope = new Envelope(-119, 32, -113, 35); //filter1.Geometry = envelope; //DisplayBuffer displaybuffer = new DisplayBuffer(); //displaybuffer.Distance = 200; //displaybuffer.Units = BufferUnits.Miles; //SimpleRenderer bufferrenderer = new SimpleRenderer(); //SimpleFillSymbol sfs = new SimpleFillSymbol(); //sfs.Color = System.Drawing.Color.Yellow; //sfs.Transparency = 50.0; //bufferrenderer.Symbol = sfs; //FeatureLayer bufferlayer = iflayer.CreateBufferLayer(filter, displaybuffer, bufferrenderer, "mybuffer"); //mapview.Layers.Add(bufferlayer); //mapview.Draw(); Geoprocessor gp=new Geoprocessor();
要将 MDB 文件的数据显示在 DataGridView 控件,你可以使用 OleDbDataAdapter 类来检索数据并将其绑定到 DataGridView。下面是一个示例代码: ```csharp using System; using System.Data; using System.Data.OleDb; using System.Windows.Forms; namespace MDBLoader { public partial class Form1 : Form { private OleDbConnection connection; private OleDbDataAdapter dataAdapter; private DataTable dataTable; public Form1() { InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) { string connectionString = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=path\to\your\mdb\file.mdb"; connection = new OleDbConnection(connectionString); dataAdapter = new OleDbDataAdapter("SELECT * FROM YourTableName", connection); dataTable = new DataTable(); try { connection.Open(); dataAdapter.Fill(dataTable); dataGridView.DataSource = dataTable; connection.Close(); } catch (Exception ex) { MessageBox.Show("Error: " + ex.Message); } } } } ``` 在这个示例,你需要创建一个 Windows 窗体应用程序,并将一个 DataGridView 控件放置在窗体上。然后,你需要在窗体的 `Form_Load` 事件处理程序编写代码。 首先,你需要设置连接字符串,并创建一个 `OleDbConnection` 对象。然后,使用 `OleDbDataAdapter` 执行一个查询,并将结果填充到一个 `DataTable` 。最后,将 `DataTable` 绑定到 DataGridView 控件的 `DataSource` 属性。 请确保将 `path\to\your\mdb\file.mdb` 替换为实际的 MDB 文件路径,并将 `YourTableName` 替换为你要检索数据的表名。 当窗体加载时,数据将从 MDB 文件加载到 DataTable ,并显示在 DataGridView 控件。 希望这能满足你的需求!如果还有其他问题,请随时提问。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值