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); }
/// <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); */ }