diff --git a/Arrangement_on_surface_2/demo/earth/Aos.cpp b/Arrangement_on_surface_2/demo/earth/Aos.cpp index ee409c33631..151bbfae77c 100644 --- a/Arrangement_on_surface_2/demo/earth/Aos.cpp +++ b/Arrangement_on_surface_2/demo/earth/Aos.cpp @@ -1121,6 +1121,8 @@ void Aos::save_arr(Kml::Placemarks& placemarks, const std::string& file_name) json js_face; auto face_name = face_name_map[fh]; js_face["name"] = face_name; + js_face["is_unbounded"] = false; + js_face["is_valid"] = true; // at this point we are sure that we have at least 1 outer-ccb auto& js_outer_ccbs = js_face["outer_ccbs"] = json::array(); diff --git a/Arrangement_on_surface_2/demo/earth/Kml_reader.cpp b/Arrangement_on_surface_2/demo/earth/Kml_reader.cpp index a705970ece6..6ecb5d047a2 100644 --- a/Arrangement_on_surface_2/demo/earth/Kml_reader.cpp +++ b/Arrangement_on_surface_2/demo/earth/Kml_reader.cpp @@ -408,6 +408,16 @@ Kml::Nodes Kml::Placemark::get_all_nodes() const return all_nodes; } +int Kml::Placemark::get_all_nodes_count() const +{ + int num_nodes = 0; + for (const auto& polygon : polygons) + { + auto polygon_nodes = polygon.get_all_nodes(); + num_nodes += polygon_nodes.size(); + } + return num_nodes; +} Kml::Arcs Kml::LinearRing::get_arcs() const { diff --git a/Arrangement_on_surface_2/demo/earth/Kml_reader.h b/Arrangement_on_surface_2/demo/earth/Kml_reader.h index 2c36f9a5470..73477e75063 100644 --- a/Arrangement_on_surface_2/demo/earth/Kml_reader.h +++ b/Arrangement_on_surface_2/demo/earth/Kml_reader.h @@ -77,6 +77,7 @@ public: // collects all nodes from all polygons Nodes get_all_nodes() const; + int get_all_nodes_count() const; Arcs get_all_arcs() const; }; diff --git a/Arrangement_on_surface_2/demo/earth/Main_widget.cpp b/Arrangement_on_surface_2/demo/earth/Main_widget.cpp index b05c137bfef..14b3b71d526 100644 --- a/Arrangement_on_surface_2/demo/earth/Main_widget.cpp +++ b/Arrangement_on_surface_2/demo/earth/Main_widget.cpp @@ -178,8 +178,29 @@ void Main_widget::initializeGL() //const auto file_name = data_path + "world_countries.kml"; //const auto file_name = data_path + "ne_110m_admin_0_countries.kml"; - const auto file_name = data_path + "ne_110m_admin_0_countries_africa_1.kml"; + //const auto file_name = data_path + "ne_110m_admin_0_countries_africa_1.kml"; + const auto file_name = data_path + "ne_110m_admin_0_countries_equatorial_guinea.kml"; m_countries = Kml::read(file_name); + + // find the country with the least number of nodes + if(0) + { + std::string smallest; + int min_num_nodes = std::numeric_limits::max(); + for (auto& p : m_countries) + { + int num_nodes = p.get_all_nodes_count(); + if (min_num_nodes > num_nodes) + { + min_num_nodes = num_nodes; + smallest = p.name; + } + qDebug() << p.name << " = " << p.get_all_nodes_count(); + } + qDebug() << "smallest = " << smallest; + exit(0); + } + auto dup_nodes = Kml::get_duplicates(m_countries); //auto all_nodes = Kml::generate_ids(m_countries); qDebug() << "*** KML number of polygons = " << @@ -193,7 +214,8 @@ void Main_widget::initializeGL() // SAVING & LOADING ARR if(1) { - Aos::save_arr(m_countries, "C:/work/gsoc2023/ne_110m_admin_0_countries_africa_1.json"); + //Aos::save_arr(m_countries, "C:/work/gsoc2023/ne_110m_admin_0_countries_africa_1.json"); + Aos::save_arr(m_countries, "C:/work/gsoc2023/ne_110m_admin_0_countries_equatorial_guinea.json"); qDebug() << "done saving!"; exit(0); //Aos::save_arr(m_countries, "C:/work/gsoc2023/ne_110m_admin_0_countries.json");