Exemple #1
0
 /// <summary>
 /// 计算结束里程
 /// </summary>
 private void CalcCitEndMileStone()
 {
     if (_fixData != null && _fixData.Count > 0)
     {
         long             markedEndPostion = _fixData[_fixData.Count - 1].MarkedEndPoint.FilePointer;
         long[]           points           = _citProcess.GetPositons(_citFilePath);
         long             sampleCount      = _citProcess.GetSampleCountByRange(_citFilePath, markedEndPostion, points[1]);
         MileStoneFixData data             = new MileStoneFixData();
         data.MarkedStartPoint = _fixData[_fixData.Count - 1].MarkedEndPoint;
         data.SamplePointCount = sampleCount;
         data.SampleRate       = _meanSampleRate;
         UserMarkedPoint markedEndPoint = new UserMarkedPoint();
         markedEndPoint.FilePointer = points[1];
         //if (_citFileInfo.iKmInc == 1)
         //{
         //    markedEndPoint.UserSetMileage = data.MarkedStartPoint.UserSetMileage - (data.SamplePointCount - 1) * data.SampleRate;
         //}
         //else
         //{
         //    markedEndPoint.UserSetMileage = data.MarkedStartPoint.UserSetMileage + (data.SamplePointCount - 1) * data.SampleRate;
         //}
         markedEndPoint.UserSetMileage = data.MarkedStartPoint.UserSetMileage + (data.SamplePointCount - 1) * data.SampleRate;
         data.MarkedEndPoint           = markedEndPoint;
         data.RealDistance             = data.MarkedEndPoint.UserSetMileage - data.MarkedStartPoint.UserSetMileage;
         _fixData.Add(data);
     }
 }
 public bool Save(UserMarkedPoint point)
 {
     try
     {
         string getIDStr = "select max(id)+1 from IndexOri";
         object obj      = _indexOperator.ExecuteScalar(getIDStr);
         string ID       = string.Empty;
         if (obj != null && !string.IsNullOrEmpty(obj.ToString()))
         {
             ID = obj.ToString();
         }
         else
         {
             ID = "1";
         }
         string sqlInsert = "insert into IndexOri values(" + ID + ",0,'" + point.FilePointer + "','" + point.UserSetMileage + "')";
         if (_indexOperator.ExcuteSql(sqlInsert))
         {
             _markedPoints.Add(point);
             return(true);
         }
         return(false);
     }
     catch (Exception ex)
     {
         throw ex;
     }
 }
Exemple #3
0
 /// <summary>
 /// 根据两个点,获取长短链
 /// </summary>
 private void CollectLongChainsBtwMarkedPoints()
 {
     if (IsVaild())
     {
         for (int i = 0; i < _userFixedTable.MarkedPoints.Count - 1; i++)
         {
             UserMarkedPoint  startPoint = _userFixedTable.MarkedPoints[i];
             UserMarkedPoint  endPoint   = _userFixedTable.MarkedPoints[i + 1];
             List <LongChain> longChains = _longChainTable.GetChains(startPoint.UserSetMileage, endPoint.UserSetMileage);
             MileStoneFixData data       = new MileStoneFixData();
             data.MarkedStartPoint = startPoint;
             data.MarkedEndPoint   = endPoint;
             data.Chains           = longChains;
             _fixData.Add(data);
         }
     }
     else
     {
         throw new InvalidOperationException("标记点必须为偶数!");
     }
 }
        public UserFixedTable(IOperator indexOperator, int kmInc)
        {
            _indexOperator = indexOperator;
            string sql = "select * from IndexOri order by val(indexmeter) ";

            if (kmInc == 1)
            {
                sql += " desc";
            }
            _markedPoints = new List <UserMarkedPoint>();
            DataTable dt = _indexOperator.Query(sql);

            if (dt != null && dt.Rows.Count > 0)
            {
                for (int i = 0; i < dt.Rows.Count; i++)
                {
                    UserMarkedPoint point = new UserMarkedPoint();
                    point.ID             = dt.Rows[i]["Id"].ToString();
                    point.FilePointer    = long.Parse(dt.Rows[i]["IndexPoint"].ToString());
                    point.UserSetMileage = float.Parse(dt.Rows[i]["IndexMeter"].ToString());
                    _markedPoints.Add(point);
                }
            }
        }