public override void OnClick() { // TODO: Add AddNetBarriesTool.OnClick implementation //string name = NetWorkAnalysClass.getPath(path) + "\\data\\HuanbaoGeodatabase.gdb"; pFWorkspace = NetWorkAnalysClass.OpenWorkspace(_name) as IFeatureWorkspace; barriesFClass = pFWorkspace.OpenFeatureClass("Barries"); if (barriesFClass.FeatureCount(null) > 0) { ITable pTable = barriesFClass as ITable; pTable.DeleteSearchedRows(null); } }
public override void OnClick() { // TODO: Add ShortPathSolveCommand.OnClick implementation //string name = NetWorkAnalysClass.getPath(path) + "\\data\\HuanbaoGeodatabase.gdb"; IFeatureWorkspace pFWorkspace = NetWorkAnalysClass.OpenWorkspace(_name) as IFeatureWorkspace; //"RouteNetwork", "BaseData"�������ɸ��� networkDataset = NetWorkAnalysClass.OpenPathNetworkDataset(pFWorkspace as IWorkspace, _networkDatasetName, _featureDatasetName); m_NAContext = NetWorkAnalysClass.CreatePathSolverContext(networkDataset); //ͨ���������ݼ������������������ //��Ҫ�����ݼ� inputFClass = pFWorkspace.OpenFeatureClass("Stops"); barriesFClass = pFWorkspace.OpenFeatureClass("Barries"); if (IfLayerExist("NetworkDataset") == false) { ILayer layer; INetworkLayer networkLayer; networkLayer = new NetworkLayerClass(); networkLayer.NetworkDataset = networkDataset; layer = networkLayer as ILayer; layer.Name = "NetworkDataset"; m_hookHelper.ActiveView.FocusMap.AddLayer(layer); layer.Visible = false; } if (IfLayerExist(m_NAContext.Solver.DisplayName) == true) { for (int i = 0; i < m_hookHelper.FocusMap.LayerCount; i++) { if (m_hookHelper.FocusMap.get_Layer(i).Name == m_NAContext.Solver.DisplayName) { m_hookHelper.FocusMap.DeleteLayer(m_hookHelper.FocusMap.get_Layer(i)); } } } INALayer naLayer = m_NAContext.Solver.CreateLayer(m_NAContext); ILayer pLayer = naLayer as ILayer; pLayer.Name = m_NAContext.Solver.DisplayName; m_hookHelper.ActiveView.FocusMap.AddLayer(pLayer); if (inputFClass.FeatureCount(null) < 2) { MessageBox.Show("Only one point, can not execute !"); return; } IGPMessages gpMessages = new GPMessagesClass(); //����վ��Ҫ�أ��������ݲ� NetWorkAnalysClass.LoadNANetworkLocations("Stops", inputFClass, m_NAContext, 80); //�����ϰ���Ҫ�أ��������ݲ� NetWorkAnalysClass.LoadNANetworkLocations("Barriers", barriesFClass, m_NAContext, 5); INASolver naSolver = m_NAContext.Solver;//��������������� try { naSolver.Solve(m_NAContext, gpMessages, null); } catch (Exception ex) { MessageBox.Show("δ���ҵ���Ч·��" + ex.Message, "��ʾ", MessageBoxButtons.OKCancel, MessageBoxIcon.Warning); return; } for (int i = 0; i < m_hookHelper.FocusMap.LayerCount; i++) { if (m_hookHelper.FocusMap.get_Layer(i).Name == m_NAContext.Solver.DisplayName) { ICompositeLayer pCompositeLayer = m_hookHelper.FocusMap.get_Layer(i) as ICompositeLayer; { for (int t = 0; t < pCompositeLayer.Count; t++) { ILayer pResultLayer = pCompositeLayer.get_Layer(t); if (pResultLayer.Name == "Stops" || pResultLayer.Name == "Barriers") { pResultLayer.Visible = false; continue; } } } } } IGeoDataset geoDataset; //IEnvelope envelope; geoDataset = m_NAContext.NAClasses.get_ItemByName("Routes") as IGeoDataset; var envelope = geoDataset.Extent; if (!envelope.IsEmpty) { envelope.Expand(1.1, 1.1, true); } m_hookHelper.ActiveView.Extent = envelope; m_hookHelper.ActiveView.Refresh(); }
// 工具箱 private void treeView1_MouseDown(Object sender, MouseEventArgs e) { if ((sender as TreeView) != null) { treeView1.SelectedNode = treeView1.GetNodeAt(e.X, e.Y); string name = treeView1.SelectedNode.Name; if (name == "缓冲区") { IHookHelper hookHelper = new HookHelperClass(); hookHelper.Hook = axMapControl1.Object; BufferAnalysisForm bufferAnalysisForm = new BufferAnalysisForm(hookHelper, addLayer); bufferAnalysisForm.ShowDialog(); // http://www.itboth.com/d/MFRRFf/textbox-buffer-arcengine-string-layer } else if (name == "擦除") { IHookHelper hookHelper = new HookHelperClass(); hookHelper.Hook = axMapControl1.Object; EraseForm eraseForm = new EraseForm(hookHelper, addLayer); eraseForm.ShowDialog(); } else if (name == "加载站点") { if (dataBasePath == null) { Show("未选择数据集路径 !"); return; } ICommand pCommand; pCommand = new AddNetStopsTool(dataBasePath); pCommand.OnCreate(axMapControl1.Object); axMapControl1.CurrentTool = pCommand as ITool; } else if (name == "加载障碍点") { if (dataBasePath == null) { Show("未选择数据集路径 !"); return; } ICommand pCommand; pCommand = new AddNetBarriesTool(dataBasePath); pCommand.OnCreate(axMapControl1.Object); axMapControl1.CurrentTool = pCommand as ITool; } else if (name == "生成最短路径") { if (dataBasePath == null) { Show("未选择数据集路径 !"); return; } if (featureName == null) { Show("未选择数据集 !"); return; } if (networkName == null) { Show("未选择网络数据集 !"); return; } ICommand pCommand; pCommand = new ShortPathSolveCommand(dataBasePath, featureName, networkName); pCommand.OnCreate(axMapControl1.Object); pCommand.OnClick(); } else if (name == "清除分析") { axMapControl1.CurrentTool = null; try { IFeatureWorkspace pFWorkspace; //string path = System.AppDomain.CurrentDomain.SetupInformation.ApplicationBase; //打开工作空间 pFWorkspace = NetWorkAnalysClass.OpenWorkspace(dataBasePath) as IFeatureWorkspace; IGraphicsContainer pGrap = axMapControl1.ActiveView as IGraphicsContainer; pGrap.DeleteAllElements(); //删除所添加的图片要素 IFeatureClass inputFClass = pFWorkspace.OpenFeatureClass("Stops"); //删除站点要素 if (inputFClass.FeatureCount(null) > 0) { ITable pTable = inputFClass as ITable; pTable.DeleteSearchedRows(null); } IFeatureClass barriesFClass = pFWorkspace.OpenFeatureClass("Barries"); //删除障碍点要素 if (barriesFClass.FeatureCount(null) > 0) { ITable pTable = barriesFClass as ITable; pTable.DeleteSearchedRows(null); } for (int i = 0; i < axMapControl1.LayerCount; i++) //删除分析结果 { ILayer pLayer = axMapControl1.get_Layer(i); if (pLayer.Name == ShortPathSolveCommand.m_NAContext.Solver.DisplayName) { axMapControl1.DeleteLayer(i); break; } } } catch (Exception ex) { MessageBox.Show(ex.Message); } axMapControl1.Refresh(); } else if (name == "最短路径分析") { FolderBrowserDialog dialog = new FolderBrowserDialog(); if (dialog.ShowDialog() == DialogResult.OK) { dataBasePath = dialog.SelectedPath; NetWorkForm netWorkForm = new NetWorkForm( dataBasePath, setNetWorkPropety ); netWorkForm.ShowDialog(); } } } }