/// <summary> /// 从文件夹获取Tin图层 /// </summary> /// <param name="strPath"></param> /// <returns></returns> public static ILayer GetTinLayer(string strPath) { if (string.IsNullOrEmpty(strPath) || !Directory.Exists(strPath)) { return(null); } //DirectoryInfo dirInfo = new DirectoryInfo(strPath); //string strParent=dirInfo.Parent.FullName; //string strName=dirInfo.Name; string strParent = Path.GetDirectoryName(strPath); string strName = Path.GetFileName(strPath); IWorkspaceFactory wsfTin = new TinWorkspaceFactoryClass(); if (!wsfTin.IsWorkspace(strParent)) { return(null); } try { IWorkspace wsTin = wsfTin.OpenFromFile(strParent, 0); ITin tinTarget = (wsTin as ITinWorkspace).OpenTin(strName); ITinLayer lyrTin = new TinLayerClass(); lyrTin.Dataset = tinTarget; return(lyrTin); } catch { return(null); } }
private void textBoxXTIN_TextChanged(object sender, EventArgs e) { m_TINPath = textBoxXTIN.Text; try { DirectoryInfo dir = Directory.CreateDirectory(m_TINPath); IWorkspaceFactory pWSFact = new TinWorkspaceFactoryClass(); IWorkspace pWS = pWSFact.OpenFromFile(dir.Parent.FullName + @"\", 0); ITinWorkspace pTinWS = pWS as ITinWorkspace; ITin pTin = pTinWS.OpenTin(dir.Name); m_pTin = pTin; IEnvelope pExtent = pTin.Extent; double dmaxextent = pExtent.Height; if (pExtent.Width > pExtent.Height) { dmaxextent = pExtent.Width; } double cellsize = dmaxextent / 250; doubleInputCellSize.Value = cellsize; } catch (SystemException ee) { //MessageBox.Show(ee.Message); } }
/// <summary> /// 从文件夹获取Tin图层 /// </summary> /// <param name="strPath"></param> /// <returns></returns> public static ILayer GetTinLayer(string strPath) { if (string.IsNullOrEmpty(strPath) || !Directory.Exists(strPath)) return null; //DirectoryInfo dirInfo = new DirectoryInfo(strPath); //string strParent=dirInfo.Parent.FullName; //string strName=dirInfo.Name; string strParent = Path.GetDirectoryName(strPath); string strName = Path.GetFileName(strPath); IWorkspaceFactory wsfTin = new TinWorkspaceFactoryClass(); if (!wsfTin.IsWorkspace(strParent)) return null; try { IWorkspace wsTin = wsfTin.OpenFromFile(strParent, 0); ITin tinTarget = (wsTin as ITinWorkspace).OpenTin(strName); ITinLayer lyrTin = new TinLayerClass(); lyrTin.Dataset = tinTarget; return lyrTin; } catch { return null; } }
/// <summary> /// Occurs when this command is clicked /// </summary> public override void OnClick() { // TODO: Add CmdAddTinLayer.OnClick implementation FolderBrowserDialog fdlg = new FolderBrowserDialog(); //fdlg.SelectedPath = @"C:\Users\Administrator\Desktop\sampleAnalysis\TIN\"; try { if (fdlg.ShowDialog() != DialogResult.OK) { return; } //FrmFolderDialog dlg = new FrmFolderDialog(); //dlg.DisplayDialog(); if (fdlg.SelectedPath != "") { // DirectoryInfo dir = Directory.CreateDirectory(dlg.Path); DirectoryInfo dir = Directory.CreateDirectory(fdlg.SelectedPath); IWorkspaceFactory pWSFact = new TinWorkspaceFactoryClass(); IWorkspace pWS = pWSFact.OpenFromFile(dir.Parent.FullName + @"\", 0); ITinWorkspace pTinWS = pWS as ITinWorkspace; ITin pTin = pTinWS.OpenTin(dir.Name); //½«TIN±äΪTINͼ²ã ITinLayer pTinLayer = new TinLayerClass(); pTinLayer.Dataset = pTin; pTinLayer.Name = dir.Name; IMapControl2 pMapCtr = (((IToolbarControl)m_hookHelper.Hook).Buddy) as IMapControl2; pMapCtr.Map.AddLayer((ILayer)pTinLayer); } } catch (SystemException ee) { MessageBox.Show(ee.Message); } }
/// <summary> /// 打开不规则三角网数据工作空间 /// </summary> /// <param name="tinFolderPath">TIN所在文件夹路径</param> /// <returns></returns> public static IWorkspace OpenTinWorkspace(string tinFolderPath) { IWorkspaceFactory pTinWorkSpaceFc = null; IWorkspace pWorkspace = null; try { pTinWorkSpaceFc = new TinWorkspaceFactoryClass(); pWorkspace = pTinWorkSpaceFc.OpenFromFile(tinFolderPath, 0); } catch (Exception ex) { LOG.Error("TIN数据开错误" + ex.Message); return(null); } return(pWorkspace); }
/// <summary> /// 加载栅格图层 /// </summary> private void AddTinFile() { this.Cursor = Cursors.WaitCursor; IWorkspaceFactory pWorkspaceFactory = new TinWorkspaceFactoryClass(); IWorkspace pWorkspace = pWorkspaceFactory.OpenFromFile(m_Path, 0); ITinWorkspace pTinWorkspace = pWorkspace as ITinWorkspace; //声明一个pTin变量, 存储所打开的"tin" ITin pTin = pTinWorkspace.OpenTin("tin"); //将TIN变为TIN图层 ITinLayer pTinLayer = new TinLayerClass(); pTinLayer.Dataset = pTin; pTinLayer.Name = "TIN"; //也可以用三维空间AxSceneControl加载 axSceneControl1.Scene.AddLayer(pTinLayer, true); //this.axMapControl1.AddLayer(pTinLayer); this.Cursor = Cursors.Default; }
/// <summary> /// 通过TIN文件,建立*.shp文件 /// </summary> /// <param name="TINDir">TIN文件的文件夹路径</param> private void CreateContourData(string TINDir) { try { IWorkspaceFactory pWorkspaceFactory = new ShapefileWorkspaceFactory(); CopyFolder(Application.StartupPath + "\\Convert\\TemContour", Application.StartupPath + "\\Convert\\ContourResult\\" + this.Random); IWorkspace pWorkspace = pWorkspaceFactory.OpenFromFile(Application.StartupPath + "\\Convert\\ContourResult\\" + this.Random, 0); IWorkspaceEdit w = pWorkspace as IWorkspaceEdit; IFeatureWorkspace pFeatureWorkspace = pWorkspace as IFeatureWorkspace; IFeatureClass tFeatureClass = pFeatureWorkspace.OpenFeatureClass("Contour.shp"); ITinWorkspace pTinWorkspace; IWorkspace pWS; IWorkspaceFactory pWSFact = new TinWorkspaceFactoryClass(); pWS = pWSFact.OpenFromFile(TINDir, 0); ITin pTin; pTinWorkspace = pWS as ITinWorkspace; w.StartEditing(true); w.StartEditOperation(); if (pTinWorkspace.get_IsTin(this.Random)) { pTin = pTinWorkspace.OpenTin(this.Random); ITinSurface pTinSurface = pTin as ITinSurface; pTinSurface.Contour(0, this.Interval, tFeatureClass, "Z", 0); w.StopEditOperation(); w.StopEditing(true); } } catch (Exception) { } }
// // // public static ILayer openTinLayer(string fullPath) { ITinWorkspace pTinWorkspace; IWorkspace pWS; IWorkspaceFactory pWSFact = new TinWorkspaceFactoryClass(); ITinLayer pTinLayer = new TinLayerClass(); string pathToWorkspace = System.IO.Path.GetDirectoryName(fullPath); string tinName = System.IO.Path.GetFileName(fullPath); ITin pTin; pWS = pWSFact.OpenFromFile(pathToWorkspace, 0); pTinWorkspace = pWS as ITinWorkspace; if (pTinWorkspace.get_IsTin(tinName)) { pTin = pTinWorkspace.OpenTin(tinName); pTinLayer.Dataset = pTin; pTinLayer.ClearRenderers(); return pTinLayer as ILayer; } else { MessageBox.Show("��Ŀ¼������Tin�ļ�"); return null; } }
/// <summary> /// 通过TIN文件,建立*.shp文件 /// </summary> /// <param name="TINDir">TIN文件的文件夹路径</param> private void CreateContourData(string TINDir) { try { IWorkspaceFactory pWorkspaceFactory = new ShapefileWorkspaceFactory(); CopyFolder(Application.StartupPath + "\\Convert\\TemContour", Application.StartupPath + "\\Convert\\ContourResult\\" + this.Random); IWorkspace pWorkspace = pWorkspaceFactory.OpenFromFile(Application.StartupPath + "\\Convert\\ContourResult\\" + this.Random, 0); IWorkspaceEdit w = pWorkspace as IWorkspaceEdit; IFeatureWorkspace pFeatureWorkspace = pWorkspace as IFeatureWorkspace; IFeatureClass tFeatureClass = pFeatureWorkspace.OpenFeatureClass("Contour.shp"); ITinWorkspace pTinWorkspace; IWorkspace pWS; IWorkspaceFactory pWSFact = new TinWorkspaceFactoryClass(); pWS = pWSFact.OpenFromFile(TINDir, 0); ITin pTin; pTinWorkspace = pWS as ITinWorkspace; w.StartEditing(true); w.StartEditOperation(); if (pTinWorkspace.get_IsTin(this.Random)) { pTin = pTinWorkspace.OpenTin(this.Random); ITinSurface pTinSurface = pTin as ITinSurface; pTinSurface.Contour(0, this.Interval, tFeatureClass, "Z", 0); w.StopEditOperation(); w.StopEditing(true); } } catch (Exception) { } }
public void StandardToolLibrary(string toolName) { switch (toolName) { case "AddData": m_command = new ControlsAddDataCommandClass(); break; case "New": m_command = new CreateNewDocument(); break; case "Open": m_command = new ControlsOpenDocCommandClass(); break; case "Save": break; case "SaveAs": m_command = new ControlsSaveAsDocCommandClass(); break; case "CADToVec": m_command = new AddCADToFeatures(); break; case "CADToRas": m_command = new AddCADToRaster(); break; } if (m_command != null) { m_command.OnCreate(m_mapControl.Object); m_command.OnClick(); m_command = null; } if (toolName == "Open") { m_frmMian.ControlsSynchronizer.ReplaceMap(m_mapControl.Map); } if (toolName == "AddTin") { FolderBrowserDialog fdlg = new FolderBrowserDialog(); fdlg.Description = "打开TIN"; if (fdlg.ShowDialog() == DialogResult.OK) { IWorkspaceFactory wsFac = new TinWorkspaceFactoryClass(); if (wsFac.IsWorkspace(System.IO.Path.GetDirectoryName(fdlg.SelectedPath))) { ITinWorkspace tinWS = wsFac.OpenFromFile(System.IO.Path.GetDirectoryName(fdlg.SelectedPath), 0) as ITinWorkspace; ITinLayer tinLyr = new TinLayerClass(); try { tinLyr.Dataset = tinWS.OpenTin(System.IO.Path.GetFileName(fdlg.SelectedPath)); tinLyr.Name = System.IO.Path.GetFileName(fdlg.SelectedPath); this.m_mapControl.Map.AddLayer((ILayer)tinLyr); } catch { MessageBox.Show("请选择有效的TIN文件!"); } } else { MessageBox.Show("请选择有效的TIN文件!"); return; } } } if (toolName == "AddDEM") { FolderBrowserDialog fdlg = new FolderBrowserDialog(); fdlg.Description = "打开DEM"; if (fdlg.ShowDialog() == DialogResult.OK) { IWorkspaceFactory wsFac = new RasterWorkspaceFactoryClass(); if (wsFac.IsWorkspace(System.IO.Path.GetDirectoryName(fdlg.SelectedPath))) { IRasterWorkspace tinWS = wsFac.OpenFromFile(System.IO.Path.GetDirectoryName(fdlg.SelectedPath), 0) as IRasterWorkspace; IRasterLayer rasLyr = new RasterLayerClass(); try { rasLyr.CreateFromDataset(tinWS.OpenRasterDataset(System.IO.Path.GetFileName(fdlg.SelectedPath))); this.m_mapControl.Map.AddLayer((ILayer)rasLyr); } catch { MessageBox.Show("请选择有效的DEM文件!"); } } else { MessageBox.Show("请选择有效的DEM文件!"); return; } } } }
public void ThreeDToolLibrary(string toolName) { switch (toolName) { case "3DOpen": m_command = new ControlsSceneOpenDocCommandClass(); break; case "Navigation": m_command = new ControlsSceneNavigateToolClass(); break; case "3DZoomIn": m_command = new ControlsSceneZoomInToolClass(); break; case "3DZoomOut": m_command = new ControlsSceneZoomOutToolClass(); break; case "3DPan": m_command = new ControlsScenePanToolClass(); break; case "3DExtent": m_command = new ControlsSceneFullExtentCommandClass(); break; case "3DSel": m_command = new ControlsSceneSelectGraphicsToolClass(); break; } if (m_command is ITool) { m_command.OnCreate(m_sceneControl.Object); m_sceneControl.CurrentTool = (ITool)m_command; } if (m_command is ICommand) { m_command.OnCreate(m_sceneControl.Object); m_command.OnClick(); } m_command = null; if (toolName == "3DAddTIN") { FolderBrowserDialog fdlg = new FolderBrowserDialog(); fdlg.Description = "打开TIN"; if (fdlg.ShowDialog() == DialogResult.OK) { IWorkspaceFactory wsFac = new TinWorkspaceFactoryClass(); if (wsFac.IsWorkspace(System.IO.Path.GetDirectoryName(fdlg.SelectedPath))) { ITinWorkspace tinWS = wsFac.OpenFromFile(System.IO.Path.GetDirectoryName(fdlg.SelectedPath), 0) as ITinWorkspace; ITinLayer tinLyr = new TinLayerClass(); try { tinLyr.Dataset = tinWS.OpenTin(System.IO.Path.GetFileName(fdlg.SelectedPath)); this.m_sceneControl.Scene.AddLayer((ILayer)tinLyr, false); SetTinAsBase(tinLyr); } catch { MessageBox.Show("请选择有效的TIN文件!"); } } else { MessageBox.Show("请选择有效的TIN文件!"); return; } } } if (toolName == "3DAddDEM") { FolderBrowserDialog fdlg = new FolderBrowserDialog(); fdlg.Description = "打开DEM"; if (fdlg.ShowDialog() == DialogResult.OK) { IWorkspaceFactory wsFac = new RasterWorkspaceFactoryClass(); if (wsFac.IsWorkspace(System.IO.Path.GetDirectoryName(fdlg.SelectedPath))) { IRasterWorkspace tinWS = wsFac.OpenFromFile(System.IO.Path.GetDirectoryName(fdlg.SelectedPath), 0) as IRasterWorkspace; IRasterLayer rasLyr = new RasterLayerClass(); try { rasLyr.CreateFromDataset(tinWS.OpenRasterDataset(System.IO.Path.GetFileName(fdlg.SelectedPath))); this.m_sceneControl.Scene.AddLayer((ILayer)rasLyr, false); SetlayerSurface(rasLyr, 1); //this.axSceneControl1.Refresh(); } catch { MessageBox.Show("请选择有效的DEM文件!"); } } else { MessageBox.Show("请选择有效的DEM文件!"); return; } } } }
public void ThreeDToolLibrary(string toolName) { switch (toolName) { case"3DOpen": m_command = new ControlsSceneOpenDocCommandClass(); break; case "Navigation": m_command = new ControlsSceneNavigateToolClass(); break; case"3DZoomIn": m_command = new ControlsSceneZoomInToolClass(); break; case "3DZoomOut": m_command = new ControlsSceneZoomOutToolClass(); break; case "3DPan": m_command = new ControlsScenePanToolClass(); break; case"3DExtent": m_command = new ControlsSceneFullExtentCommandClass(); break; case"3DSel": m_command = new ControlsSceneSelectGraphicsToolClass(); break; } if (m_command is ITool) { m_command.OnCreate(m_sceneControl.Object); m_sceneControl.CurrentTool = (ITool)m_command; } if (m_command is ICommand) { m_command.OnCreate(m_sceneControl.Object); m_command.OnClick(); } m_command = null; if (toolName == "3DAddTIN") { FolderBrowserDialog fdlg = new FolderBrowserDialog(); fdlg.Description = "打开TIN"; if (fdlg.ShowDialog() == DialogResult.OK) { IWorkspaceFactory wsFac = new TinWorkspaceFactoryClass(); if (wsFac.IsWorkspace(System.IO.Path.GetDirectoryName(fdlg.SelectedPath))) { ITinWorkspace tinWS = wsFac.OpenFromFile(System.IO.Path.GetDirectoryName(fdlg.SelectedPath), 0) as ITinWorkspace; ITinLayer tinLyr = new TinLayerClass(); try { tinLyr.Dataset = tinWS.OpenTin(System.IO.Path.GetFileName(fdlg.SelectedPath)); this.m_sceneControl.Scene.AddLayer((ILayer)tinLyr,false); SetTinAsBase(tinLyr); } catch { MessageBox.Show("请选择有效的TIN文件!"); } } else { MessageBox.Show("请选择有效的TIN文件!"); return; } } } if (toolName == "3DAddDEM") { FolderBrowserDialog fdlg = new FolderBrowserDialog(); fdlg.Description = "打开DEM"; if (fdlg.ShowDialog() == DialogResult.OK) { IWorkspaceFactory wsFac = new RasterWorkspaceFactoryClass(); if (wsFac.IsWorkspace(System.IO.Path.GetDirectoryName(fdlg.SelectedPath))) { IRasterWorkspace tinWS = wsFac.OpenFromFile(System.IO.Path.GetDirectoryName(fdlg.SelectedPath), 0) as IRasterWorkspace; IRasterLayer rasLyr = new RasterLayerClass(); try { rasLyr.CreateFromDataset(tinWS.OpenRasterDataset(System.IO.Path.GetFileName(fdlg.SelectedPath))); this.m_sceneControl.Scene.AddLayer((ILayer)rasLyr, false); SetlayerSurface(rasLyr, 1); //this.axSceneControl1.Refresh(); } catch { MessageBox.Show("请选择有效的DEM文件!"); } } else { MessageBox.Show("请选择有效的DEM文件!"); return; } } } }
public void StandardToolLibrary(string toolName) { switch (toolName) { case "AddData": m_command = new ControlsAddDataCommandClass(); break; case"New": m_command = new CreateNewDocument(); break; case"Open": m_command = new ControlsOpenDocCommandClass(); break; case"Save": break; case"SaveAs": m_command = new ControlsSaveAsDocCommandClass(); break; case "CADToVec": m_command = new AddCADToFeatures(); break; case "CADToRas": m_command = new AddCADToRaster(); break; } if(m_command!=null) { m_command.OnCreate(m_mapControl.Object); m_command.OnClick(); m_command = null; } if (toolName == "Open") { m_frmMian.ControlsSynchronizer.ReplaceMap(m_mapControl.Map); } if (toolName == "AddTin") { FolderBrowserDialog fdlg = new FolderBrowserDialog(); fdlg.Description = "打开TIN"; if (fdlg.ShowDialog() == DialogResult.OK) { IWorkspaceFactory wsFac = new TinWorkspaceFactoryClass(); if (wsFac.IsWorkspace(System.IO.Path.GetDirectoryName(fdlg.SelectedPath))) { ITinWorkspace tinWS = wsFac.OpenFromFile(System.IO.Path.GetDirectoryName(fdlg.SelectedPath), 0) as ITinWorkspace; ITinLayer tinLyr = new TinLayerClass(); try { tinLyr.Dataset = tinWS.OpenTin(System.IO.Path.GetFileName(fdlg.SelectedPath)); tinLyr.Name = System.IO.Path.GetFileName(fdlg.SelectedPath); this.m_mapControl.Map.AddLayer((ILayer)tinLyr); } catch { MessageBox.Show("请选择有效的TIN文件!"); } } else { MessageBox.Show("请选择有效的TIN文件!"); return; } } } if (toolName == "AddDEM") { FolderBrowserDialog fdlg = new FolderBrowserDialog(); fdlg.Description = "打开DEM"; if (fdlg.ShowDialog() == DialogResult.OK) { IWorkspaceFactory wsFac = new RasterWorkspaceFactoryClass(); if (wsFac.IsWorkspace(System.IO.Path.GetDirectoryName(fdlg.SelectedPath))) { IRasterWorkspace tinWS = wsFac.OpenFromFile(System.IO.Path.GetDirectoryName(fdlg.SelectedPath), 0) as IRasterWorkspace; IRasterLayer rasLyr = new RasterLayerClass(); try { rasLyr.CreateFromDataset(tinWS.OpenRasterDataset(System.IO.Path.GetFileName(fdlg.SelectedPath))); this.m_mapControl.Map.AddLayer((ILayer)rasLyr); } catch { MessageBox.Show("请选择有效的DEM文件!"); } } else { MessageBox.Show("请选择有效的DEM文件!"); return; } } } }