Skip to content

Commit 68f2e64

Browse files
authored
Merge pull request #323 from rogerfraser/master
Initial changes to address issue 305
2 parents 27c65ab + 654d83d commit 68f2e64

File tree

5 files changed

+58
-10
lines changed

5 files changed

+58
-10
lines changed

dynadjust/dynadjust/dnaimport/dnainterop.cpp

Lines changed: 17 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4926,20 +4926,33 @@ void dna_import::PrintMeasurementsToStations(std::string& m2s_file, MsrTally* pa
49264926
switch (projectSettings_.o._sort_msr_to_stn)
49274927
{
49284928
case meas_stn_sort_ui:
4929-
{
4930-
// sort summary according to measurement to station count
4929+
{ // sort summary according to measurement to station count (ascending)
4930+
// Note: this is the default sort order
49314931
CompareMeasCount2<ASLPtr, UINT32> msrcountCompareFunc(vAssocStnList);
49324932
std::sort(vStationList.begin(), vStationList.end(), msrcountCompareFunc);
4933+
break;
4934+
}
4935+
case saem_stn_sort_ui: {
4936+
// sort summary according to measurement to station count (descending)
4937+
CompareMeasCount2Desc<ASLPtr, UINT32> msrcountCompareFunc(vAssocStnList);
4938+
std::sort(vStationList.begin(), vStationList.end(), msrcountCompareFunc);
4939+
break;
4940+
}
4941+
case name_stn_sort_ui:
4942+
{
4943+
// sort summary according to station name
4944+
CompareStnNameOrder<station_t, UINT32> stnnameCompareFunc(&bstBinaryRecords);
4945+
std::sort(vStationList.begin(), vStationList.end(), stnnameCompareFunc);
4946+
break;
49334947
}
4934-
break;
49354948
case orig_stn_sort_ui:
49364949
default:
49374950
{
49384951
// sort summary according to original station file order
49394952
CompareStnFileOrder<station_t, UINT32> stnorderCompareFunc(&bstBinaryRecords);
49404953
std::sort(vStationList.begin(), vStationList.end(), stnorderCompareFunc);
4954+
break;
49414955
}
4942-
break;
49434956
}
49444957

49454958
std::ofstream m2s_stream;

dynadjust/dynadjust/dnaimportwrapper/dnaimportwrapper.cpp

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1354,9 +1354,11 @@ int main(int argc, char* argv[]) {
13541354

13551355
output_options.add_options()(OUTPUT_MSR_TO_STN, "Output summary of measurements connected to each station.")(
13561356
OUTPUT_MSR_TO_STN_SORTBY, boost::program_options::value<UINT16>(&p.o._sort_msr_to_stn),
1357-
std::string("Sort order for measurement to stations summary.\n " + StringFromT(orig_stn_sort_ui) +
1358-
": Original station order (default)\n " + StringFromT(meas_stn_sort_ui) +
1359-
": Measurement count")
1357+
std::string("Sort order for measurement to stations summary.\n " +
1358+
StringFromT(orig_stn_sort_ui) + ": Original station order (default)\n " +
1359+
StringFromT(name_stn_sort_ui) + ": Station name\n " +
1360+
StringFromT(meas_stn_sort_ui) + ": Measurement count (ascending)\n " +
1361+
StringFromT(saem_stn_sort_ui) + ": Measurement count (descending)")
13601362
.c_str());
13611363

13621364
export_options.add_options()(EXPORT_XML_FILES,

dynadjust/include/config/dnatypes-gui.hpp

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,9 @@ typedef enum ADJ_MSR_SORT_UI
5959
typedef enum MSR_TO_STN_SORT_UI
6060
{
6161
orig_stn_sort_ui = 0, // original station order
62-
meas_stn_sort_ui = 1 // measurement count
62+
name_stn_sort_ui = 1, // station name
63+
meas_stn_sort_ui = 2, // measurement count (ascending)
64+
saem_stn_sort_ui = 3 // measurement count (descending)
6365
} _MSR_TO_STN_SORT_UI_;
6466

6567

dynadjust/include/functions/dnatemplatefuncs.hpp

Lines changed: 32 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -507,7 +507,23 @@ class CompareMeasCount2
507507
};
508508

509509

510-
template<typename A, typename U>
510+
template <typename A, typename U>
511+
class CompareMeasCount2Desc {
512+
public:
513+
CompareMeasCount2Desc(const std::vector<A>* a): _a(a) {}
514+
515+
bool operator()(const U& lhs, const U& rhs) {
516+
if (_a->at(lhs).get()->GetAssocMsrCount() == _a->at(rhs).get()->GetAssocMsrCount())
517+
return _a->at(lhs).get()->GetAMLStnIndex() > _a->at(rhs).get()->GetAMLStnIndex();
518+
return _a->at(lhs).get()->GetAssocMsrCount() > _a->at(rhs).get()->GetAssocMsrCount();
519+
}
520+
521+
private:
522+
const std::vector<A>* _a;
523+
};
524+
525+
526+
template <typename A, typename U>
511527
class CompareValidity
512528
{
513529
public:
@@ -624,6 +640,21 @@ class CompareStnFileOrder
624640
};
625641

626642

643+
// S = station_t, U = UINT32
644+
template <typename S, typename U>
645+
class CompareStnNameOrder
646+
{
647+
public:
648+
CompareStnNameOrder(std::vector<S>* s)
649+
: _s(s) {}
650+
bool operator()(const U& lhs, const U& rhs) {
651+
//return std::string(_s->at(lhs).stationName) < std::string(_s->at(rhs).stationName);
652+
return _s->at(lhs).nameOrder < _s->at(rhs).nameOrder;
653+
}
654+
private:
655+
std::vector<S>* _s;
656+
};
657+
627658
// S = CDnaStation
628659
template<typename S, typename T>
629660
class CompareStnName_CDnaStn

dynadjust/include/io/dnaiosnxread.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -899,7 +899,7 @@ void DnaIoSnx::ParseSinexStn(std::ifstream** snx_file, const char* sinexRec, vdn
899899
dnaStnPtr stn_ptr;
900900
UINT32 yy, doy, file_rec(0);
901901

902-
fileOrder = 0;
902+
//fileOrder = 0;
903903
uniqueStationCount_ = 0;
904904

905905
while (sBuf.at(0) != '-')

0 commit comments

Comments
 (0)