Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -279,7 +279,7 @@ set(valhalla_programs valhalla_run_map_match valhalla_benchmark_loki valhalla_be
set(valhalla_data_tools valhalla_build_statistics valhalla_ways_to_edges valhalla_validate_transit
valhalla_benchmark_admins valhalla_build_connectivity valhalla_build_tiles valhalla_build_admins
valhalla_convert_transit valhalla_ingest_transit valhalla_query_transit valhalla_add_predicted_traffic
valhalla_assign_speeds valhalla_add_elevation valhalla_build_landmarks valhalla_add_landmarks)
valhalla_assign_speeds valhalla_add_elevation valhalla_build_landmarks valhalla_add_landmarks valhalla_print_tile)

## Valhalla services
set(valhalla_services valhalla_loki_worker valhalla_odin_worker valhalla_thor_worker)
Expand Down
90 changes: 90 additions & 0 deletions src/baldr/graphtileheader.cc
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@
#include "config.h"

#include <algorithm>
#include <sstream>
#include <string>

using namespace valhalla::baldr;

Expand Down Expand Up @@ -87,5 +89,93 @@ std::pair<uint32_t, uint32_t> GraphTileHeader::bin_offset(size_t index) const {
throw std::runtime_error("Bin out of bounds");
}

std::string GraphTileHeader::debug_string() const {
std::ostringstream os;
os.setf(std::ios::boolalpha);

// Bitfields (graphid/quality/flags)
os << "graphid_: " << static_cast<unsigned long long>(graphid_) << "\n";
os << "density_: " << static_cast<unsigned long long>(density_) << "\n";
os << "name_quality_: " << static_cast<unsigned long long>(name_quality_) << "\n";
os << "speed_quality_: " << static_cast<unsigned long long>(speed_quality_) << "\n";
os << "exit_quality_: " << static_cast<unsigned long long>(exit_quality_) << "\n";
os << "has_elevation_: " << static_cast<bool>(has_elevation_) << "\n";
os << "has_ext_directededge_: " << static_cast<bool>(has_ext_directededge_) << "\n";

// Base LL
os << "base_ll_.first (lng): " << base_ll_.first << "\n";
os << "base_ll_.second (lat): " << base_ll_.second << "\n";

// Version and dataset id
os << "version_: " << version_.data() << "\n";
os << "dataset_id_: " << static_cast<unsigned long long>(dataset_id_) << "\n";

// Record counts (bitfields)
os << "nodecount_: " << static_cast<unsigned long long>(nodecount_) << "\n";
os << "directededgecount_: " << static_cast<unsigned long long>(directededgecount_) << "\n";
os << "predictedspeeds_count_: " << static_cast<unsigned long long>(predictedspeeds_count_) << "\n";
os << "spare1_: " << static_cast<unsigned long long>(spare1_) << "\n";

// Mixed-width counts & spares
os << "transitioncount_: " << static_cast<unsigned long long>(transitioncount_) << "\n";
os << "spare3_: " << static_cast<unsigned long long>(spare3_) << "\n";
os << "turnlane_count_: " << static_cast<unsigned long long>(turnlane_count_) << "\n";
os << "spare4_: " << static_cast<unsigned long long>(spare4_) << "\n";
os << "transfercount_: " << static_cast<unsigned long long>(transfercount_) << "\n";
os << "spare2_: " << static_cast<unsigned long long>(spare2_) << "\n";

// Transit counts
os << "departurecount_: " << static_cast<unsigned long long>(departurecount_) << "\n";
os << "stopcount_: " << static_cast<unsigned long long>(stopcount_) << "\n";
os << "spare5_: " << static_cast<unsigned long long>(spare5_) << "\n";
os << "routecount_: " << static_cast<unsigned long long>(routecount_) << "\n";
os << "schedulecount_: " << static_cast<unsigned long long>(schedulecount_) << "\n";

// More counts
os << "signcount_: " << static_cast<unsigned long long>(signcount_) << "\n";
os << "spare6_: " << static_cast<unsigned long long>(spare6_) << "\n";
os << "access_restriction_count_: " << static_cast<unsigned long long>(access_restriction_count_) << "\n";
os << "admincount_: " << static_cast<unsigned long long>(admincount_) << "\n";
os << "spare7_: " << static_cast<unsigned long long>(spare7_) << "\n";

// Spare words
os << "spareword0_: " << static_cast<unsigned long long>(spareword0_) << "\n";
os << "spareword1_: " << static_cast<unsigned long long>(spareword1_) << "\n";

// Offsets (variable-size sections)
os << "complex_restriction_forward_offset_: " << complex_restriction_forward_offset_ << "\n";
os << "complex_restriction_reverse_offset_: " << complex_restriction_reverse_offset_ << "\n";
os << "edgeinfo_offset_: " << edgeinfo_offset_ << "\n";
os << "textlist_offset_: " << textlist_offset_ << "\n";

// Date created
os << "date_created_: " << date_created_ << "\n";

// Bin offsets
os << "bin_offsets_: [";
for (size_t i = 0; i < bin_offsets_.size(); ++i) {
os << bin_offsets_[i];
if (i + 1 < bin_offsets_.size()) os << ", ";
}
os << "]\n";

// Lane connectivity and predicted speeds offsets
os << "lane_connectivity_offset_: " << lane_connectivity_offset_ << "\n";
os << "predictedspeeds_offset_: " << predictedspeeds_offset_ << "\n";

// Tile size
os << "tile_size_: " << tile_size_ << "\n";

// Empty slots
os << "empty_slots_: [";
for (size_t i = 0; i < empty_slots_.size(); ++i) {
os << empty_slots_[i];
if (i + 1 < empty_slots_.size()) os << ", ";
}
os << "]\n";

return os.str();
}

} // namespace baldr
} // namespace valhalla
46 changes: 46 additions & 0 deletions src/baldr/nodeinfo.cc
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,9 @@
#include "baldr/rapidjson_utils.h"
#include "midgard/logging.h"

#include <sstream>
#include <string>

using namespace valhalla::midgard;
using namespace valhalla::baldr;

Expand Down Expand Up @@ -78,6 +81,49 @@ NodeInfo::NodeInfo(const PointLL& tile_corner,
set_cash_only_toll(cash_only_toll);
}

std::string NodeInfo::debug_string() const {
std::ostringstream os;
os.setf(std::ios::boolalpha);

// 1st 8-byte word
os << "lat_offset_: " << static_cast<unsigned long long>(lat_offset_) << "\n";
os << "lat_offset7_: " << static_cast<unsigned long long>(lat_offset7_) << "\n";
os << "lon_offset_: " << static_cast<unsigned long long>(lon_offset_) << "\n";
os << "lon_offset7_: " << static_cast<unsigned long long>(lon_offset7_) << "\n";
os << "access_: " << static_cast<unsigned long long>(access_) << "\n";

// 2nd 8-byte word
os << "edge_index_: " << static_cast<unsigned long long>(edge_index_) << "\n";
os << "edge_count_: " << static_cast<unsigned long long>(edge_count_) << "\n";
os << "admin_index_: " << static_cast<unsigned long long>(admin_index_) << "\n";
os << "timezone_: " << static_cast<unsigned long long>(timezone_) << "\n";
os << "intersection_: " << static_cast<unsigned long long>(intersection_) << "\n";
os << "type_: " << static_cast<unsigned long long>(type_) << "\n";
os << "density_: " << static_cast<unsigned long long>(density_) << "\n";
os << "traffic_signal_: "<< static_cast<bool>(traffic_signal_) << "\n";
os << "mode_change_: " << static_cast<bool>(mode_change_) << "\n";
os << "named_: " << static_cast<bool>(named_) << "\n";

// 3rd 8-byte word
os << "transition_index_: " << static_cast<unsigned long long>(transition_index_) << "\n";
os << "transition_count_: " << static_cast<unsigned long long>(transition_count_) << "\n";
os << "local_driveability_: " << static_cast<unsigned long long>(local_driveability_) << "\n";
os << "local_edge_count_: " << static_cast<unsigned long long>(local_edge_count_) << "\n";
os << "drive_on_right_: " << static_cast<bool>(drive_on_right_) << "\n";
os << "tagged_access_: " << static_cast<bool>(tagged_access_) << "\n";
os << "private_access_: " << static_cast<bool>(private_access_) << "\n";
os << "cash_only_toll_: " << static_cast<bool>(cash_only_toll_) << "\n";
os << "elevation_: " << static_cast<unsigned long long>(elevation_) << "\n";
os << "timezone_ext_1_: " << static_cast<unsigned long long>(timezone_ext_1_) << "\n";
// If you ever enable timezone_ext_2_, add it here.
os << "spare2_: " << static_cast<unsigned long long>(spare2_) << "\n";

// 4th 8-byte word (raw headings / transit-connection storage)
os << "headings_: " << static_cast<unsigned long long>(headings_) << "\n";

return os.str();
}

// Sets the latitude and longitude.
void NodeInfo::set_latlng(const PointLL& tile_corner, const PointLL& ll) {
// Protect against a node being slightly outside the tile (due to float roundoff)
Expand Down
Loading
Loading