private void btnClear_Click(object sender, EventArgs e)
        {
            ISpatialReference SpaReference = new UnknownCoordinateSystemClass();

            pSpaReference          = SpaReference;
            richTextReference.Text = ClsGDBDataCommon.GetReferenceString(SpaReference);
        }
        private void FrmCoordinateSystem_Load(object sender, EventArgs e)
        {
            switch (startPosition)
            {
            case "startFromMap":
                DirectoryInfo CoordDirInfo = new DirectoryInfo(ClsGDBDataCommon.GetParentPathofExe() + @"Resource\Coordinate Systems");
                LoadDirectories(advTreeCoord.Nodes[0], CoordDirInfo);

                richTextReference.Text = ClsGDBDataCommon.GetReferenceString(pMapControl.SpatialReference);
                IEngineEditor pEngineEdit = new EngineEditorClass();
                if (pEngineEdit.Map == pMapControl.Map)
                {
                    advTreeCoord.Enabled = false;
                    MessageBox.Show("该图层处在编辑状态不能修改坐标系统", "提示", MessageBoxButtons.YesNo);
                }
                break;

            case "startFromLayer":
                DirectoryInfo CoordDirInfoLayer = new DirectoryInfo(ClsGDBDataCommon.GetParentPathofExe() + @"Resource\Coordinate Systems");
                LoadDirectories(advTreeCoord.Nodes[0], CoordDirInfoLayer);
                IGeoDataset       geoDataset = pLayer as IGeoDataset;
                ISpatialReference reference  = geoDataset.SpatialReference;

                richTextReference.Text = ClsGDBDataCommon.GetReferenceString(reference);
                break;
            }
        }
        private void btnSelPrjFile_Click(object sender, EventArgs e)
        {
            OpenFileDialog dlg = new OpenFileDialog();

            dlg.Filter = "PRJ文件(*.prj)|*.prj";
            if (dlg.ShowDialog() == DialogResult.OK)
            {
                ISpatialReferenceFactory pSpatialReferenceFactory = new SpatialReferenceEnvironmentClass();
                try
                {
                    ISpatialReference pSpatialReference = pSpatialReferenceFactory.CreateESRISpatialReferenceFromPRJFile(dlg.FileName);
                    if (pSpatialReference == null)
                    {
                        return;
                    }
                    pSpaReference = pSpatialReference;

                    richTextReference.Text = ClsGDBDataCommon.GetReferenceString(pSpaReference);
                }
                catch (Exception ee)
                {
                    MessageBox.Show(ee.Message);
                }
            }
        }
        private void advTreeCoord_NodeClick(object sender, TreeNodeMouseEventArgs e)
        {
            if (e.Node.Text.Contains(".prj") == true)
            {
                string fileFullPath = "";
                string fileFullName = e.Node.Text;
                int    depthIndex   = e.Node.Level;
                Node   curnode      = new Node();
                curnode = e.Node;
                for (int i = depthIndex; i > 1; i--)
                {
                    fileFullName = curnode.Parent.Text + "\\" + fileFullName;
                    curnode      = curnode.Parent;
                }
                fileFullPath = ClsGDBDataCommon.GetParentPathofExe() + @"Resource\Coordinate Systems\" + fileFullName;

                ISpatialReferenceFactory pSpatialReferenceFactory = new SpatialReferenceEnvironmentClass();
                try
                {
                    ISpatialReference pSpatialReference = pSpatialReferenceFactory.CreateESRISpatialReferenceFromPRJFile(fileFullPath);
                    if (pSpatialReference == null)
                    {
                        return;
                    }
                    pSpaReference = pSpatialReference;

                    richTextReference.Text = ClsGDBDataCommon.GetReferenceString(pSpatialReference);
                }
                catch (Exception ee)
                {
                    MessageBox.Show(ee.Message);
                }
            }
        }
        private void btnImport_Click(object sender, EventArgs e)
        {
            ESRI.ArcGIS.SystemUI.ICommand command = new ControlsAddDataCommandClass();
            command.OnCreate(pMapControlSpacial);
            command.OnClick();
            //在此添加空间参考的详细信息
            if (pMapControlSpacial.Map != null)
            {
                for (int i = 0; i < pMapControlSpacial.Map.LayerCount; i++)
                {
                    ILayer pLayer = pMapControlSpacial.Map.get_Layer(i);

                    if (pLayer is IFeatureLayer)
                    {
                        IFeatureLayer     pFeatureLayer     = pLayer as IFeatureLayer;
                        IGeoDataset       pGeoDataset       = pFeatureLayer as IGeoDataset;
                        ISpatialReference pSpatialReference = pGeoDataset.SpatialReference;

                        richTextReference.Text = ClsGDBDataCommon.GetReferenceString(pSpatialReference);
                        pSpaReference          = pSpatialReference;
                    }
                    if (pLayer is IRasterLayer)
                    {
                        IRasterLayer      pRasterLayer      = pLayer as IRasterLayer;
                        IRaster           pRaster           = pRasterLayer.Raster;
                        IRasterProps      pRasterProps      = pRaster as IRasterProps;
                        ISpatialReference pSpatialReference = pRasterProps.SpatialReference;

                        richTextReference.Text = ClsGDBDataCommon.GetReferenceString(pSpatialReference);
                        pSpaReference          = pSpatialReference;
                    }
                }
                pMapControlSpacial.Map.ClearLayers();
            }
        }
示例#6
0
        private void btnSelect_Click(object sender, EventArgs e)
        {
            FrmCoordinateSystem frm = new FrmCoordinateSystem(m_mapControl, m_mapCtlHide);

            if (frm.ShowDialog() == DialogResult.OK)
            {
                pSpaReference = frm.pSpaReference;

                richTextReference.Text = ClsGDBDataCommon.GetReferenceString(frm.pSpaReference);
            }
        }
示例#7
0
        //读取图层坐标系统
        private string ReadLayerCoordinateSystem(ILayer layer)
        {
            string strCoord = string.Empty;

            if (layer is IGeoDataset)
            {
                IGeoDataset geoDataset = layer as IGeoDataset;
                if (geoDataset == null)
                {
                    return(strCoord);
                }
                ISpatialReference reference = geoDataset.SpatialReference;

                strCoord = ClsGDBDataCommon.GetReferenceString(reference);
            }
            return(strCoord);
        }
示例#8
0
        private void cmbReference_SelectedIndexChanged(object sender, EventArgs e)
        {
            //在此添加空间参考的详细信息
            if (m_mapControl.Map != null)
            {
                for (int i = 0; i < m_mapControl.Map.LayerCount; i++)
                {
                    ILayer pLayer = m_mapControl.Map.get_Layer(i);
                    if (pLayer is IFeatureLayer)
                    {
                        if (pLayer.Name == cmbReference.SelectedItem.ToString())
                        {
                            IFeatureLayer     pFeatureLayer     = pLayer as IFeatureLayer;
                            IGeoDataset       pGeoDataset       = pFeatureLayer as IGeoDataset;
                            ISpatialReference pSpatialReference = pGeoDataset.SpatialReference;

                            richTextReference.Text = ClsGDBDataCommon.GetReferenceString(pSpatialReference);
                            pSpaReference          = pSpatialReference;
                        }
                    }
                    if (pLayer is IRasterLayer)
                    {
                        if (pLayer.Name == cmbReference.SelectedItem.ToString())
                        {
                            IRasterLayer      pRasterLayer      = pLayer as IRasterLayer;
                            IRaster           pRaster           = pRasterLayer.Raster;
                            IRasterProps      pRasterProps      = pRaster as IRasterProps;
                            ISpatialReference pSpatialReference = pRasterProps.SpatialReference;

                            richTextReference.Text = ClsGDBDataCommon.GetReferenceString(pSpatialReference);
                            pSpaReference          = pSpatialReference;
                        }
                    }
                }
            }
        }
示例#9
0
        //直接更改图层坐标系统,并不重投影数据值
        private void btnChangeCoordinate_Click(object sender, EventArgs e)
        {
            ISpatialReference   pSpatialReference = null;
            FrmCoordinateSystem frm = new FrmCoordinateSystem(m_pLayer);

            if (frm.ShowDialog() == DialogResult.OK)
            {
                pSpatialReference = frm.pSpaReference;

                if (m_pLayer is IFeatureLayer)
                {
                    IFeatureLayer pFLayer = m_pLayer as IFeatureLayer;
                    IFeatureClass pFClass = pFLayer.FeatureClass;
                    if (pFClass == null)
                    {
                        return;
                    }
                    IFeatureDataset pFDataset = pFClass.FeatureDataset;
                    if (pFDataset == null)
                    {
                        IGeoDatasetSchemaEdit geoSchemaEdit = pFClass as IGeoDatasetSchemaEdit;
                        if (geoSchemaEdit == null)
                        {
                            return;
                        }

                        if (geoSchemaEdit.CanAlterSpatialReference == true)
                        {
                            geoSchemaEdit.AlterSpatialReference(pSpatialReference);
                        }
                    }
                    else
                    {
                        IGeoDatasetSchemaEdit geoSchemaEdit = pFDataset as IGeoDatasetSchemaEdit;
                        if (geoSchemaEdit == null)
                        {
                            return;
                        }

                        if (geoSchemaEdit.CanAlterSpatialReference == true)
                        {
                            geoSchemaEdit.AlterSpatialReference(pSpatialReference);
                        }
                    }
                }
                else if (m_pLayer is IRasterLayer)
                {
                    IRasterLayer          pRLayer       = m_pLayer as IRasterLayer;
                    IRaster               pRaster       = pRLayer.Raster;
                    IRaster2              pRaster2      = pRaster as IRaster2;
                    IRasterDataset        pRDataset     = pRaster2.RasterDataset;
                    IGeoDatasetSchemaEdit geoSchemaEdit = pRDataset as IGeoDatasetSchemaEdit;
                    if (geoSchemaEdit == null)
                    {
                        return;
                    }

                    if (geoSchemaEdit.CanAlterSpatialReference == true)
                    {
                        geoSchemaEdit.AlterSpatialReference(pSpatialReference);
                        pRLayer.CreateFromDataset(pRDataset);
                    }
                }


                string strCoord = string.Empty;
                if (m_pLayer is IGeoDataset)
                {
                    IGeoDataset geoDataset = m_pLayer as IGeoDataset;
                    if (geoDataset == null)
                    {
                        this.txtCoordinateSystem.Text = string.Empty;
                    }
                    else
                    {
                        ISpatialReference reference = geoDataset.SpatialReference;

                        strCoord = ClsGDBDataCommon.GetReferenceString(reference);
                        txtCoordinateSystem.Text = strCoord;
                        txtCoordinateSystem.Update();
                    }
                }
            }
        }