Ejemplo n.º 1
2
 public static void LoadGeoData(AxMapControl axMapControl1, AxMapControl axMapControl2, string strFileN)
 {
     string strFExtenN = System.IO.Path.GetExtension(strFileN);
     switch (strFExtenN)
     {
         case ".shp":
             {
                 string strPath = System.IO.Path.GetDirectoryName(strFileN);
                 string strFile = System.IO.Path.GetFileNameWithoutExtension(strFileN);
                 axMapControl1.AddShapeFile(strPath, strFile);
                 axMapControl2.ClearLayers();
                 axMapControl2.AddShapeFile(strPath, strFile);
                 axMapControl2.Extent = axMapControl2.FullExtent;
                 break;
             }
         case ".bmp":
         case ".tif":
         case ".jpg":
         case ".img":
             {
                 IWorkspaceFactory pWSF = new RasterWorkspaceFactoryClass();
                 string pathName = System.IO.Path.GetDirectoryName(strFileN);
                 string fileName = System.IO.Path.GetFileName(strFileN);
                 IWorkspace pWS = pWSF.OpenFromFile(pathName, 0);
                 IRasterWorkspace pRWS = pWS as IRasterWorkspace;
                 IRasterDataset pRasterDataSet = pRWS.OpenRasterDataset(fileName);
                 IRasterPyramid pRasPyramid = pRasterDataSet as IRasterPyramid;
                 if (pRasPyramid != null)
                 {
                     if (!(pRasPyramid.Present))
                     {
                         pRasPyramid.Create();
                     }
                 }
                 IRaster pRaster = pRasterDataSet.CreateDefaultRaster();
                 IRasterLayer pRasterLayer = new RasterLayerClass();
                 pRasterLayer.CreateFromRaster(pRaster);
                 ILayer pLayer = pRasterLayer as ILayer;
                 axMapControl1.AddLayer(pLayer, 0);
                 axMapControl2.ClearLayers();
                 axMapControl2.AddLayer(pLayer, 0);
                 axMapControl2.Extent = axMapControl2.FullExtent;
                 break;
             }
         case ".mxd":
             {
                 if (axMapControl1.CheckMxFile(strFExtenN))
                 {
                     axMapControl1.LoadMxFile(strFExtenN);
                 }
                 else
                     MessageBox.Show("所选择的文件不是Mxd文件!", "提示信息");
                 break;
             }
         default:
             break;
     }
 }
Ejemplo n.º 2
0
        //退出程序
        public void ExitProgram(AxMapControl axMapControl1, AxTOCControl axTOCControl1)
        {
            DialogResult dialogResult = MessageBox.Show("保存文件?", "关闭文件", MessageBoxButtons.YesNoCancel);

            if (dialogResult == DialogResult.Yes)
            {
                SaveDocument(axMapControl1);
                mapDocument.Close();
                axMapControl1.ClearLayers();
                axMapControl1.Refresh();
                axTOCControl1.Update();
                Application.Exit();
            }
            if (dialogResult == DialogResult.No)
            {
                //mapDocument.Close();
                //axMapControl1.ClearLayers();
                //axMapControl1.Refresh();
                //axTOCControl1.Update();
                Application.Exit();
            }
            if (dialogResult == DialogResult.Cancel)
            {
                return;
            }
        }
Ejemplo n.º 3
0
 /// <summary>
 /// 加载CAD文件
 /// </summary>
 /// <param name="axMapControl">地图控件引用</param>
 /// <param name="strFilePath">文件路径</param>
 /// <returns>正常:“”,异常:异常字符;</returns>
 private SystemErrorType LoadCADFile(ref AxMapControl axMapControl, string strFilePath)
 {
     if (strFilePath == "")
     {
         return(SystemErrorType.enumFilePathIsNull);
     }
     try
     {
         //workspace声明
         IWorkspaceFactory    pCadWorkspaceFactory = null;
         IWorkspace           pWorkspace           = null;
         ICadDrawingWorkspace pCadDrawingWorkspace = null;
         ICadDrawingDataset   pCadDataset          = null;
         ICadLayer            pCadLayer            = null;
         //地图数据操作
         pCadWorkspaceFactory        = new CadWorkspaceFactoryClass();
         pWorkspace                  = pCadWorkspaceFactory.OpenFromFile(strFilePath, 0);
         pCadDrawingWorkspace        = pWorkspace as ICadDrawingWorkspace;
         pCadDataset                 = pCadDrawingWorkspace.OpenCadDrawingDataset(strFilePath);
         pCadLayer                   = new CadLayerClass();
         pCadLayer.CadDrawingDataset = pCadDataset;
         //控件操作
         axMapControl.ClearLayers();
         axMapControl.AddLayer(pCadLayer, 0);
         axMapControl.Refresh();
     }
     catch (Exception)
     {
         return(SystemErrorType.enumArcObjectHandleError);
     }
     return(SystemErrorType.enumOK);
 }
Ejemplo n.º 4
0
        private string LoadMapFileInPreviewControl(string fileName)
        {
            string msg = string.Empty;

            if (File.Exists(fileName))
            {
                string ext = Path.GetExtension(fileName).ToLower();
                if (ext == ".mxd")
                {
                    if (mapControl.CheckMxFile(fileName))
                    {
                        try
                        {
                            mapControl.LoadMxFile(fileName);
                            mapControl.Extent = mapControl.FullExtent;
                        }
                        catch (Exception ex)
                        {
                            msg = "ESRI Map Control generated an error.\nFile: " + fileName + "\nError: " + ex;
                        }
                    }
                    else
                    {
                        msg = "Map document not valid: " + fileName;
                    }
                }
                else
                if (ext == ".lyr")
                {
                    try
                    {
                        mapControl.ClearLayers();
                        mapControl.SpatialReference = null;
                        mapControl.AddLayerFromFile(fileName);
                        mapControl.get_Layer(0).Visible = true; //Make sure the layer is visible
                                                                //Set the Spatial Ref to match the current layer, not the previous layer.
                                                                //mapControl.SpatialReference = mapControl.get_Layer(0).SpatialReference;
                        mapControl.Extent = mapControl.FullExtent;
                    }
                    catch (Exception ex)
                    {
                        msg = "ESRI Map Control generated an error.\nFile: " + fileName + "\nError: " + ex;
                    }
                }
                else
                {
                    msg = "File must be a map document (.mxd) or a layer file (.lyr): " + fileName;
                }
            }
            else
            {
                msg = "File not found: " + fileName;
            }
            return(msg);
        }
Ejemplo n.º 5
0
        public static void OpenMosaicDataset(AxMapControl MapControl,
                                             IMosaicDatasetName pMdName, ListView listview1)
        {
            MapControl.ClearLayers();
            MapControl.SpatialReference = null;
            listview1.Items.Clear();
            listview1.Columns.Clear();
            IDatasetName pDsName = pMdName as IDatasetName;
            string       sName   = pDsName.Name;

            IName pName = pMdName as IName;

            IMosaicDataset pMds = pName.Open() as IMosaicDataset;
            IFeatureClass  pFc  = pMds.Catalog;

            listview1.Items.Clear();
            listview1.Columns.Clear();
            LoadListView(pFc, listview1);

            IFeatureCursor pCursor = pFc.Search(null, false);
            IFeature       pfea    = pCursor.NextFeature();
            int            j       = 0;

            while (pfea != null)
            {
                ListViewItem lv = new ListViewItem();

                for (int i = 0; i < pfea.Fields.FieldCount; i++)
                {
                    string sFieldName = pfea.Fields.get_Field(i).Name;
                    lv.SubItems.Add(FeatureHelper.GetFeatureValue(pfea, sFieldName).ToString());
                }

                lv.Tag = pfea;
                if (j % 2 == 0)
                {
                    lv.BackColor = System.Drawing.Color.GreenYellow;
                }
                listview1.Items.Add(lv);
                pfea = pCursor.NextFeature();
                j++;
            }
            LSGISHelper.OtherHelper.ReleaseObject(pCursor);
            IMosaicLayer pML = new MosaicLayerClass();

            pML.CreateFromMosaicDataset(pMds);

            MapControl.AddLayer(pML as ILayer);
            MapControl.ActiveView.PartialRefresh(esriViewDrawPhase.esriViewGeography, null, null);
        }
Ejemplo n.º 6
0
 /// <summary>
 /// 加载Access文件
 /// </summary>
 /// <param name="axMapControl">地图控件引用</param>
 /// <param name="strFilePath">文件路径</param>
 /// <returns>正常:“”,异常:异常字符;</returns>
 private SystemErrorType LoadAccessFile(ref AxMapControl axMapControl, string strFilePath)
 {
     if (strFilePath == "")
     {
         return(SystemErrorType.enumFilePathIsNull);
     }
     try
     {
         //声明区域,创建工作空间并遍历数据集
         IWorkspaceFactory pAccessWorkspaceFactory = new AccessWorkspaceFactoryClass();
         IFeatureWorkspace pFeatureWorkspace       = null;
         IWorkspace        pWorkspace   = pAccessWorkspaceFactory.OpenFromFile(strFilePath, 0);
         IEnumDataset      pEnumDataset = pWorkspace.get_Datasets(esriDatasetType.esriDTAny);
         pEnumDataset.Reset();
         IDataset pDataset = pEnumDataset.Next();
         //如果数据集是IFeatureDataset则遍历它下面的子集
         if (pDataset is IFeatureDataset)
         {
             pFeatureWorkspace = pAccessWorkspaceFactory.OpenFromFile(strFilePath, 0) as IFeatureWorkspace;
             IFeatureDataset pFeatureDataset = pFeatureWorkspace.OpenFeatureDataset(pDataset.Name);
             IEnumDataset    pEnumDataset1   = pFeatureDataset.Subsets;
             pEnumDataset1.Reset();
             IDataset pDataset1 = pEnumDataset1.Next();
             //如果子类是FeatureClass,则添加到地图控件中
             if (pDataset1 is IFeatureClass)
             {
                 IFeatureLayer pFeatureLayer = new FeatureLayerClass();
                 pFeatureLayer.FeatureClass = pFeatureWorkspace.OpenFeatureClass(pDataset1.Name);
                 pFeatureLayer.Name         = pFeatureLayer.FeatureClass.AliasName;
                 axMapControl.ClearLayers();
                 axMapControl.Map.AddLayer(pFeatureLayer);
                 axMapControl.ActiveView.Refresh();
             }
             else
             {
                 return(SystemErrorType.enumDataIsIllegal);
             }
         }
         else
         {
             return(SystemErrorType.enumDataIsIllegal);
         }
     }
     catch (Exception)
     {
         return(SystemErrorType.enumArcObjectHandleError);
     }
     return(SystemErrorType.enumOK);
 }
Ejemplo n.º 7
0
 public static void AddLayersToEagleEye(AxMapControl axMapControl1,AxMapControl axMapControl2)
 {
     // 当主地图显示控件的地图更换时,鹰眼中的地图也跟随更换
     axMapControl2.Map = new MapClass();
     axMapControl2.ClearLayers();
     // 添加主地图控件中的所有图层到鹰眼控件中
     for (int i = axMapControl1.LayerCount - 1; i >= 0; i--)
     {
         axMapControl2.AddLayer(axMapControl1.get_Layer(i));
     }
     // 设置 MapControl 显示范围至数据的全局范围
     axMapControl2.Extent = axMapControl1.Extent;
     // 刷新鹰眼控件地图
     axMapControl2.Refresh();
 }
Ejemplo n.º 8
0
 public static void AddLayersToEagleEye(AxMapControl axMapControl1, AxMapControl axMapControl2)
 {
     // 当主地图显示控件的地图更换时,鹰眼中的地图也跟随更换
     axMapControl2.Map = new MapClass();
     axMapControl2.ClearLayers();
     // 添加主地图控件中的所有图层到鹰眼控件中
     for (int i = axMapControl1.LayerCount - 1; i >= 0; i--)
     {
         axMapControl2.AddLayer(axMapControl1.get_Layer(i));
     }
     // 设置 MapControl 显示范围至数据的全局范围
     axMapControl2.Extent = axMapControl1.Extent;
     // 刷新鹰眼控件地图
     axMapControl2.Refresh();
 }
Ejemplo n.º 9
0
 private void CloseFile()
 {
     cbxActiveMap.Items.Clear();
     cbxFeatureLayer.Items.Clear();
     cbxField.Items.Clear();
     districtList.Items.Clear();
     chkBoxLabel.IsChecked        = false;
     labelClrPicker.SelectedColor = null;
     rbtnBarCht.IsChecked         = false;
     rbtnPieCht.IsChecked         = false;
     m_map.ClearLayers();
     m_toc.Update();
     m_toolbar.Update();
     m_map.Refresh();
 }
Ejemplo n.º 10
0
        public static void OpenRasterDataset(AxMapControl MapControl, IRasterDatasetName pRdName, DataTable dt = null)
        {
            MapControl.ClearLayers();
            MapControl.SpatialReference = null;
            dt.Rows.Clear();
            dt.Columns.Clear();
            IDatasetName   pDsName = pRdName as IDatasetName;
            string         sName   = pDsName.Name;
            IName          pName   = pRdName as IName;
            IRasterDataset pRds    = pName.Open() as IRasterDataset;
            IRasterLayer   pRL     = new RasterLayerClass();

            pRL.CreateFromDataset(pRds);
            pRL.Name = sName;
            MapControl.AddLayer(pRL as ILayer);
            MapControl.ActiveView.PartialRefresh(esriViewDrawPhase.esriViewGeography, null, null);
        }
Ejemplo n.º 11
0
        public static void OpenMosaicDataset(AxMapControl MapControl, IMosaicDatasetName pMdName, DataTable dt = null)
        {
            MapControl.ClearLayers();
            MapControl.SpatialReference = null;
            IDatasetName   pDsName = pMdName as IDatasetName;
            string         sName   = pDsName.Name;
            IName          pName   = pMdName as IName;
            IMosaicDataset pMds    = pName.Open() as IMosaicDataset;

            if (null != dt)
            {
                IFeatureClass pFc = pMds.Catalog;
                InitDataTable(pFc, dt);

                IFeatureCursor pCursor = pFc.Search(null, false);
                IFeature       pfea    = pCursor.NextFeature();
                int            j       = 0;
                while (pfea != null)
                {
                    DataRow dataRow = dt.NewRow();

                    for (int i = 0; i < pfea.Fields.FieldCount; i++)
                    {
                        dataRow[i] = pfea.get_Value(i).ToString();
                    }

                    dt.Rows.Add(dataRow);
                    pfea = pCursor.NextFeature();
                    j++;
                }

                ComReleaser.ReleaseCOMObject(pCursor);
            }
            IMosaicLayer pML = new MosaicLayerClass();

            pML.CreateFromMosaicDataset(pMds);

            MapControl.AddLayer(pML as ILayer);
            MapControl.ActiveView.PartialRefresh(esriViewDrawPhase.esriViewGeography, null, null);
        }
Ejemplo n.º 12
0
 /// <summary>
 /// 加载Shape文件
 /// </summary>
 /// <param name="axMapControl">地图控件引用</param>
 /// <param name="strFilePath">文件路径</param>
 /// <returns>正常:“”,异常:异常字符;</returns>
 private SystemErrorType LoadShapeFile(ref AxMapControl axMapControl, string strFilePath)
 {
     if (strFilePath == "")
     {
         return(SystemErrorType.enumFilePathIsNull);
     }
     try
     {
         IWorkspaceFactory pWorkSpaceFactory = null;
         IFeatureWorkspace pFeatureWorkspace = null;
         IFeatureClass     pFeatureClass     = null;
         IFeatureLayer     pFeatureLayer     = null;
         String            WorkSpacePath     = strFilePath.Substring(0, strFilePath.LastIndexOf('\\'));  //取文件夹路径
         string            Layers            = strFilePath.Substring(strFilePath.LastIndexOf('\\') + 1); //取文件名
         //创建shape文件workspace,加载shape文件到地图控件
         pWorkSpaceFactory = new ShapefileWorkspaceFactory()  as IWorkspaceFactory;
         if (pWorkSpaceFactory.IsWorkspace(WorkSpacePath))
         {
             pFeatureWorkspace          = pWorkSpaceFactory.OpenFromFile(WorkSpacePath, 0) as IFeatureWorkspace;
             pFeatureClass              = pFeatureWorkspace.OpenFeatureClass(Layers);
             pFeatureLayer              = new FeatureLayer() as IFeatureLayer;
             pFeatureLayer.Name         = Layers.Substring(0, Layers.Length - 4);
             pFeatureLayer.FeatureClass = pFeatureClass;
             axMapControl.ClearLayers();
             axMapControl.AddLayer(pFeatureLayer);
             axMapControl.ActiveView.Refresh();
         }
         else
         {
             return(SystemErrorType.enumDataIsIllegal);
         }
     }
     catch (Exception)
     {
         return(SystemErrorType.enumArcObjectHandleError);
     }
     return(SystemErrorType.enumOK);
 }
Ejemplo n.º 13
0
 /// <summary>
 /// 加载栅格数据文件
 /// </summary>
 /// <param name="axMapControl">地图控件引用</param>
 /// <param name="strFilePath">文件路径</param>
 /// <returns>正常:“”,异常:异常字符;</returns>
 private SystemErrorType LoadRasterFile(ref AxMapControl axMapControl, string strFilePath)
 {
     if (strFilePath == "")
     {
         return(SystemErrorType.enumFilePathIsNull);
     }
     try
     {
         IWorkspaceFactory pWorkspaceFactory = null;
         IRasterWorkspace  pRasterWorkspace  = null;
         IRasterDataset    pRasterDataset    = null;
         IRasterLayer      pRasterLayer      = null;
         String            WorkspacePath     = strFilePath.Substring(0, strFilePath.LastIndexOf('\\'));//e.g.     c:/data/a.shp
         pWorkspaceFactory = new RasterWorkspaceFactoryClass() as IWorkspaceFactory;
         //如果符合要求 , 打开栅格数据文件并加载到地图控件中。
         if (pWorkspaceFactory.IsWorkspace(WorkspacePath))
         {
             pRasterWorkspace = pWorkspaceFactory.OpenFromFile(WorkspacePath, 0) as IRasterWorkspace;
             pRasterDataset   = pRasterWorkspace.OpenRasterDataset(strFilePath.Substring(strFilePath.LastIndexOf('\\') + 1));
             pRasterLayer     = new RasterLayerClass() as IRasterLayer;
             pRasterLayer.CreateFromDataset(pRasterDataset);
             axMapControl.ClearLayers();
             axMapControl.AddLayer(pRasterLayer);
             axMapControl.ActiveView.Refresh();      //axMapControl.Extent = axMapControl.FullExtent;
         }
         else
         {
             return(SystemErrorType.enumDataIsIllegal);
         }
     }
     catch (Exception)
     {
         return(SystemErrorType.enumArcObjectHandleError);
     }
     return(SystemErrorType.enumOK);
 }
Ejemplo n.º 14
0
    public static void LoadGeoData(AxMapControl axMapControl1, AxMapControl axMapControl2, string strFileN)
    {
        string strFExtenN = System.IO.Path.GetExtension(strFileN);

        switch (strFExtenN)
        {
        case ".shp":
        {
            string strPath = System.IO.Path.GetDirectoryName(strFileN);
            string strFile = System.IO.Path.GetFileNameWithoutExtension(strFileN);
            axMapControl1.AddShapeFile(strPath, strFile);
            axMapControl2.ClearLayers();
            axMapControl2.AddShapeFile(strPath, strFile);
            axMapControl2.Extent = axMapControl2.FullExtent;
            break;
        }

        case ".bmp":
        case ".tif":
        case ".jpg":
        case ".img":
        {
            IWorkspaceFactory pWSF           = new RasterWorkspaceFactoryClass();
            string            pathName       = System.IO.Path.GetDirectoryName(strFileN);
            string            fileName       = System.IO.Path.GetFileName(strFileN);
            IWorkspace        pWS            = pWSF.OpenFromFile(pathName, 0);
            IRasterWorkspace  pRWS           = pWS as IRasterWorkspace;
            IRasterDataset    pRasterDataSet = pRWS.OpenRasterDataset(fileName);
            IRasterPyramid    pRasPyramid    = pRasterDataSet as IRasterPyramid;
            if (pRasPyramid != null)
            {
                if (!(pRasPyramid.Present))
                {
                    pRasPyramid.Create();
                }
            }
            IRaster      pRaster      = pRasterDataSet.CreateDefaultRaster();
            IRasterLayer pRasterLayer = new RasterLayerClass();
            pRasterLayer.CreateFromRaster(pRaster);
            ILayer pLayer = pRasterLayer as ILayer;
            axMapControl1.AddLayer(pLayer, 0);
            axMapControl2.ClearLayers();
            axMapControl2.AddLayer(pLayer, 0);
            axMapControl2.Extent = axMapControl2.FullExtent;
            break;
        }

        case ".mxd":
        {
            if (axMapControl1.CheckMxFile(strFExtenN))
            {
                axMapControl1.LoadMxFile(strFExtenN);
            }
            else
            {
                MessageBox.Show("所选择的文件不是Mxd文件!", "提示信息");
            }
            break;
        }

        default:
            break;
        }
    }
Ejemplo n.º 15
0
        public static void OpenRasterDataset(AxMapControl MapControl,
            IRasterDatasetName pRdName, ListView listview1)
        {
            MapControl.ClearLayers();
            MapControl.SpatialReference = null;
            listview1.Items.Clear();
            listview1.Columns.Clear();
            IDatasetName pDsName = pRdName as IDatasetName;
            string sName = pDsName.Name;

            IName pName = pRdName as IName;

            IRasterDataset pRds = pName.Open() as IRasterDataset;
            IRasterLayer pRL = new RasterLayerClass();
            pRL.CreateFromDataset(pRds);
            pRL.Name = sName;
            MapControl.AddLayer(pRL as ILayer);
            MapControl.ActiveView.PartialRefresh(esriViewDrawPhase.esriViewGeography, null, null);
        }
Ejemplo n.º 16
0
        public static void OpenMosaicDataset(AxMapControl MapControl,
           IMosaicDatasetName pMdName, ListView listview1)
        {
            MapControl.ClearLayers();
            MapControl.SpatialReference = null;
            listview1.Items.Clear();
            listview1.Columns.Clear();
            IDatasetName pDsName = pMdName as IDatasetName;
            string sName = pDsName.Name;

            IName pName = pMdName as IName;

            IMosaicDataset pMds = pName.Open() as IMosaicDataset;
            IFeatureClass pFc = pMds.Catalog;
            listview1.Items.Clear();
            listview1.Columns.Clear();
            LoadListView(pFc, listview1);

            IFeatureCursor pCursor = pFc.Search(null, false);
            IFeature pfea = pCursor.NextFeature();
            int j = 0;
            while (pfea != null)
            {
                ListViewItem lv = new ListViewItem();

                for (int i = 0; i < pfea.Fields.FieldCount; i++)
                {
                    string sFieldName = pfea.Fields.get_Field(i).Name;
                    lv.SubItems.Add(FeatureHelper.GetFeatureValue(pfea, sFieldName).ToString());
                }

                lv.Tag = pfea;
                if (j % 2 == 0)
                {
                    lv.BackColor = System.Drawing.Color.GreenYellow;
                }
                listview1.Items.Add(lv);
                pfea = pCursor.NextFeature();
                j++;
            }
            LSGISHelper.OtherHelper.ReleaseObject(pCursor);
            IMosaicLayer pML = new MosaicLayerClass();
            pML.CreateFromMosaicDataset(pMds);

            MapControl.AddLayer(pML as ILayer);
            MapControl.ActiveView.PartialRefresh(esriViewDrawPhase.esriViewGeography, null, null);
        }