Changeset 6222 in ntrip for trunk/BNC/src
- Timestamp:
- Oct 11, 2014, 1:57:19 PM (10 years ago)
- Location:
- trunk/BNC/src/rinex
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/BNC/src/rinex/rnxobsfile.cpp
r6221 r6222 212 212 } 213 213 214 // Set Default Header 215 //////////////////////////////////////////////////////////////////////////// 216 void t_rnxObsHeader::setDefault(const QString& markerName, int version) { 217 218 _markerName = markerName; 219 220 if (version <= 2) { 221 _version = t_rnxObsHeader::defaultRnxObsVersion2; 222 } 223 else { 224 _version = t_rnxObsHeader::defaultRnxObsVersion3; 225 } 226 227 _comments << "Default set of observation types used"; 228 229 _obsTypes.clear(); 230 if (_version < 3.0) { 231 _obsTypes['G'] << "C1" << "P1" << "L1" << "S1" 232 << "C2" << "P2" << "L2" << "S2"; 233 _obsTypes['R'] = _obsTypes['G']; 234 _obsTypes['E'] = _obsTypes['G']; 235 _obsTypes['J'] = _obsTypes['G']; 236 _obsTypes['S'] = _obsTypes['G']; 237 _obsTypes['C'] = _obsTypes['G']; 238 } 239 else { 240 _obsTypes['G'] << "C1C" << "L1C" << "S1C" 241 << "C2W" << "L2W" << "S2W" 242 << "C5" << "L5" << "S5"; 243 244 _obsTypes['J'] = _obsTypes['G']; 245 246 _obsTypes['R'] << "C1C" << "L1C" << "S1C" 247 << "C2P" << "L2P" << "S2P"; 248 249 _obsTypes['E'] << "C1" << "L1" << "S1" 250 << "C5" << "L5" << "S5" 251 << "C7" << "L7" << "S7" 252 << "C8" << "L8" << "S8"; 253 254 _obsTypes['S'] << "C1" << "L1" << "S1" 255 << "C5" << "L5" << "S5"; 256 257 _obsTypes['C'] << "C1" << "L1" << "S1" 258 << "C6" << "L6" << "S6" 259 << "C7" << "L7" << "S7"; 260 } 261 } 262 263 // Copy header 264 //////////////////////////////////////////////////////////////////////////// 265 void t_rnxObsHeader::set(const t_rnxObsHeader& header, int version, 266 const QStringList* useObsTypes) { 267 268 if (version <= 2) { 269 _version = t_rnxObsHeader::defaultRnxObsVersion2; 270 } 271 else { 272 _version = t_rnxObsHeader::defaultRnxObsVersion3; 273 } 274 _interval = header._interval; 275 _antennaNumber = header._antennaNumber; 276 _antennaName = header._antennaName; 277 _markerName = header._markerName; 278 _markerNumber = header._markerNumber; 279 _antNEU = header._antNEU; 280 _antXYZ = header._antXYZ; 281 _antBSG = header._antBSG; 282 _xyz = header._xyz; 283 _observer = header._observer; 284 _agency = header._agency; 285 _receiverNumber = header._receiverNumber; 286 _receiverType = header._receiverType; 287 _receiverVersion = header._receiverVersion; 288 _startTime = header._startTime; 289 for (unsigned iPrn = 1; iPrn <= t_prn::MAXPRN_GPS; iPrn++) { 290 _wlFactorsL1[iPrn] = header._wlFactorsL1[iPrn]; 291 _wlFactorsL2[iPrn] = header._wlFactorsL2[iPrn]; 292 } 293 294 // Set observation types 295 // --------------------- 296 _obsTypes.clear(); 297 if (!useObsTypes || useObsTypes->size() == 0) { 298 if (int(_version) == int(header._version)) { 299 _obsTypes = header._obsTypes; 300 } 301 else { 302 for (int iSys = 0; iSys < header.numSys(); iSys++) { 303 char sys = header.system(iSys); 304 for (int iType = 0; iType < header.nTypes(sys); iType++) { 305 _obsTypes[sys].push_back(header.obsType(sys, iType, _version)); 306 } 307 } 308 } 309 } 310 else { 311 for (int iType = 0; iType < useObsTypes->size(); iType++) { 312 if (useObsTypes->at(iType).indexOf(":") != -1) { 313 QStringList hlp = useObsTypes->at(iType).split(":", QString::SkipEmptyParts); 314 if (hlp.size() == 2 && hlp[0].length() == 1) { 315 char sys = hlp[0][0].toAscii(); 316 QString type = hlp[1]; 317 _obsTypes[sys].push_back(type); 318 } 319 } 320 else { 321 for (int iSys = 0; iSys < t_rnxObsHeader::defaultSystems.length(); iSys++) { 322 char sys = t_rnxObsHeader::defaultSystems[iSys].toAscii(); 323 _obsTypes[sys].push_back(useObsTypes->at(iType)); 324 } 325 } 326 } 327 } 328 } 329 214 330 // Write Header 215 331 //////////////////////////////////////////////////////////////////////////// … … 740 856 } 741 857 742 // Set Header Information743 ////////////////////////////////////////////////////////////////////////////744 void t_rnxObsFile::setHeader(const t_rnxObsHeader& header, double version,745 const QStringList& useObsTypes) {746 747 if (version < 3.0) {748 _header._version = t_rnxObsHeader::defaultRnxObsVersion2;749 }750 else {751 _header._version = t_rnxObsHeader::defaultRnxObsVersion3;752 }753 _header._interval = header._interval;754 _header._antennaNumber = header._antennaNumber;755 _header._antennaName = header._antennaName;756 _header._markerName = header._markerName;757 _header._markerNumber = header._markerNumber;758 _header._antNEU = header._antNEU;759 _header._antXYZ = header._antXYZ;760 _header._antBSG = header._antBSG;761 _header._xyz = header._xyz;762 _header._observer = header._observer;763 _header._agency = header._agency;764 _header._receiverNumber = header._receiverNumber;765 _header._receiverType = header._receiverType;766 _header._receiverVersion = header._receiverVersion;767 _header._startTime = header._startTime;768 for (unsigned iPrn = 1; iPrn <= t_prn::MAXPRN_GPS; iPrn++) {769 _header._wlFactorsL1[iPrn] = header._wlFactorsL1[iPrn];770 _header._wlFactorsL2[iPrn] = header._wlFactorsL2[iPrn];771 }772 773 // Set observation types774 // ---------------------775 _header._obsTypes.clear();776 if (useObsTypes.size() == 0) {777 if (int(_header._version) == int(header._version)) {778 _header._obsTypes = header._obsTypes;779 }780 else {781 for (int iSys = 0; iSys < header.numSys(); iSys++) {782 char sys = header.system(iSys);783 for (int iType = 0; iType < header.nTypes(sys); iType++) {784 _header._obsTypes[sys].push_back(header.obsType(sys, iType, _header._version));785 }786 }787 }788 }789 else {790 for (int iType = 0; iType < useObsTypes.size(); iType++) {791 if (useObsTypes[iType].indexOf(":") != -1) {792 QStringList hlp = useObsTypes[iType].split(":", QString::SkipEmptyParts);793 if (hlp.size() == 2 && hlp[0].length() == 1) {794 char sys = hlp[0][0].toAscii();795 QString type = hlp[1];796 _header._obsTypes[sys].push_back(type);797 }798 }799 else {800 for (int iSys = 0; iSys < t_rnxObsHeader::defaultSystems.length(); iSys++) {801 char sys = t_rnxObsHeader::defaultSystems[iSys].toAscii();802 _header._obsTypes[sys].push_back(useObsTypes[iType]);803 }804 }805 }806 }807 }808 809 858 // Write Data Epoch 810 859 //////////////////////////////////////////////////////////////////////////// 811 860 void t_rnxObsFile::writeEpoch(const t_rnxEpo* epo) { 812 861 if (version() < 3.0) { 813 return writeEpochV2( epo);862 return writeEpochV2(_stream, _header, epo); 814 863 } 815 864 else { 816 return writeEpochV3( epo);865 return writeEpochV3(_stream, _header, epo); 817 866 } 818 867 } … … 820 869 // Write Data Epoch (RINEX Version 2) 821 870 //////////////////////////////////////////////////////////////////////////// 822 void t_rnxObsFile::writeEpochV2(const t_rnxEpo* epo) { 871 void t_rnxObsFile::writeEpochV2(QTextStream* stream, const t_rnxObsHeader& header, 872 const t_rnxEpo* epo) { 823 873 824 874 unsigned year, month, day, hour, min; … … 837 887 838 888 int flag = 0; 839 * _stream << dateStr << QString("%1%2").arg(flag, 3).arg(epo->rnxSat.size(), 3);889 *stream << dateStr << QString("%1%2").arg(flag, 3).arg(epo->rnxSat.size(), 3); 840 890 for (unsigned iSat = 0; iSat < epo->rnxSat.size(); iSat++) { 841 891 const t_rnxSat& rnxSat = epo->rnxSat[iSat]; 842 892 if (iSat > 0 && iSat % 12 == 0) { 843 * _stream << endl << QString().leftJustified(32);844 } 845 * _stream << rnxSat.prn.toString().c_str();846 } 847 * _stream << endl;893 *stream << endl << QString().leftJustified(32); 894 } 895 *stream << rnxSat.prn.toString().c_str(); 896 } 897 *stream << endl; 848 898 for (unsigned iSat = 0; iSat < epo->rnxSat.size(); iSat++) { 849 899 … … 851 901 char sys = rnxSat.prn.system(); 852 902 853 for (int iTypeV2 = 0; iTypeV2 < nTypes(sys); iTypeV2++) {903 for (int iTypeV2 = 0; iTypeV2 < header.nTypes(sys); iTypeV2++) { 854 904 if (iTypeV2 > 0 && iTypeV2 % 5 == 0) { 855 * _stream << endl;856 } 857 QString typeV2 = obsType(sys, iTypeV2);905 *stream << endl; 906 } 907 QString typeV2 = header.obsType(sys, iTypeV2); 858 908 bool found = false; 859 909 QMapIterator<QString, t_rnxObs> itObs(rnxSat.obs); … … 865 915 found = true; 866 916 if (rnxObs.value == 0.0) { 867 * _stream << QString().leftJustified(16);917 *stream << QString().leftJustified(16); 868 918 } 869 919 else { 870 * _stream << QString("%1").arg(rnxObs.value, 14, 'f', 3);920 *stream << QString("%1").arg(rnxObs.value, 14, 'f', 3); 871 921 if (rnxObs.lli != 0.0) { 872 * _stream << QString("%1").arg(rnxObs.lli,1);922 *stream << QString("%1").arg(rnxObs.lli,1); 873 923 } 874 924 else { 875 * _stream << ' ';925 *stream << ' '; 876 926 } 877 927 if (rnxObs.snr != 0.0) { 878 * _stream << QString("%1").arg(rnxObs.snr,1);928 *stream << QString("%1").arg(rnxObs.snr,1); 879 929 } 880 930 else { 881 * _stream << ' ';931 *stream << ' '; 882 932 } 883 933 } … … 886 936 } 887 937 if (!found) { 888 * _stream << QString().leftJustified(16);889 } 890 } 891 * _stream << endl;938 *stream << QString().leftJustified(16); 939 } 940 } 941 *stream << endl; 892 942 } 893 943 } … … 895 945 // Write Data Epoch (RINEX Version 3) 896 946 //////////////////////////////////////////////////////////////////////////// 897 void t_rnxObsFile::writeEpochV3(const t_rnxEpo* epo) { 947 void t_rnxObsFile::writeEpochV3(QTextStream* stream, const t_rnxObsHeader& header, 948 const t_rnxEpo* epo) { 898 949 899 950 unsigned year, month, day, hour, min; … … 912 963 913 964 int flag = 0; 914 * _stream << dateStr << QString("%1%2\n").arg(flag, 3).arg(epo->rnxSat.size(), 3);965 *stream << dateStr << QString("%1%2\n").arg(flag, 3).arg(epo->rnxSat.size(), 3); 915 966 916 967 for (unsigned iSat = 0; iSat < epo->rnxSat.size(); iSat++) { … … 918 969 char sys = rnxSat.prn.system(); 919 970 920 * _stream << rnxSat.prn.toString().c_str();921 922 for (int iTypeV3 = 0; iTypeV3 < nTypes(sys); iTypeV3++) {923 QString typeV3 = obsType(sys, iTypeV3);971 *stream << rnxSat.prn.toString().c_str(); 972 973 for (int iTypeV3 = 0; iTypeV3 < header.nTypes(sys); iTypeV3++) { 974 QString typeV3 = header.obsType(sys, iTypeV3); 924 975 bool found = false; 925 976 QMapIterator<QString, t_rnxObs> itObs(rnxSat.obs); … … 931 982 found = true; 932 983 if (rnxObs.value == 0.0) { 933 * _stream << QString().leftJustified(16);984 *stream << QString().leftJustified(16); 934 985 } 935 986 else { 936 * _stream << QString("%1").arg(rnxObs.value, 14, 'f', 3);987 *stream << QString("%1").arg(rnxObs.value, 14, 'f', 3); 937 988 if (rnxObs.lli != 0.0) { 938 * _stream << QString("%1").arg(rnxObs.lli,1);989 *stream << QString("%1").arg(rnxObs.lli,1); 939 990 } 940 991 else { 941 * _stream << ' ';992 *stream << ' '; 942 993 } 943 994 if (rnxObs.snr != 0.0) { 944 * _stream << QString("%1").arg(rnxObs.snr,1);995 *stream << QString("%1").arg(rnxObs.snr,1); 945 996 } 946 997 else { 947 * _stream << ' ';998 *stream << ' '; 948 999 } 949 1000 } … … 951 1002 } 952 1003 if (!found) { 953 * _stream << QString().leftJustified(16);954 } 955 } 956 * _stream << endl;1004 *stream << QString().leftJustified(16); 1005 } 1006 } 1007 *stream << endl; 957 1008 } 958 1009 } -
trunk/BNC/src/rinex/rnxobsfile.h
r6221 r6222 52 52 53 53 t_irc read(QTextStream* stream, int maxLines = 0); 54 void setDefault(const QString& markerName, int version); 55 void set(const t_rnxObsHeader& header, int version, const QStringList* useObsTypes = 0); 54 56 int numSys() const; 55 57 char system(int iSys) const; … … 145 147 146 148 t_rnxEpo* nextEpoch(); 149 147 150 int wlFactorL1(unsigned iPrn) { 148 151 return iPrn <= t_prn::MAXPRN_GPS ? _header._wlFactorsL1[iPrn] : 1; … … 153 156 154 157 const t_rnxObsHeader& header() const {return _header;} 155 void setHeader(const t_rnxObsHeader& header, double version, const QStringList& useObsTypes); 158 159 void setHeader(const t_rnxObsHeader& header, int version, const QStringList* useObsTypes = 0) { 160 _header.set(header, version, useObsTypes); 161 } 162 156 163 void writeEpoch(const t_rnxEpo* epo); 157 164 158 165 QTextStream* stream() {return _stream;} 159 166 160 static void setObsFromRnx(const t_rnxObsFile* rnxObsFile, 161 const t_rnxObsFile::t_rnxEpo* epo, 162 const t_rnxObsFile::t_rnxSat& rnxSat, 163 t_satObs& obs); 167 static void setObsFromRnx(const t_rnxObsFile* rnxObsFile, const t_rnxObsFile::t_rnxEpo* epo, 168 const t_rnxObsFile::t_rnxSat& rnxSat, t_satObs& obs); 164 169 165 170 static QString type2to3(char sys, const QString& typeV2); 166 171 static QString type3to2(char sys, const QString& typeV3); 172 173 static void writeEpochV2(QTextStream* stream, const t_rnxObsHeader& header, const t_rnxEpo* epo); 174 static void writeEpochV3(QTextStream* stream, const t_rnxObsHeader& header, const t_rnxEpo* epo); 167 175 168 176 private:
Note:
See TracChangeset
for help on using the changeset viewer.