Ejemplo n.º 1
0
        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);
            }
        }
Ejemplo n.º 2
0
        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();
        }
Ejemplo n.º 3
0
//        工具箱

        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();
                    }
                }
            }
        }