加载地图文件(MXD、SHP、要素类、栅格文件)

  • 打开MXD文件 
    axMapControl1.LoadMxFile(filename, 0, Type.Missing);//filename为mxd文件路径
  • 打开MDB文件获取工作空间,工作空间里包含数据集和要素类
    IWorkspaceFactory pWorkspaceFactory = new AccessWorkspaceFactoryClass();
    IWorkspace pWorkspace = pWorkspaceFactory.OpenFromFile(pPath, 0);
    遍历工作空间根据名字(name)获取要素类
                IFeatureClass ifcresult = null;
                IDataset dt;
                IEnumDataset dts = wk.Datasets[esriDatasetType.esriDTAny];
                while ((dt = dts.Next()) != null)
                {
                    if (dt.Type == esriDatasetType.esriDTFeatureDataset)
                    {
                        IFeatureDataset fdt = dt as IFeatureDataset;
                        if (fdt != null)
                        {
                            IEnumDataset subdts = fdt.Subsets;
                            if (subdts != null)
                            {
                                IDataset isubdt;
                                while ((isubdt = subdts.Next()) != null)
                                {
                                    IFeatureClass ifc = isubdt as IFeatureClass;
                                    if (ifc != null)
                                    {
                                        if (isubdt.Name == name)
                                        {
                                            ifcresult = ifc;
                                            Marshal.ReleaseComObject(isubdt);
                                            isubdt = null;
    
                                            Marshal.ReleaseComObject(subdts);
                                            subdts = null;
                                            break;
                                        }
                                        else
                                        {
                                            Marshal.ReleaseComObject(isubdt);
                                            isubdt = null;
                                        }
                                    }
                                }
                            }
                        }
                    }
                    else if (dt.Type == esriDatasetType.esriDTFeatureClass)
                    {
                        IFeatureClass ifc = dt as IFeatureClass;
                        if (dt.Name == name)
                        {
                            ifcresult = ifc;
                            break;
                        }
                    }
                }
  • 添加要素类到地图控件
    public void AddFeatureClass(IFeatureClass ifc)
            {
                IFeatureLayer ifl = new FeatureLayer();
                ifl.FeatureClass = ifc;
                ifl.Name = ifc.AliasName;
                axMapControl1.AddLayer(ifl);
            }
  • 添加栅格数据到地图控件
            public void AddRaster(IRasterDataset irc)
            {
                //影像金字塔判断与创建
                IRasterPyramid3 pRasPyrmid;
                pRasPyrmid = irc as IRasterPyramid3;
                if (pRasPyrmid != null)
                {
                    if (!(pRasPyrmid.Present))
                    {
                        pRasPyrmid.Create(); //创建金字塔
                    }
                }
                IRaster pRaster;
                pRaster = irc.CreateDefaultRaster();
                IRasterLayer pRasterLayer;
                pRasterLayer = new RasterLayerClass();
                pRasterLayer.CreateFromRaster(pRaster);
                ILayer pLayer = pRasterLayer as ILayer;
                axMapControl1.AddLayer(pLayer, 0);
            }
  • 添加shp文件到地图控件
            public  IFeatureClass OpenShpFeatureClass(string shppath)
            {
                IFeatureClass ifc = null;
                IWorkspaceFactory workspaceFactory = new ShapefileWorkspaceFactory();
                if (null != shppath)
                {
                    string dir = System.IO.Path.GetDirectoryName(shppath);
    
                    IWorkspace pworkspace = workspaceFactory.OpenFromFile(dir, 0);
    
                    int loc1;
                    loc1 = shppath.LastIndexOf("\\");
                    string pFoldr = shppath.Substring(0, loc1);
                    string pFileName = shppath.Substring(loc1 + 1);
                    ifc = GetFeatureClass(pFileName, pworkspace);
                }
                return ifc;
            }



     

猜你喜欢

转载自blog.csdn.net/fangyu723/article/details/79419591
今日推荐