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(); } }
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); } }
//读取图层坐标系统 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); }
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; } } } } }
//直接更改图层坐标系统,并不重投影数据值 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(); } } } }