diff --git a/generator/booking_quality_check/booking_quality_check.cpp b/generator/booking_quality_check/booking_quality_check.cpp index bec9448bdf..1ec773b9c1 100644 --- a/generator/booking_quality_check/booking_quality_check.cpp +++ b/generator/booking_quality_check/booking_quality_check.cpp @@ -3,6 +3,8 @@ #include "generator/booking_dataset.hpp" #include "generator/osm_source.hpp" +#include "geometry/distance_on_sphere.hpp" + #include "3party/gflags/src/gflags/gflags.h" DEFINE_bool(generate_classif, false, "Generate classificator."); @@ -12,6 +14,18 @@ DEFINE_string(osm_file_name, "", "Input .o5m file"); DEFINE_string(booking_data, "", "Path to booking data in .tsv format"); DEFINE_uint64(selection_size, 1000, "Selection size"); +using namespace generator; + + +ostream & operator << (ostream & s, OsmElement const & e) +{ + for (auto const & tag : e.Tags()) + { + s << tag.key << "=" << tag.value << "\t"; + } + return s; +} + int main(int argc, char * argv[]) { google::SetUsageMessage("Takes OSM XML data from stdin and creates" @@ -52,10 +66,22 @@ int main(int argc, char * argv[]) random_shuffle(elementIndexes.begin(), elementIndexes.end()); elementIndexes.resize(FLAGS_selection_size); - vector selectedElements; for (size_t i : elementIndexes) - selectedElements.emplace_back(elements[i]); - + { + OsmElement const & e = elements[i]; + auto const bookingIndexes = bookingDataset.GetNearestHotels(e.lat, e.lon, 3, 150); + for (size_t const j : bookingIndexes) + { + auto const & hotel = bookingDataset.GetHotel(j); + double const dist = ms::DistanceOnEarth(e.lat, e.lon, hotel.lat, hotel.lon); + cout << "# ------------------------------------------" << fixed << setprecision(6) << endl; + cout << "y \t" << i << "\t " << j << " dist: " << dist << endl; + cout << "# " << e << endl; + cout << "# " << hotel << endl; + cout << "# URL: https://www.openstreetmap.org/?mlat=" << hotel.lat << "&mlon=" << hotel.lon << "#map=18/"<< hotel.lat << "/" << hotel.lon << endl; + } + cout << endl << endl; + } return 0;