private bool SetupOutputDirectory()
        {
            try
            {
                if (System.IO.Directory.Exists(_outputPath))
                {
                    System.IO.Directory.Delete(_outputPath, true);
                }
                while (!System.IO.Directory.Exists(_outputPath))
                {
                    System.IO.Directory.CreateDirectory(_outputPath);
                }
                string outputWorkspace = System.IO.Path.Combine(_outputPath, DisasterModel.Properties.Resources.MDBName);
                string templateMdb     = System.IO.Path.Combine(_templatePath, DisasterModel.Properties.Resources.MDBName);
                System.IO.File.Copy(templateMdb, outputWorkspace);

                string templateDoc = System.IO.Path.Combine(_templatePath, DisasterModel.Properties.Resources.MxdName);
                string outDoc      = GetMxdLoc();
                System.IO.File.Copy(templateDoc, outDoc);



                this._outputFC = WorkspaceUtil.OpenMDBWorkspace(outputWorkspace).OpenFeatureClass(
                    DisasterModel.Properties.Resources.RoutesClassName);
                return(true);
            }
            catch (Exception ex)
            {
                LogHelper.Error(ex);
                return(false);
            }
        }
        internal bool Setup(Earthquake quake, string facilityData, string incidentData)
        {
            string networkWorkspace = System.IO.Path.Combine(Application.StartupPath,
                                                             @"AnalystData\road");// @"F:\17\private\Disaster\Data\road";
            string networkClassName = "road_ND";

#if DEBUG
            networkClassName = "road_two_regions_ND";
#endif

            string analystDataPath = System.IO.Path.Combine(Application.StartupPath,
                                                            "AnalystData");// @"F:\17\private\Disaster\Data\EarthquakeData";
            string regionClassName = "地区系数";
            string seasonClassName = "季节系数";

            Earthquake = quake;
            if (!SetupOutputDirectory())
            {
                System.Windows.Forms.MessageBox.Show("初始化输出目录失败");
                return(false);
            }
            IFeatureWorkspace ws = WorkspaceUtil.OpenShapeWorkspace(analystDataPath);

            _region = GetRegionCoefficient(ws, regionClassName);
            _season = GetSeasonCoefficient(ws, seasonClassName);

            _incidentWorkspace = System.IO.Path.GetDirectoryName(incidentData);
            _incidentClassName = System.IO.Path.GetFileNameWithoutExtension(incidentData);
            ws = WorkspaceUtil.OpenShapeWorkspace(_incidentWorkspace);
            _siteFeatureClass = ws.OpenFeatureClass(_incidentClassName);

            // _refugeSiteCol = GetRefugeeSiteCol(ws, _incidentClassName);

            _repoWorkspace     = System.IO.Path.GetDirectoryName(facilityData);
            _facilityClassName = System.IO.Path.GetFileNameWithoutExtension(facilityData);
            ws = WorkspaceUtil.OpenShapeWorkspace(_repoWorkspace);
            _repoFeatureClass = ws.OpenFeatureClass(_facilityClassName);

            // _repositoryCol = GetRepositoryCol(ws, _facilityClassName);

            _roadNetwork = GetRoadNetwork(networkWorkspace, networkClassName);
            // _supplyNetwork = GetSupplyNetwork();

            return(true);
        }
Esempio n. 3
0
        /// <summary>
        /// Initialize the solver by calling the ArcGIS Network Analyst extension functions.
        /// </summary>
        public void Initialize(string workspacePath, string dsName)
        {
            this.Attribute = "minutes";

            IFeatureWorkspace featureWorkspace = null;

            try
            {
                // Open Geodatabase and network dataset
                IWorkspace workspace = null;// OpenGDBWorkspace(Application.StartupPath + @"\..\..\..\..\..\Data\SanFrancisco\SanFrancisco.gdb");
                //networkDataset = OpenNetworkDataset(workspace, "Transportation", "Streets_ND");

                workspace = WorkspaceUtil.OpenShapeWorkspace(workspacePath) as IWorkspace;

                _networkDataset = ShapefileToNetwork(workspace, dsName);

                featureWorkspace = workspace as IFeatureWorkspace;
            }
            catch (Exception ex)
            {
                System.Windows.Forms.MessageBox.Show("Unable to open dataset. Error Message: " + ex.Message);
                return;
            }

            // Create NAContext and NASolver
            CreateSolverContext(_networkDataset);

            // Get available cost attributes from the network dataset
            INetworkAttribute networkAttribute;

            for (int i = 0; i < _networkDataset.AttributeCount; i++)
            {
                networkAttribute = _networkDataset.get_Attribute(i);
                if (networkAttribute.UsageType == esriNetworkAttributeUsageType.esriNAUTCost)
                {
                }
            }


            /*
             *
             * // Load incidents from a feature class
             * featureWorkspace = OpenShapeWorkspace(@"F:\17\private\Disaster\震后基本应急物资与设备供应计算程序") as IFeatureWorkspace;
             * //IFeatureClass inputFClass = featureWorkspace.OpenFeatureClass("Stores");
             * IFeatureClass inputFClass = featureWorkspace.OpenFeatureClass("灾区位置分布点");
             *
             * LoadNANetworkLocations("Incidents", inputFClass, 500);
             *
             * // Load facilities from a feature class
             * //inputFClass = featureWorkspace.OpenFeatureClass("FireStations");
             * inputFClass = featureWorkspace.OpenFeatureClass("物资贮备分布点");
             * LoadNANetworkLocations("Facilities", inputFClass, 500);
             *
             *
             * //Create Layer for Network Dataset and add to ArcMap
             * INetworkLayer networkLayer = new NetworkLayerClass();
             * networkLayer.NetworkDataset = _networkDataset;
             * var layer = networkLayer as ILayer;
             * layer.Name = "Network Dataset";
             * // axMapControl.AddLayer(layer, 0);
             *
             * //Create a Network Analysis Layer and add to ArcMap
             * INALayer naLayer = m_NAContext.Solver.CreateLayer(m_NAContext);
             * layer = naLayer as ILayer;
             * layer.Name = m_NAContext.Solver.DisplayName;
             * //axMapControl.AddLayer(layer, 0);
             */
        }