MCPcopy Create free account
hub / github.com/3DBAG/roofer / main

Function main

experiments/parallel-reconstruct/tests/test_parallel_reconstruct.cpp:40–103  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

38};
39
40int main(int argc, char* argv[]) {
41 auto args = std::span(argv, size_t(argc));
42 uint nr_laz_files = 3;
43 nr_laz_files = std::stoi(args[1]);
44 uint nr_points_per_laz = 2000;
45 nr_points_per_laz = std::stoi(args[2]);
46
47 std::string jsonpattern = {
48 "{\"time\": \"%Y-%m-%dT%H:%M:%S.%f%z\", \"name\": \"%n\", \"process\": "
49 "%P, "
50 "\"thread\": %t, "
51 "\"count\": %v}"};
52 spdlog::set_pattern(jsonpattern);
53 spdlog::set_level(spdlog::level::trace);
54
55 // Init loggers
56 auto logs_dir = "logs/parallel_reconstruct";
57 auto logger_read_pc = spdlog::basic_logger_mt(
58 "read_pc", std::format("{}/log_read_pc.json", logs_dir));
59 auto logger_crop = spdlog::basic_logger_mt(
60 "crop", std::format("{}/log_crop.json", logs_dir));
61 auto logger_reconstruct = spdlog::basic_logger_mt(
62 "reconstruct", std::format("{}/log_reconstruct.json", logs_dir));
63 auto logger_write = spdlog::basic_logger_mt(
64 "write", std::format("{}/log_write.json", logs_dir));
65 auto logger_coro = spdlog::stderr_color_mt("coro");
66 // auto logger_coro = spdlog::basic_logger_mt(
67 // "coro", std::format("{}/log_coro.json", logs_dir));
68
69 // Crop
70 std::queue<Points> queue_cropped_buildings;
71 crop(nr_points_per_laz, nr_laz_files, queue_cropped_buildings);
72 // hack
73 std::vector<Points> vec_cropped_buildings;
74 vec_cropped_buildings.reserve(queue_cropped_buildings.size());
75 for (; !queue_cropped_buildings.empty(); queue_cropped_buildings.pop()) {
76 vec_cropped_buildings.push_back(queue_cropped_buildings.front());
77 }
78
79 // Reconstruct
80 std::queue<Points> queue_reconstructed_buildings;
81 auto count_buildings = 0;
82 logger_reconstruct->trace(count_buildings);
83
84 lf::lazy_pool pool(4); // 4 worker threads
85 auto reconstructed_buildings =
86 lf::sync_wait(pool, reconstruct_parallel, vec_cropped_buildings);
87 logger_reconstruct->trace(reconstructed_buildings.size());
88
89 // Write
90 auto count_written = 0;
91 auto json_writer = JsonWriter();
92 for (auto model : reconstructed_buildings) {
93 json_writer.write(model, std::format("output/parallel_reconstruct/{}.json",
94 count_written));
95 if (count_written % EMIT_TRACE_AT == 0) {
96 logger_write->trace(count_written);
97 }

Callers

nothing calls this directly

Calls 8

cropFunction · 0.85
JsonWriterClass · 0.85
reserveMethod · 0.80
traceMethod · 0.80
writeMethod · 0.80
sizeMethod · 0.45
emptyMethod · 0.45
push_backMethod · 0.45

Tested by

no test coverage detected