public void Clear()
        {
            string cmdText = "delete from IndexOri";

            if (_indexOperator.ExcuteSql(cmdText))
            {
                _markedPoints.Clear();
            }
        }
Beispiel #2
0
        public bool Add(TotalFile data)
        {
            bool isok = false;

            StringBuilder sbSql = new StringBuilder();

            sbSql.Append("insert into TotalResult (");
            sbSql.Append("LineName,TrainCode,");
            sbSql.Append("GeoFileName,ResultTableName,TotalLength");
            sbSql.Append(") values('");

            sbSql.Append(data.LineName).Append("','").Append(data.TrainCode).Append("',");
            sbSql.Append("'").Append(data.GeoFileName).Append("','");
            sbSql.Append(data.ResultTableName).Append("'");
            sbSql.Append(",'").Append(data.TotalLength).Append("'");
            sbSql.Append(")");
            bool i = _dbOperator.ExcuteSql(sbSql.ToString());

            //int i = DataAccess.AccessHelper.Run_SQL(sbSql.ToString(), connStr);
            if (i)
            {
                isok = true;
            }

            return(isok);
        }
Beispiel #3
0
        /// <summary>
        /// 保存里程修正表
        /// </summary>
        public void SaveMilestoneFixTable()
        {
            string cmdText = "delete from IndexSta";

            _indexOperator.ExcuteSql(cmdText);
            if (_fixData != null && _fixData.Count > 0)
            {
                for (int i = 0; i < _fixData.Count; i++)
                {
                    cmdText = "insert into IndexSta values(" + (i + 1) + "," + 1 +
                              ",'" + _fixData[i].MarkedStartPoint.FilePointer.ToString() + "','" + _fixData[i].MarkedStartPoint.UserSetMileage.ToString() +
                              "','" + _fixData[i].MarkedEndPoint.FilePointer.ToString() + "','" + _fixData[i].MarkedEndPoint.UserSetMileage.ToString() + "','" +
                              _fixData[i].SamplePointCount.ToString() + "','" + (_fixData[i].RealDistance).ToString() +
                              "','" + "正常" + "')";
                    _indexOperator.ExcuteSql(cmdText);
                }
            }
        }
        /// <summary>
        /// 添加无效数据
        /// </summary>
        /// <param name="filePath">文件路径</param>
        /// <param name="citHeadEndPostion">文件头部结束位置</param>
        /// <param name="fileStartPostion">数据开始位置</param>
        /// <param name="fileEndPostion">数据结束位置</param>
        /// <param name="channelNumber">通道个数</param>
        /// <returns></returns>
        private bool AddInvaildData(IOperator newIndexOperaotr, long citHeadEndPostion, long fileStartPostion, long fileEndPostion, int channelNumber)
        {
            //DBOperator.CommonDbConnectString = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + filePath + ";Jet OLEDB:Engine Type=5";
            string sqlCmd = "delete from InvalidData";

            newIndexOperaotr.ExcuteSql(sqlCmd);
            long fileDataHead = citHeadEndPostion;

            if (InvalidDataList != null && InvalidDataList.Count > 0)
            {
                for (int i = 0; i < InvalidDataList.Count; i++)
                {
                    long   startPoint  = long.Parse(InvalidDataList[i].sStartPoint);
                    long   endPoint    = long.Parse(InvalidDataList[i].sEndPoint);
                    double startMeter  = double.Parse(InvalidDataList[i].sStartMile);
                    double endMeter    = double.Parse(InvalidDataList[i].sEndMile);
                    int    invalidType = InvalidDataList[i].iType;
                    string memoText    = InvalidDataList[i].sMemoText;
                    int    isShow      = InvalidDataList[i].iIsShow;
                    string channelType = InvalidDataList[i].ChannelType;

                    int    idValue            = 0;
                    long   startPositionValue = 0;
                    long   endPositionValue   = 0;
                    double startMeterValue    = 0;
                    double endMeterValue      = 0;
                    int    invalidTypeValue   = invalidType;
                    string memoTextValue      = memoText;
                    int    isShowValue        = isShow;
                    string channelTypeValue   = channelType;

                    string sqlFormat = "insert into InvalidData values({0},'{1}','{2}','{3}','{4}',{5},'{6}',{7},'{8}')";
                    string sqlText   = string.Format(sqlFormat, idValue.ToString(), startPositionValue.ToString(), endPositionValue.ToString(), startMeterValue.ToString(), endMeterValue.ToString(), invalidTypeValue.ToString(), memoTextValue, isShowValue.ToString(), channelTypeValue);

                    idValue = i;


                    //第一种情形:无效区段完全在分割的波形内
                    if (startPoint >= fileStartPostion && endPoint <= fileEndPostion)
                    {
                        startPositionValue = fileDataHead + startPoint - fileStartPostion;
                        startMeterValue    = startMeter;
                        endPositionValue   = endPoint - startPoint + startPositionValue;
                        endMeterValue      = endMeter;

                        sqlText = String.Format(sqlFormat, idValue.ToString(), startPositionValue.ToString(), endPositionValue.ToString(), startMeterValue.ToString(), endMeterValue.ToString(), invalidTypeValue.ToString(), memoTextValue, isShowValue.ToString(), channelTypeValue);
                        newIndexOperaotr.ExcuteSql(sqlText);
                    }
                    //第二种情形:无效区段的跨越分割波形的起始部分
                    if (startPoint < fileStartPostion && fileStartPostion < endPoint)
                    {
                        startPositionValue = fileDataHead;;
                        startMeterValue    = startMeter + (0.25 * (fileStartPostion - startPoint) / (channelNumber * 2)) / 1000;
                        endPositionValue   = endPoint - fileStartPostion + startPositionValue;
                        endMeterValue      = endMeter;

                        sqlText = String.Format(sqlFormat, idValue.ToString(), startPositionValue.ToString(), endPositionValue.ToString(), startMeterValue.ToString(), endMeterValue.ToString(), invalidTypeValue.ToString(), memoTextValue, isShowValue.ToString(), channelTypeValue);
                        newIndexOperaotr.ExcuteSql(sqlText);
                    }
                    //第三种情形:无效区段的跨越分割波形的结束部分
                    if (startPoint < fileEndPostion && fileEndPostion < endPoint)
                    {
                        startPositionValue = fileDataHead + startPoint - fileEndPostion;
                        startMeterValue    = startMeter;
                        endPositionValue   = endPoint - startPoint + startPositionValue;
                        endMeterValue      = startMeter + (0.25 * (fileEndPostion - startPoint) / (channelNumber * 2)) / 1000;

                        sqlText = String.Format(sqlFormat, idValue.ToString(), startPositionValue.ToString(), endPositionValue.ToString(), startMeterValue.ToString(), endMeterValue.ToString(), invalidTypeValue.ToString(), memoTextValue, isShowValue.ToString(), channelTypeValue);
                        newIndexOperaotr.ExcuteSql(sqlText);
                    }
                }
                return(true);
            }
            return(false);
        }
        /// <summary>
        /// 添加新索引数据
        /// </summary>
        /// <param name="citHeadEndPostion">文件头部结束为止</param>
        /// <param name="fileStartPostion">数据开始位置</param>
        /// <param name="fileEndPostion">数据结束位置</param>
        /// <param name="channelNumber">通道个数</param>
        /// <returns></returns>
        private bool AddNewIndexData(string destCitPath, IOperator NewIndexOperator, long citHeadEndPostion, long fileStartPostion, long fileEndPostion, int channelNumber)
        {
            string sqlCmd = "delete from IndexSta";

            NewIndexOperator.ExcuteSql(sqlCmd);
            long fileHead = citHeadEndPostion;

            if (MileageFix.FixData != null && MileageFix.FixData.Count > 0)
            {
                for (int i = 0; i < MileageFix.FixData.Count; i++)
                {
                    double startMeter    = MileageFix.FixData[i].MarkedStartPoint.UserSetMileage;
                    double endMeter      = MileageFix.FixData[i].MarkedEndPoint.UserSetMileage;
                    long   startPoint    = MileageFix.FixData[i].MarkedStartPoint.FilePointer;
                    long   endPoint      = MileageFix.FixData[i].MarkedEndPoint.FilePointer;
                    double containsMeter = MileageFix.FixData[i].RealDistance;
                    long   containsPoint = MileageFix.FixData[i].SamplePointCount;
                    double meterPerPoint = containsMeter / (containsPoint - 1);

                    int    id                 = 0;
                    int    indexIdValue       = 0;
                    long   startPositionValue = 0;
                    double startMeterValue    = 0;
                    long   endPositionValue   = 0;
                    double endMeterValue      = 0;
                    long   containsPointValue = 0;
                    double containsMeterValue = 0;
                    string indexTypeValue     = "";

                    string sqlFormat = "insert into IndexSta values({0},{1},'{2}','{3}','{4}','{5}','{6}','{7}','{8}')";
                    string sqlText   = string.Format(sqlFormat, id, indexIdValue.ToString(), startPositionValue.ToString(), startMeterValue.ToString(), endPositionValue.ToString(), endMeterValue.ToString(), containsPointValue.ToString(), containsMeterValue.ToString(), indexTypeValue);
                    id           = i;
                    indexIdValue = 1;
                    //第一段索引
                    if (startPoint <= fileStartPostion && fileStartPostion < endPoint)
                    {
                        startPositionValue = citHeadEndPostion;
                        startMeterValue    = Math.Round(startMeter + ((endMeter - startMeter) / containsPoint) * ((fileStartPostion - startPoint) / (channelNumber * 2)), 3);
                        //如果分割的波形都在同一段索引内
                        if (startPoint < fileEndPostion && fileEndPostion <= endPoint)
                        {
                            endPositionValue = fileEndPostion - fileStartPostion + startPositionValue;
                            endMeter         = Math.Round(startMeter + ((endMeter - startMeter) / containsPoint) * ((fileEndPostion - startPoint) / (channelNumber * 2)), 3);

                            containsPoint      = (endPositionValue - startPositionValue) / (channelNumber * 2);
                            containsMeterValue = Math.Abs(startMeterValue - endMeterValue);
                            indexTypeValue     = "正常";

                            sqlText = string.Format(sqlFormat, id, indexIdValue.ToString(), startPositionValue.ToString(), startMeterValue.ToString(), endPositionValue.ToString(), endMeterValue.ToString(), containsPointValue.ToString(), containsMeterValue.ToString(), indexTypeValue);
                            //DBOperator.ExcuteSqlInCommonDB(sqlText);
                            NewIndexOperator.ExcuteSql(sqlText);
                            fileHead = endPositionValue;

                            break;
                        }

                        endPositionValue = endPoint - fileStartPostion + startPositionValue;
                        endMeterValue    = endMeter;

                        containsPointValue = (endPositionValue - startPositionValue) / (channelNumber * 2);
                        containsMeterValue = Math.Abs(startMeterValue - endMeterValue);
                        indexTypeValue     = "正常";

                        sqlText = string.Format(sqlFormat, id, indexIdValue.ToString(), startPositionValue.ToString(), startMeterValue.ToString(), endPositionValue.ToString(), endMeterValue.ToString(), containsPointValue.ToString(), containsMeterValue.ToString(), indexTypeValue);
                        NewIndexOperator.ExcuteSql(sqlText);
                        fileHead = endPositionValue;
                    }
                    //中间段索引
                    if ((fileStartPostion < startPoint && fileStartPostion < endPoint) && (fileEndPostion > startPoint && fileEndPostion > endPoint))
                    {
                        startPositionValue = fileHead;;
                        startMeterValue    = startMeter;
                        endPositionValue   = endPoint - startPoint + startPositionValue;
                        endMeterValue      = endMeter;

                        containsPointValue = (endPositionValue - startPositionValue) / (channelNumber * 2);
                        containsMeterValue = Math.Abs(startMeterValue - endMeterValue);
                        indexTypeValue     = "正常";

                        sqlText = string.Format(sqlFormat, id, indexIdValue.ToString(), startPositionValue.ToString(), startMeterValue.ToString(), endPositionValue.ToString(), endMeterValue.ToString(), containsPointValue.ToString(), containsMeterValue.ToString(), indexTypeValue);
                        NewIndexOperator.ExcuteSql(sqlText);
                        fileHead = endPositionValue;
                    }
                    //最后一段索引
                    if (startPoint < fileEndPostion && fileEndPostion <= endPoint)
                    {
                        startPositionValue = fileHead;
                        startMeterValue    = startMeter;
                        endPositionValue   = fileEndPostion - startPoint + startPositionValue;
                        endMeterValue      = Math.Round(startMeter + ((endMeter - startMeter) / containsPoint) * ((fileEndPostion - startPoint) / (channelNumber * 2)), 3);

                        containsPointValue = (endPositionValue - startPositionValue) / (channelNumber * 2);
                        containsMeterValue = Math.Abs(startMeterValue - endMeterValue);
                        indexTypeValue     = "正常";

                        sqlText = string.Format(sqlFormat, id, indexIdValue.ToString(), startPositionValue.ToString(), startMeterValue.ToString(), endPositionValue.ToString(), endMeterValue.ToString(), containsPointValue.ToString(), containsMeterValue.ToString(), indexTypeValue);
                        NewIndexOperator.ExcuteSql(sqlText);
                        fileHead = endPositionValue;
                    }
                }
                return(true);
            }
            return(false);
        }