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