public void initHeightCurve(string pdPath = @"C:\GISData\Common\pd.xlsx") { DataTable dt1; string code; double mileage; //double dis; int count; int i = 0; dt1 = ExcelWrapper.LoadDataTableFromExcel(pdPath, @"select mileage, altitude, radius from [sheet1$] order by id"); count = dt1.Rows.Count; dkmileage = new string[count]; m = new double[count]; h = new double[count]; r = new double[count]; i1 = new double[count]; i2 = new double[count]; sm = new double[count]; em = new double[count]; //CSubPath path = new CSubPath(CRailwayLineList.gMileage, "DK", 299000, "右改DK", 17600, 10); //path.outputPathInfo(); foreach (DataRow dr in dt1.Rows) { dkmileage[i] = dr["mileage"].ToString(); CRailwayLineList.parseDKCode(dkmileage[i], out code, out mileage); m[i] = getPathMileageByDKCode(code, mileage); if (m[i] >= 0) { h[i] = Convert.ToDouble(dr["altitude"]); r[i] = Convert.ToDouble(dr["radius"]); } else { Console.WriteLine(dkmileage[i] + "不存在"); } i++; } for (i = 1; i < m.Length - 1; i++) { heightCurveParams(i); } sm[0] = 0; em[0] = 0; sm[m.Length - 1] = em[m.Length - 1] = m[m.Length - 1]; }
public void getHeightList() { DataTable dt1; string code; double mileage; double dis; int count; int i = 0; dt1 = ExcelWrapper.LoadDataTableFromExcel(@"d:\pd.xlsx", @"select mileage, altitude, radius from [sheet1$] order by id"); count = dt1.Rows.Count; dkmileage = new string[count]; m = new double[count]; h = new double[count]; r = new double[count]; i1 = new double[count]; i2 = new double[count]; sm = new double[count]; em = new double[count]; //CSubPath path = new CSubPath(CRailwayLineList.gMileage, "DK", 299000, "右改DK", 17600, 10); //path.outputPathInfo(); //foreach (DataRow dr in dt1.Rows) //{ // dkmileage[i] = dr["mileage"].ToString(); // CRailwayLineList.parseDKCode(dkmileage[i], out code, out mileage); // path.getPathMileageByDKCode( code, mileage,out m[i],out dis); // h[i] = Convert.ToDouble(dr["altitude"]); // r[i] = Convert.ToDouble(dr["radius"]); // i++; //} for (i = 1; i < m.Length - 1; i++) { mainParams(i); } int j = 1; //for (i = 0; i < path.mm.Length; i++) //{ // if (path.mm[i] < sm[j]) // { // } //} }
public static MGraph gMileageConnection; // 用于计算里程 /// <summary> /// 由数据库或远程服务器读入三维中线的数据 /// </summary> /// <param name="fileName"></param> public static void CreateLinelistFromExcel(string dbPath) { double[] m, x, y, z; double fromMeter, toMeter; //double fromX, toX, fromY, toY; int chainIndex; int chainType; string dkcode, dkcode2; //bool isRight = false; //bool isDouble = true; int count; DataTable dt1, dt2, dt3; //本地sqlite数据库读取里程数据 //#if DEBUG // Helper.LogHelper.WriteLog("SQlite Database" + dbPath); //#endif dt1 = ExcelWrapper.LoadDataTableFromExcel(dbPath, @"select chainIndex, fromMeter, toMeter,DKCode,DKCode2,chainType from [ChainInfo$] order by chainIndex"); dt2 = ExcelWrapper.LoadDataTableFromExcel(dbPath, @"select fromChain, toChain from [ExtraConnection$] "); List <OneConnection> connectionList = new List <OneConnection>(); foreach (DataRow dr in dt2.Rows) { OneConnection aCon = new OneConnection(); aCon.fromIndex = Convert.ToInt32(dr["fromChain"]); aCon.toIndex = Convert.ToInt32(dr["toChain"]); //aCon.isRealConnect = Convert.ToInt32(dr["isConnect"])==0 ? true:false; //aCon.mileageOffset = Convert.ToDouble(dr["mileageOffset"]); connectionList.Add(aCon); } //int index = 0; foreach (DataRow dr in dt1.Rows) { chainIndex = Convert.ToInt32(dr["chainIndex"]); fromMeter = Convert.ToDouble(dr["fromMeter"]); toMeter = Convert.ToDouble(dr["toMeter"]); dkcode = (string)dr["DKCode"]; dkcode2 = dr["DKCode2"].ToString(); chainType = Convert.ToInt32(dr["chainType"]); // isReverse = Convert.ToBoolean(dr["IsReverse"]); string strOrder = (fromMeter < toMeter) ? "" : " desc "; string tableName = "sheet" + chainIndex; dt3 = ExcelWrapper.LoadDataTableFromExcel(dbPath, @"select Mileage, Longitude,Latitude,Altitude from [" + tableName + "$] order by mileage " + strOrder); count = dt3.Rows.Count; if (count < 2) { continue; } m = new double[count]; x = new double[count]; y = new double[count]; z = new double[count]; //xMars = new double[count]; //yMars = new double[count]; int j = 0; foreach (DataRow dr2 in dt3.Rows) { m[j] = Math.Abs(Convert.ToDouble(dr2["Mileage"]) - fromMeter); x[j] = Convert.ToDouble(dr2["Longitude"]); y[j] = Convert.ToDouble(dr2["Latitude"]); z[j] = Convert.ToDouble(dr2["Altitude"]); j++; //xMars[j] = Convert.ToDouble(dr2["LongitudeMars"]); //yMars[j] = Convert.ToDouble(dr2["LatitudeMars"]); } mLineList.Add(new CRailwayLine(chainIndex, dkcode, dkcode2, fromMeter, toMeter, chainType, count, m, x, y, z)); } gRealConnection = new MGraph(); gMileageConnection = new MGraph(); ShortestPathFloyd.initPathGraph(mLineList, gRealConnection, null); ShortestPathFloyd.initPathGraph(mLineList, gMileageConnection, connectionList); }