Oregami
Repositories/oxedyne/fe2o3

oxedyne/fe2o3/fe2o3_stds/src/regions.rs

184 KiB, 140 runs

created by r1870400018:914, which is this file's identity for as long as the history lasts, whatever it is later renamed to

download · who wrote it · its history

1use oxedyne_fe2o3_core::{
2 prelude::*,
3 new_enum,
4 rand::Rand,
5};
6use strum::Display;
7
8/// Adapted from https://textlists.info/geography/countries-of-the-world/
9/// See also https://en.wikipedia.org/wiki/ISO_3166-1
10#[derive(Clone, Copy, Debug, Display, Eq, PartialEq)]
11#[repr(usize)]
12pub enum Country {
13 Afghanistan,
14 Albania,
15 Algeria,
16 Andorra,
17 Angola,
18 AntiguaAndBarbuda,
19 Argentina,
20 Armenia,
21 Australia,
22 Austria,
23 Azerbaijan,
24 TheBahamas,
25 Bahrain,
26 Bangladesh,
27 Barbados,
28 Belarus,
29 Belgium,
30 Belize,
31 Benin,
32 Bhutan,
33 Bolivia,
34 BosniaAndHerzegovina,
35 Botswana,
36 Brazil,
37 Brunei,
38 Bulgaria,
39 BurkinaFaso,
40 Burundi,
41 Cambodia,
42 Cameroon,
43 Canada,
44 CapeVerde,
45 CentralAfricanRepublic,
46 Chad,
47 Chile,
48 China,
49 Colombia,
50 Comoros,
51 CostaRica,
52 CotedIvoire,
53 Croatia,
54 Cuba,
55 Cyprus,
56 CzechRepublic,
57 DemocraticRepublicOfTheCongo,
58 DemocraticRepublicOfTimorLeste,
59 Denmark,
60 Djibouti,
61 Dominica,
62 DominicanRepublic,
63 Ecuador,
64 Egypt,
65 ElSalvador,
66 EquatorialGuinea,
67 Eritrea,
68 Estonia,
69 Ethiopia,
70 FederatedStatesOfMicronesia,
71 Fiji,
72 Finland,
73 France,
74 Gabon,
75 TheGambia,
76 Georgia,
77 Germany,
78 Ghana,
79 Greece,
80 Grenada,
81 Guatemala,
82 Guinea,
83 GuineaBissau,
84 Guyana,
85 Haiti,
86 Honduras,
87 Hungary,
88 Iceland,
89 India,
90 Indonesia,
91 Iran,
92 Iraq,
93 Ireland,
94 Israel,
95 Italy,
96 Jamaica,
97 Japan,
98 Jordan,
99 Kazakhstan,
100 Kenya,
101 Kiribati,
102 Kosovo,
103 Kuwait,
104 Kyrgyzstan,
105 Laos,
106 Latvia,
107 Lebanon,
108 Lesotho,
109 Liberia,
110 Libya,
111 Liechtenstein,
112 Lithuania,
113 Luxembourg,
114 Macedonia,
115 Madagascar,
116 Malawi,
117 Malaysia,
118 Maldives,
119 Mali,
120 Malta,
121 MarshallIslands,
122 Mauritania,
123 Mauritius,
124 Mexico,
125 Moldova,
126 Monaco,
127 Mongolia,
128 Montenegro,
129 Morocco,
130 Mozambique,
131 Myanmar,
132 Namibia,
133 Nauru,
134 Nepal,
135 Netherlands,
136 NewZealand,
137 Nicaragua,
138 Niger,
139 Nigeria,
140 NorthKorea,
141 Norway,
142 Oman,
143 Pakistan,
144 Palau,
145 Panama,
146 PapuaNewGuinea,
147 Paraguay,
148 Peru,
149 Philippines,
150 Poland,
151 Portugal,
152 Qatar,
153 RepublicOfTheCongo,
154 Romania,
155 Russia,
156 Rwanda,
157 SaintKittsAndNevis,
158 SaintLucia,
159 SaintVincentAndTheGrenadines,
160 Samoa,
161 SanMarino,
162 SaoTomeAndPrincipe,
163 SaudiArabia,
164 Senegal,
165 Serbia,
166 Seychelles,
167 SierraLeone,
168 Singapore,
169 Slovakia,
170 Slovenia,
171 SolomonIslands,
172 Somalia,
173 SouthAfrica,
174 SouthKorea,
175 SouthSudan,
176 Spain,
177 SriLanka,
178 Sudan,
179 Suriname,
180 Swaziland,
181 Sweden,
182 Switzerland,
183 Syria,
184 Taiwan,
185 Tajikistan,
186 Tanzania,
187 Thailand,
188 Togo,
189 Tonga,
190 TrinidadAndTobago,
191 Tunisia,
192 Turkey,
193 Turkmenistan,
194 Tuvalu,
195 Uganda,
196 Ukraine,
197 UnitedArabEmirates,
198 UnitedKingdom,
199 UnitedStatesOfAmerica,
200 Uruguay,
201 Uzbekistan,
202 Vanuatu,
203 VaticanCity,
204 Venezuela,
205 Vietnam,
206 Yemen,
207 Zambia,
208 Zimbabwe,
209}
210
211new_enum!(Country;
212 Afghanistan,
213 Albania,
214 Algeria,
215 Andorra,
216 Angola,
217 AntiguaAndBarbuda,
218 Argentina,
219 Armenia,
220 Australia,
221 Austria,
222 Azerbaijan,
223 TheBahamas,
224 Bahrain,
225 Bangladesh,
226 Barbados,
227 Belarus,
228 Belgium,
229 Belize,
230 Benin,
231 Bhutan,
232 Bolivia,
233 BosniaAndHerzegovina,
234 Botswana,
235 Brazil,
236 Brunei,
237 Bulgaria,
238 BurkinaFaso,
239 Burundi,
240 Cambodia,
241 Cameroon,
242 Canada,
243 CapeVerde,
244 CentralAfricanRepublic,
245 Chad,
246 Chile,
247 China,
248 Colombia,
249 Comoros,
250 CostaRica,
251 CotedIvoire,
252 Croatia,
253 Cuba,
254 Cyprus,
255 CzechRepublic,
256 DemocraticRepublicOfTheCongo,
257 DemocraticRepublicOfTimorLeste,
258 Denmark,
259 Djibouti,
260 Dominica,
261 DominicanRepublic,
262 Ecuador,
263 Egypt,
264 ElSalvador,
265 EquatorialGuinea,
266 Eritrea,
267 Estonia,
268 Ethiopia,
269 FederatedStatesOfMicronesia,
270 Fiji,
271 Finland,
272 France,
273 Gabon,
274 TheGambia,
275 Georgia,
276 Germany,
277 Ghana,
278 Greece,
279 Grenada,
280 Guatemala,
281 Guinea,
282 GuineaBissau,
283 Guyana,
284 Haiti,
285 Honduras,
286 Hungary,
287 Iceland,
288 India,
289 Indonesia,
290 Iran,
291 Iraq,
292 Ireland,
293 Israel,
294 Italy,
295 Jamaica,
296 Japan,
297 Jordan,
298 Kazakhstan,
299 Kenya,
300 Kiribati,
301 Kosovo,
302 Kuwait,
303 Kyrgyzstan,
304 Laos,
305 Latvia,
306 Lebanon,
307 Lesotho,
308 Liberia,
309 Libya,
310 Liechtenstein,
311 Lithuania,
312 Luxembourg,
313 Macedonia,
314 Madagascar,
315 Malawi,
316 Malaysia,
317 Maldives,
318 Mali,
319 Malta,
320 MarshallIslands,
321 Mauritania,
322 Mauritius,
323 Mexico,
324 Moldova,
325 Monaco,
326 Mongolia,
327 Montenegro,
328 Morocco,
329 Mozambique,
330 Myanmar,
331 Namibia,
332 Nauru,
333 Nepal,
334 Netherlands,
335 NewZealand,
336 Nicaragua,
337 Niger,
338 Nigeria,
339 NorthKorea,
340 Norway,
341 Oman,
342 Pakistan,
343 Palau,
344 Panama,
345 PapuaNewGuinea,
346 Paraguay,
347 Peru,
348 Philippines,
349 Poland,
350 Portugal,
351 Qatar,
352 RepublicOfTheCongo,
353 Romania,
354 Russia,
355 Rwanda,
356 SaintKittsAndNevis,
357 SaintLucia,
358 SaintVincentAndTheGrenadines,
359 Samoa,
360 SanMarino,
361 SaoTomeAndPrincipe,
362 SaudiArabia,
363 Senegal,
364 Serbia,
365 Seychelles,
366 SierraLeone,
367 Singapore,
368 Slovakia,
369 Slovenia,
370 SolomonIslands,
371 Somalia,
372 SouthAfrica,
373 SouthKorea,
374 SouthSudan,
375 Spain,
376 SriLanka,
377 Sudan,
378 Suriname,
379 Swaziland,
380 Sweden,
381 Switzerland,
382 Syria,
383 Taiwan,
384 Tajikistan,
385 Tanzania,
386 Thailand,
387 Togo,
388 Tonga,
389 TrinidadAndTobago,
390 Tunisia,
391 Turkey,
392 Turkmenistan,
393 Tuvalu,
394 Uganda,
395 Ukraine,
396 UnitedArabEmirates,
397 UnitedKingdom,
398 UnitedStatesOfAmerica,
399 Uruguay,
400 Uzbekistan,
401 Vanuatu,
402 VaticanCity,
403 Venezuela,
404 Vietnam,
405 Yemen,
406 Zambia,
407 Zimbabwe,
408);
409
410/// Population data reference year and sources.
411///
412/// All population data in this type is based on:
413/// - Reference Year: 2023
414/// - Primary Sources:
415/// - UN World Population Prospects 2022 (country totals)
416/// - World Bank Urban Population % (2022 data)
417/// - UN World Urbanization Prospects 2018 (city populations)
418/// - National census data where available (2020-2023)
419///
420/// Notes:
421/// - City populations represent metropolitan/urban agglomeration areas
422/// - Rural populations are calculated as (total - sum of urban)
423/// - Areas are approximate and may not sum exactly to country total
424/// - Some small countries use simplified single-region models
425///
426/// IMPORTANT LIMITATIONS:
427/// - Generated coordinates use circular distributions around population centres
428/// - Does NOT respect actual borders, coastlines, or water bodies
429/// - Island nations (e.g., Philippines, Indonesia) will generate many ocean points
430/// - Coastal cities often generate 30-50% of points in water
431/// - Border regions may generate points in neighbouring countries
432/// - For accurate land-only points, post-process with actual GIS boundary data
433impl Country {
434 /// Generates a random location within a country, weighted by population density.
435 ///
436 /// This function returns a latitude and longitude pair that reflects actual
437 /// population distribution, including both urban centres and rural areas.
438 ///
439 /// # Arguments
440 ///
441 /// * `country` - The country to generate a location for.
442 ///
443 /// # Returns
444 ///
445 /// A `LocationPopulationRegion` containing latitude, longitude in decimal degrees and the region name.
446 pub fn random_population_location(&self) -> LocationPopulationRegion {
447 let country_data = self.get_country_population_data();
448
449 // Create weighted distribution based on population.
450 let weights: Vec<f64> = country_data.regions.iter().map(|r| r.population).collect();
451 let total_weight: f64 = weights.iter().sum();
452
453 // Select a region based on population weights.
454 let mut selection_value = Rand::value::<f64>() * total_weight;
455 let mut selected_region = country_data.regions[0].clone();
456
457 for (i, region) in country_data.regions.iter().enumerate() {
458 selection_value -= weights[i];
459 if selection_value <= 0.0 {
460 selected_region = region.clone();
461 break;
462 }
463 }
464
465 // Generate a random point within the selected region.
466 let (latitude, longitude) = selected_region.random_point_in_region();
467
468 LocationPopulationRegion {
469 latitude,
470 longitude,
471 region: selected_region,
472 }
473 }
474
475 /// Returns population data for a given country.
476 ///
477 /// Each country is divided into non-overlapping regions (both urban and rural)
478 /// with accurate population and area data.
479 pub fn get_country_population_data(&self) -> CountryPopulationData {
480 match self {
481 Self::Afghanistan => {
482 // Afghanistan: 40.1M population, 652,860 km² area, ~26% urban.
483 CountryPopulationData::from_regions(vec![
484 PopulationRegion::new(34.5553, 69.2075, 4_600_000.0, 275.0, AreaType::Urban, "Kabul"),
485 PopulationRegion::new(31.6100, 65.7100, 614_000.0, 54.0, AreaType::Urban, "Kandahar"),
486 PopulationRegion::new(36.7050, 67.1100, 548_000.0, 50.0, AreaType::Urban, "Mazar-i-Sharif"),
487 PopulationRegion::new(34.3480, 62.2040, 506_000.0, 45.0, AreaType::Urban, "Herat"),
488 PopulationRegion::new(34.5000, 69.1800, 30_000_000.0, 651_500.0, AreaType::Rural, "Rural Afghanistan"),
489 ], 652_860.0)
490 },
491
492 Self::Albania => {
493 // Albania: 2.8M population, 28,748 km² area, ~63% urban.
494 CountryPopulationData::from_regions(vec![
495 PopulationRegion::new(41.3275, 19.8187, 610_000.0, 42.0, AreaType::Urban, "Tirana"),
496 PopulationRegion::new(40.4587, 19.4901, 140_000.0, 28.0, AreaType::Urban, "Durrës"),
497 PopulationRegion::new(40.7264, 19.5687, 95_000.0, 20.0, AreaType::Urban, "Elbasan"),
498 PopulationRegion::new(41.0, 20.0, 1_100_000.0, 28_600.0, AreaType::Rural, "Rural Albania"),
499 ], 28_748.0)
500 },
501
502 Self::Algeria => {
503 // Algeria: 44.7M population, 2,381,741 km² area, ~74% urban.
504 CountryPopulationData::from_regions(vec![
505 PopulationRegion::new(36.7538, 3.0588, 2_988_000.0, 363.0, AreaType::Urban, "Algiers"),
506 PopulationRegion::new(35.6969, -0.6331, 541_000.0, 64.0, AreaType::Urban, "Oran"),
507 PopulationRegion::new(36.3650, 6.6147, 507_000.0, 80.0, AreaType::Urban, "Constantine"),
508 PopulationRegion::new(36.1900, 5.4100, 415_000.0, 127.0, AreaType::Urban, "Sétif"),
509 PopulationRegion::new(35.4000, 8.1200, 380_000.0, 40.0, AreaType::Urban, "Biskra"),
510 PopulationRegion::new(35.4028, 0.1320, 335_000.0, 85.0, AreaType::Urban, "Tiaret"),
511 PopulationRegion::new(36.7525, 5.0556, 320_000.0, 75.0, AreaType::Urban, "Béjaïa"),
512 PopulationRegion::new(36.9050, 7.7633, 295_000.0, 68.0, AreaType::Urban, "Annaba"),
513 PopulationRegion::new(35.3714, 1.3225, 280_000.0, 62.0, AreaType::Urban, "Tlemcen"),
514 PopulationRegion::new(28.0, 3.0, 10_600_000.0, 2_380_000.0, AreaType::Rural, "Rural Algeria"),
515 ], 2_381_741.0)
516 },
517
518 Self::Andorra => {
519 // Andorra: 79k population, 468 km² area, ~88% urban.
520 CountryPopulationData::from_regions(vec![
521 PopulationRegion::new(42.5063, 1.5218, 23_000.0, 12.0, AreaType::Urban, "Andorra la Vella"),
522 PopulationRegion::new(42.5, 1.5, 56_000.0, 456.0, AreaType::Rural, "Rural Andorra"),
523 ], 468.0)
524 },
525
526 Self::Angola => {
527 // Angola: 34.5M population, 1,246,700 km² area, ~67% urban.
528 CountryPopulationData::from_regions(vec![
529 PopulationRegion::new(-8.8390, 13.2894, 8_330_000.0, 116.0, AreaType::Urban, "Luanda"),
530 PopulationRegion::new(-12.5700, 13.4100, 810_000.0, 40.0, AreaType::Urban, "Lubango"),
531 PopulationRegion::new(-11.2000, 13.5400, 778_000.0, 35.0, AreaType::Urban, "Huambo"),
532 PopulationRegion::new(-5.9200, 12.4100, 550_000.0, 30.0, AreaType::Urban, "Cabinda"),
533 PopulationRegion::new(-11.0, 16.0, 11_400_000.0, 1_245_000.0, AreaType::Rural, "Rural Angola"),
534 ], 1_246_700.0)
535 },
536
537 Self::AntiguaAndBarbuda => {
538 // Antigua and Barbuda: 98k population, 442 km² area, ~24% urban.
539 CountryPopulationData::from_regions(vec![
540 PopulationRegion::new(17.1175, -61.8456, 24_000.0, 10.0, AreaType::Urban, "St. John's"),
541 PopulationRegion::new(17.1333, -61.7833, 11_000.0, 5.0, AreaType::Urban, "All Saints"),
542 PopulationRegion::new(17.0667, -61.8667, 5_000.0, 3.0, AreaType::Urban, "Liberta"),
543 PopulationRegion::new(17.1, -61.8, 36_000.0, 280.0, AreaType::Rural, "Rural Antigua"),
544 PopulationRegion::new(17.6333, -62.0167, 22_000.0, 144.0, AreaType::Rural, "Rural Barbuda"),
545 ], 442.0)
546 },
547
548 Self::Argentina => {
549 // Argentina: 45.8M population, 2,780,400 km² area, ~92% urban.
550 CountryPopulationData::from_regions(vec![
551 PopulationRegion::new(-34.6037, -58.3816, 15_370_000.0, 203.0, AreaType::Urban, "Buenos Aires Metro"),
552 PopulationRegion::new(-31.4201, -64.1888, 1_577_000.0, 576.0, AreaType::Urban, "Córdoba"),
553 PopulationRegion::new(-32.8908, -68.8272, 1_200_000.0, 57.0, AreaType::Urban, "Mendoza"),
554 PopulationRegion::new(-26.8083, -65.2176, 1_014_000.0, 91.0, AreaType::Urban, "Tucumán"),
555 PopulationRegion::new(-34.9205, -57.9536, 937_000.0, 25.0, AreaType::Urban, "La Plata"),
556 PopulationRegion::new(-24.7859, -65.4117, 792_000.0, 60.0, AreaType::Urban, "Salta"),
557 PopulationRegion::new(-32.9468, -60.6393, 743_000.0, 117.0, AreaType::Urban, "Rosario"),
558 PopulationRegion::new(-34.5711, -58.4232, 715_000.0, 52.0, AreaType::Urban, "San Justo"),
559 PopulationRegion::new(-27.7834, -64.2642, 554_000.0, 44.0, AreaType::Urban, "Santiago del Estero"),
560 PopulationRegion::new(-38.0, -63.0, 1_750_000.0, 2_778_000.0, AreaType::Rural, "Rural Argentina"),
561 ], 2_780_400.0)
562 },
563
564 Self::Armenia => {
565 // Armenia: 3.0M population, 29,743 km² area, ~63% urban.
566 CountryPopulationData::from_regions(vec![
567 PopulationRegion::new(40.1792, 44.4991, 1_090_000.0, 227.0, AreaType::Urban, "Yerevan"),
568 PopulationRegion::new(40.7899, 43.8473, 123_000.0, 25.0, AreaType::Urban, "Gyumri"),
569 PopulationRegion::new(40.1833, 44.5167, 74_000.0, 18.0, AreaType::Urban, "Vanadzor"),
570 PopulationRegion::new(40.5, 44.5, 1_100_000.0, 29_400.0, AreaType::Rural, "Rural Armenia"),
571 ], 29_743.0)
572 },
573
574 Self::Australia => {
575 // Australia: 25.9M population, 7,692,024 km² area, ~86% urban.
576 CountryPopulationData::from_regions(vec![
577 PopulationRegion::new(-33.8688, 151.2093, 5_367_000.0, 12_368.0, AreaType::Urban, "Sydney Metro"),
578 PopulationRegion::new(-37.8136, 144.9631, 5_078_000.0, 9_992.0, AreaType::Urban, "Melbourne Metro"),
579 PopulationRegion::new(-27.4698, 153.0251, 2_568_000.0, 15_842.0, AreaType::Urban, "Brisbane Metro"),
580 PopulationRegion::new(-31.9505, 115.8605, 2_118_000.0, 6_418.0, AreaType::Urban, "Perth Metro"),
581 PopulationRegion::new(-34.9285, 138.6007, 1_376_000.0, 3_258.0, AreaType::Urban, "Adelaide Metro"),
582 PopulationRegion::new(-28.0167, 153.4000, 693_000.0, 1_353.0, AreaType::Urban, "Gold Coast-Tweed"),
583 PopulationRegion::new(-32.9283, 151.7817, 497_000.0, 2_334.0, AreaType::Urban, "Newcastle-Maitland"),
584 PopulationRegion::new(-35.2809, 149.1300, 462_000.0, 814.0, AreaType::Urban, "Canberra"),
585 PopulationRegion::new(-30.0, 140.0, 3_600_000.0, 7_640_000.0, AreaType::Rural, "Rural Australia"),
586 ], 7_692_024.0)
587 },
588
589 Self::Austria => {
590 // Austria: 9.0M population, 83,879 km² area, ~59% urban.
591 CountryPopulationData::from_regions(vec![
592 PopulationRegion::new(48.2082, 16.3738, 2_002_000.0, 414.0, AreaType::Urban, "Vienna"),
593 PopulationRegion::new(47.0707, 15.4395, 295_000.0, 128.0, AreaType::Urban, "Graz"),
594 PopulationRegion::new(47.2692, 11.4041, 133_000.0, 105.0, AreaType::Urban, "Innsbruck"),
595 PopulationRegion::new(47.8095, 13.0550, 157_000.0, 66.0, AreaType::Urban, "Salzburg"),
596 PopulationRegion::new(48.3069, 14.2858, 210_000.0, 96.0, AreaType::Urban, "Linz"),
597 PopulationRegion::new(47.5, 13.5, 3_700_000.0, 83_000.0, AreaType::Rural, "Rural Austria"),
598 ], 83_879.0)
599 },
600
601 Self::Azerbaijan => {
602 // Azerbaijan: 10.2M population, 86,600 km² area, ~57% urban.
603 CountryPopulationData::from_regions(vec![
604 PopulationRegion::new(40.4093, 49.8671, 2_374_000.0, 2_140.0, AreaType::Urban, "Baku"),
605 PopulationRegion::new(40.6828, 46.3606, 337_000.0, 110.0, AreaType::Urban, "Ganja"),
606 PopulationRegion::new(40.5893, 48.8315, 218_000.0, 95.0, AreaType::Urban, "Sumqayit"),
607 PopulationRegion::new(40.5, 48.0, 4_400_000.0, 84_000.0, AreaType::Rural, "Rural Azerbaijan"),
608 ], 86_600.0)
609 },
610
611 Self::TheBahamas => {
612 // The Bahamas: 397k population, 13,943 km² area, ~83% urban.
613 CountryPopulationData::from_regions(vec![
614 PopulationRegion::new(25.0480, -77.3554, 280_000.0, 207.0, AreaType::Urban, "Nassau"),
615 PopulationRegion::new(26.5333, -78.7000, 19_000.0, 23.0, AreaType::Urban, "Freeport"),
616 PopulationRegion::new(23.1085, -75.7619, 11_000.0, 15.0, AreaType::Urban, "George Town"),
617 PopulationRegion::new(24.9000, -76.1833, 9_000.0, 12.0, AreaType::Urban, "Cooper's Town"),
618 PopulationRegion::new(26.6833, -77.4000, 7_000.0, 10.0, AreaType::Urban, "Marsh Harbour"),
619 PopulationRegion::new(25.0, -77.5, 41_000.0, 13_676.0, AreaType::Rural, "Rural Bahamas"),
620 ], 13_943.0)
621 },
622
623 Self::Bahrain => {
624 // Bahrain: 1.7M population, 785 km² area, ~89% urban.
625 CountryPopulationData::from_regions(vec![
626 PopulationRegion::new(26.2285, 50.5860, 635_000.0, 30.0, AreaType::Urban, "Manama"),
627 PopulationRegion::new(26.1418, 50.5579, 261_000.0, 15.0, AreaType::Urban, "Riffa"),
628 PopulationRegion::new(26.2361, 50.5481, 216_000.0, 12.0, AreaType::Urban, "Muharraq"),
629 PopulationRegion::new(26.1, 50.6, 188_000.0, 728.0, AreaType::Rural, "Rural Bahrain"),
630 ], 785.0)
631 },
632
633 Self::Bangladesh => {
634 // Bangladesh: 169.4M population, 147,630 km² area, ~39% urban.
635 CountryPopulationData::from_regions(vec![
636 PopulationRegion::new(23.8103, 90.4125, 21_741_000.0, 306.0, AreaType::Urban, "Dhaka"),
637 PopulationRegion::new(22.3569, 91.7832, 5_253_000.0, 168.0, AreaType::Urban, "Chittagong"),
638 PopulationRegion::new(24.3636, 88.6241, 2_280_000.0, 65.0, AreaType::Urban, "Khulna"),
639 PopulationRegion::new(24.8465, 89.3773, 907_000.0, 25.0, AreaType::Urban, "Rajshahi"),
640 PopulationRegion::new(23.4607, 91.1809, 877_000.0, 20.0, AreaType::Urban, "Sylhet"),
641 PopulationRegion::new(25.7439, 89.2752, 774_000.0, 18.0, AreaType::Urban, "Rangpur"),
642 PopulationRegion::new(22.8456, 89.5403, 654_000.0, 15.0, AreaType::Urban, "Barisal"),
643 PopulationRegion::new(24.7471, 90.4203, 532_000.0, 12.0, AreaType::Urban, "Mymensingh"),
644 PopulationRegion::new(22.7010, 90.3535, 466_000.0, 10.0, AreaType::Urban, "Jessore"),
645 PopulationRegion::new(24.0, 90.0, 99_900_000.0, 147_000.0, AreaType::Rural, "Rural Bangladesh"),
646 ], 147_630.0)
647 },
648
649 Self::Barbados => {
650 // Barbados: 288k population, 439 km² area, ~31% urban.
651 CountryPopulationData::from_regions(vec![
652 PopulationRegion::new(13.0969, -59.6145, 90_000.0, 39.0, AreaType::Urban, "Bridgetown"),
653 PopulationRegion::new(13.1, -59.6, 198_000.0, 400.0, AreaType::Rural, "Rural Barbados"),
654 ], 439.0)
655 },
656
657 Self::Belarus => {
658 // Belarus: 9.3M population, 207,600 km² area, ~79% urban.
659 CountryPopulationData::from_regions(vec![
660 PopulationRegion::new(53.9006, 27.5590, 2_039_000.0, 348.0, AreaType::Urban, "Minsk"),
661 PopulationRegion::new(52.0975, 23.6877, 368_000.0, 67.0, AreaType::Urban, "Brest"),
662 PopulationRegion::new(52.4345, 30.9754, 359_000.0, 90.0, AreaType::Urban, "Gomel"),
663 PopulationRegion::new(55.1904, 30.2049, 270_000.0, 40.0, AreaType::Urban, "Vitebsk"),
664 PopulationRegion::new(53.6693, 23.8131, 231_000.0, 65.0, AreaType::Urban, "Grodno"),
665 PopulationRegion::new(53.5, 28.0, 1_950_000.0, 207_000.0, AreaType::Rural, "Rural Belarus"),
666 ], 207_600.0)
667 },
668
669 Self::Belgium => {
670 // Belgium: 11.6M population, 30,528 km² area, ~98% urban.
671 CountryPopulationData::from_regions(vec![
672 PopulationRegion::new(50.8503, 4.3517, 2_110_000.0, 161.0, AreaType::Urban, "Brussels Metro"),
673 PopulationRegion::new(51.2194, 4.4025, 1_050_000.0, 204.0, AreaType::Urban, "Antwerp"),
674 PopulationRegion::new(51.0543, 3.7174, 600_000.0, 156.0, AreaType::Urban, "Ghent"),
675 PopulationRegion::new(50.6292, 5.5797, 750_000.0, 862.0, AreaType::Urban, "Liège"),
676 PopulationRegion::new(50.4669, 4.8647, 500_000.0, 194.0, AreaType::Urban, "Charleroi"),
677 PopulationRegion::new(50.5, 4.5, 240_000.0, 29_000.0, AreaType::Rural, "Rural Belgium"),
678 ], 30_528.0)
679 },
680
681 Self::Belize => {
682 // Belize: 412k population, 22,966 km² area, ~46% urban.
683 CountryPopulationData::from_regions(vec![
684 PopulationRegion::new(17.4995, -88.1884, 75_000.0, 35.0, AreaType::Urban, "Belize City"),
685 PopulationRegion::new(17.2514, -88.7590, 20_000.0, 12.0, AreaType::Urban, "Belmopan"),
686 PopulationRegion::new(17.5, -88.5, 222_000.0, 22_900.0, AreaType::Rural, "Rural Belize"),
687 ], 22_966.0)
688 },
689
690 Self::Benin => {
691 // Benin: 12.5M population, 114,763 km² area, ~48% urban.
692 CountryPopulationData::from_regions(vec![
693 PopulationRegion::new(6.3654, 2.4183, 761_000.0, 79.0, AreaType::Urban, "Cotonou"),
694 PopulationRegion::new(6.4968, 2.6288, 492_000.0, 52.0, AreaType::Urban, "Porto-Novo"),
695 PopulationRegion::new(9.3419, 2.6286, 287_000.0, 40.0, AreaType::Urban, "Parakou"),
696 PopulationRegion::new(7.0, 2.0, 6_500_000.0, 114_600.0, AreaType::Rural, "Rural Benin"),
697 ], 114_763.0)
698 },
699
700 Self::Bhutan => {
701 // Bhutan: 777k population, 38,394 km² area, ~42% urban.
702 CountryPopulationData::from_regions(vec![
703 PopulationRegion::new(27.4728, 89.6393, 115_000.0, 26.0, AreaType::Urban, "Thimphu"),
704 PopulationRegion::new(27.2515, 91.5264, 19_000.0, 18.0, AreaType::Urban, "Samdrup Jongkhar"),
705 PopulationRegion::new(27.5, 90.0, 450_000.0, 38_350.0, AreaType::Rural, "Rural Bhutan"),
706 ], 38_394.0)
707 },
708
709 Self::Bolivia => {
710 // Bolivia: 11.8M population, 1,098,581 km² area, ~70% urban.
711 CountryPopulationData::from_regions(vec![
712 PopulationRegion::new(-17.8146, -63.1561, 1_916_000.0, 469.0, AreaType::Urban, "Santa Cruz"),
713 PopulationRegion::new(-16.4897, -68.1193, 1_835_000.0, 133.0, AreaType::Urban, "La Paz"),
714 PopulationRegion::new(-17.3935, -66.1570, 1_385_000.0, 391.0, AreaType::Urban, "Cochabamba"),
715 PopulationRegion::new(-19.5836, -65.7531, 291_000.0, 37.0, AreaType::Urban, "Sucre"),
716 PopulationRegion::new(-17.0, -65.0, 3_500_000.0, 1_097_000.0, AreaType::Rural, "Rural Bolivia"),
717 ], 1_098_581.0)
718 },
719
720 Self::BosniaAndHerzegovina => {
721 // Bosnia and Herzegovina: 3.3M population, 51,197 km² area, ~49% urban.
722 CountryPopulationData::from_regions(vec![
723 PopulationRegion::new(43.8476, 18.3564, 420_000.0, 142.0, AreaType::Urban, "Sarajevo"),
724 PopulationRegion::new(44.7722, 17.1911, 185_000.0, 115.0, AreaType::Urban, "Banja Luka"),
725 PopulationRegion::new(43.3438, 17.8078, 115_000.0, 30.0, AreaType::Urban, "Mostar"),
726 PopulationRegion::new(44.5377, 18.6709, 83_000.0, 25.0, AreaType::Urban, "Tuzla"),
727 PopulationRegion::new(44.0, 18.0, 1_680_000.0, 50_900.0, AreaType::Rural, "Rural Bosnia"),
728 ], 51_197.0)
729 },
730
731 Self::Botswana => {
732 // Botswana: 2.4M population, 581,730 km² area, ~71% urban.
733 CountryPopulationData::from_regions(vec![
734 PopulationRegion::new(-24.6537, 25.9065, 288_000.0, 169.0, AreaType::Urban, "Gaborone"),
735 PopulationRegion::new(-21.1661, 27.5146, 101_000.0, 79.0, AreaType::Urban, "Francistown"),
736 PopulationRegion::new(-20.4674, 23.1681, 91_000.0, 31.0, AreaType::Urban, "Maun"),
737 PopulationRegion::new(-22.0, 24.0, 690_000.0, 581_400.0, AreaType::Rural, "Rural Botswana"),
738 ], 581_730.0)
739 },
740
741 Self::Brazil => {
742 // Brazil: 214.3M population, 8,515,767 km² area, ~87% urban.
743 CountryPopulationData::from_regions(vec![
744 PopulationRegion::new(-23.5505, -46.6333, 22_430_000.0, 7_947.0, AreaType::Urban, "São Paulo Metro"),
745 PopulationRegion::new(-22.9068, -43.1729, 13_074_000.0, 1_200.0, AreaType::Urban, "Rio de Janeiro Metro"),
746 PopulationRegion::new(-19.9167, -43.9345, 6_006_000.0, 331.0, AreaType::Urban, "Belo Horizonte Metro"),
747 PopulationRegion::new(-30.0346, -51.2177, 4_285_000.0, 497.0, AreaType::Urban, "Porto Alegre Metro"),
748 PopulationRegion::new(-15.7975, -47.8919, 4_728_000.0, 5_802.0, AreaType::Urban, "Brasília Metro"),
749 PopulationRegion::new(-8.0476, -34.8770, 4_175_000.0, 218.0, AreaType::Urban, "Recife Metro"),
750 PopulationRegion::new(-3.7172, -38.5433, 4_074_000.0, 314.0, AreaType::Urban, "Fortaleza Metro"),
751 PopulationRegion::new(-12.9714, -38.5014, 3_984_000.0, 693.0, AreaType::Urban, "Salvador Metro"),
752 PopulationRegion::new(-25.4244, -49.2654, 3_733_000.0, 435.0, AreaType::Urban, "Curitiba Metro"),
753 PopulationRegion::new(-23.9609, -46.3332, 3_572_000.0, 2_704.0, AreaType::Urban, "Campinas Metro"),
754 PopulationRegion::new(-3.1019, -60.0250, 2_676_000.0, 377.0, AreaType::Urban, "Manaus"),
755 PopulationRegion::new(-1.4558, -48.4902, 2_491_000.0, 346.0, AreaType::Urban, "Belém"),
756 PopulationRegion::new(-10.9472, -37.0731, 2_338_000.0, 163.0, AreaType::Urban, "Aracaju"),
757 PopulationRegion::new(-15.0, -55.0, 24_500_000.0, 8_500_000.0, AreaType::Rural, "Rural Brazil"),
758 ], 8_515_767.0)
759 },
760
761 Self::Brunei => {
762 // Brunei: 441k population, 5,765 km² area, ~78% urban.
763 CountryPopulationData::from_regions(vec![
764 PopulationRegion::new(4.9031, 114.9398, 241_000.0, 100.0, AreaType::Urban, "Bandar Seri Begawan"),
765 PopulationRegion::new(4.5828, 114.1595, 31_000.0, 12.0, AreaType::Urban, "Kuala Belait"),
766 PopulationRegion::new(4.6, 114.5, 97_000.0, 5_650.0, AreaType::Rural, "Rural Brunei"),
767 ], 5_765.0)
768 },
769
770 Self::Bulgaria => {
771 // Bulgaria: 6.9M population, 110,879 km² area, ~76% urban.
772 CountryPopulationData::from_regions(vec![
773 PopulationRegion::new(42.6977, 23.3219, 1_330_000.0, 492.0, AreaType::Urban, "Sofia"),
774 PopulationRegion::new(42.1354, 24.7453, 367_000.0, 102.0, AreaType::Urban, "Plovdiv"),
775 PopulationRegion::new(43.2141, 27.9147, 336_000.0, 205.0, AreaType::Urban, "Varna"),
776 PopulationRegion::new(43.0757, 25.6172, 185_000.0, 82.0, AreaType::Urban, "Ruse"),
777 PopulationRegion::new(42.5, 25.0, 1_660_000.0, 110_000.0, AreaType::Rural, "Rural Bulgaria"),
778 ], 110_879.0)
779 },
780
781 Self::BurkinaFaso => {
782 // Burkina Faso: 21.5M population, 274,222 km² area, ~31% urban.
783 CountryPopulationData::from_regions(vec![
784 PopulationRegion::new(12.3681, -1.5275, 2_780_000.0, 219.0, AreaType::Urban, "Ouagadougou"),
785 PopulationRegion::new(11.1771, -4.2964, 904_000.0, 136.0, AreaType::Urban, "Bobo-Dioulasso"),
786 PopulationRegion::new(12.0823, -1.6715, 190_000.0, 40.0, AreaType::Urban, "Koudougou"),
787 PopulationRegion::new(12.5, -2.0, 14_800_000.0, 273_800.0, AreaType::Rural, "Rural Burkina Faso"),
788 ], 274_222.0)
789 },
790
791 Self::Burundi => {
792 // Burundi: 12.3M population, 27,834 km² area, ~14% urban.
793 CountryPopulationData::from_regions(vec![
794 PopulationRegion::new(-3.3822, 29.3644, 1_100_000.0, 87.0, AreaType::Urban, "Bujumbura"),
795 PopulationRegion::new(-3.3731, 29.9246, 123_000.0, 32.0, AreaType::Urban, "Gitega"),
796 PopulationRegion::new(-3.5, 29.5, 10_600_000.0, 27_700.0, AreaType::Rural, "Rural Burundi"),
797 ], 27_834.0)
798 },
799
800 Self::Cambodia => {
801 // Cambodia: 17.0M population, 181,035 km² area, ~24% urban.
802 CountryPopulationData::from_regions(vec![
803 PopulationRegion::new(11.5625, 104.9160, 2_282_000.0, 679.0, AreaType::Urban, "Phnom Penh"),
804 PopulationRegion::new(13.0957, 103.1968, 190_000.0, 30.0, AreaType::Urban, "Battambang"),
805 PopulationRegion::new(13.3622, 103.8597, 189_000.0, 25.0, AreaType::Urban, "Siem Reap"),
806 PopulationRegion::new(11.5, 104.5, 12_900_000.0, 180_300.0, AreaType::Rural, "Rural Cambodia"),
807 ], 181_035.0)
808 },
809
810 Self::Cameroon => {
811 // Cameroon: 27.2M population, 475,442 km² area, ~58% urban.
812 CountryPopulationData::from_regions(vec![
813 PopulationRegion::new(3.8480, 11.5021, 3_976_000.0, 300.0, AreaType::Urban, "Yaoundé"),
814 PopulationRegion::new(4.0577, 9.7043, 3_529_000.0, 210.0, AreaType::Urban, "Douala"),
815 PopulationRegion::new(5.9597, 10.1458, 546_000.0, 110.0, AreaType::Urban, "Bamenda"),
816 PopulationRegion::new(10.5956, 14.3159, 393_000.0, 100.0, AreaType::Urban, "Maroua"),
817 PopulationRegion::new(6.0, 12.0, 11_500_000.0, 474_800.0, AreaType::Rural, "Rural Cameroon"),
818 ], 475_442.0)
819 },
820
821 Self::Canada => {
822 // Canada: 38.2M population, 9,984,670 km² area, ~82% urban.
823 CountryPopulationData::from_regions(vec![
824 PopulationRegion::new(43.6532, -79.3832, 6_418_000.0, 7_124.0, AreaType::Urban, "Toronto Metro"),
825 PopulationRegion::new(45.5017, -73.5673, 4_291_000.0, 4_259.0, AreaType::Urban, "Montreal Metro"),
826 PopulationRegion::new(49.2827, -123.1207, 2_737_000.0, 2_883.0, AreaType::Urban, "Vancouver Metro"),
827 PopulationRegion::new(51.0447, -114.0719, 1_481_000.0, 5_108.0, AreaType::Urban, "Calgary Metro"),
828 PopulationRegion::new(53.5461, -113.4938, 1_418_000.0, 9_438.0, AreaType::Urban, "Edmonton Metro"),
829 PopulationRegion::new(45.4215, -75.6972, 1_393_000.0, 6_767.0, AreaType::Urban, "Ottawa-Gatineau"),
830 PopulationRegion::new(49.8951, -97.1384, 834_000.0, 5_306.0, AreaType::Urban, "Winnipeg Metro"),
831 PopulationRegion::new(46.8139, -71.2080, 812_000.0, 3_408.0, AreaType::Urban, "Quebec City Metro"),
832 PopulationRegion::new(43.2607, -79.9194, 785_000.0, 1_371.0, AreaType::Urban, "Hamilton"),
833 PopulationRegion::new(43.0131, -81.1992, 543_000.0, 2_882.0, AreaType::Urban, "London"),
834 PopulationRegion::new(50.0, -95.0, 5_700_000.0, 9_940_000.0, AreaType::Rural, "Rural Canada"),
835 ], 9_984_670.0)
836 },
837
838 Self::CapeVerde => {
839 // Cape Verde: 563k population, 4,033 km² area, ~67% urban.
840 CountryPopulationData::from_regions(vec![
841 PopulationRegion::new(14.9055, -23.5087, 160_000.0, 103.0, AreaType::Urban, "Praia"),
842 PopulationRegion::new(16.8880, -24.9956, 76_000.0, 29.0, AreaType::Urban, "Mindelo"),
843 PopulationRegion::new(15.0833, -23.1167, 14_000.0, 8.0, AreaType::Urban, "Assomada"),
844 PopulationRegion::new(16.1667, -22.9167, 12_000.0, 7.0, AreaType::Urban, "Porto Novo"),
845 PopulationRegion::new(15.1, -23.6, 160_000.0, 3_886.0, AreaType::Rural, "Rural Cape Verde"),
846 ], 4_033.0)
847 },
848
849 Self::CentralAfricanRepublic => {
850 // Central African Republic: 4.9M population, 622,984 km² area, ~42% urban.
851 CountryPopulationData::from_regions(vec![
852 PopulationRegion::new(4.3947, 18.5582, 903_000.0, 67.0, AreaType::Urban, "Bangui"),
853 PopulationRegion::new(7.2627, 21.0059, 46_000.0, 28.0, AreaType::Urban, "Bimbo"),
854 PopulationRegion::new(6.5, 20.0, 2_900_000.0, 622_900.0, AreaType::Rural, "Rural CAR"),
855 ], 622_984.0)
856 },
857
858 Self::Chad => {
859 // Chad: 17.0M population, 1,284,000 km² area, ~23% urban.
860 CountryPopulationData::from_regions(vec![
861 PopulationRegion::new(12.1348, 15.0557, 1_533_000.0, 104.0, AreaType::Urban, "N'Djamena"),
862 PopulationRegion::new(8.5697, 16.0933, 135_000.0, 30.0, AreaType::Urban, "Moundou"),
863 PopulationRegion::new(9.3182, 16.0801, 110_000.0, 25.0, AreaType::Urban, "Sarh"),
864 PopulationRegion::new(15.0, 19.0, 13_100_000.0, 1_283_800.0, AreaType::Rural, "Rural Chad"),
865 ], 1_284_000.0)
866 },
867
868 Self::Chile => {
869 // Chile: 19.2M population, 756,102 km² area, ~88% urban.
870 CountryPopulationData::from_regions(vec![
871 PopulationRegion::new(-33.4489, -70.6693, 7_412_000.0, 641.0, AreaType::Urban, "Santiago Metro"),
872 PopulationRegion::new(-33.0472, -71.6127, 1_035_000.0, 300.0, AreaType::Urban, "Valparaíso Metro"),
873 PopulationRegion::new(-36.8201, -73.0444, 1_044_000.0, 221.0, AreaType::Urban, "Concepción Metro"),
874 PopulationRegion::new(-23.6509, -70.3975, 607_000.0, 30.0, AreaType::Urban, "Antofagasta"),
875 PopulationRegion::new(-20.2208, -70.1431, 384_000.0, 20.0, AreaType::Urban, "Iquique"),
876 PopulationRegion::new(-41.4693, -72.9424, 317_000.0, 25.0, AreaType::Urban, "Puerto Montt"),
877 PopulationRegion::new(-39.8196, -73.2452, 294_000.0, 22.0, AreaType::Urban, "Valdivia"),
878 PopulationRegion::new(-18.4783, -70.3126, 287_000.0, 15.0, AreaType::Urban, "Arica"),
879 PopulationRegion::new(-38.7369, -72.6018, 278_000.0, 20.0, AreaType::Urban, "Temuco"),
880 PopulationRegion::new(-29.9045, -71.2489, 251_000.0, 18.0, AreaType::Urban, "La Serena"),
881 PopulationRegion::new(-35.0, -71.0, 1_200_000.0, 754_900.0, AreaType::Rural, "Rural Chile"),
882 ], 756_102.0)
883 },
884
885 Self::China => {
886 // China: 1,412M population, 9,596,961 km² area, ~63% urban.
887 CountryPopulationData::from_regions(vec![
888 PopulationRegion::new(31.2304, 121.4737, 27_796_000.0, 6_341.0, AreaType::Urban, "Shanghai"),
889 PopulationRegion::new(39.9042, 116.4074, 21_893_000.0, 16_411.0, AreaType::Urban, "Beijing"),
890 PopulationRegion::new(22.5431, 114.0579, 18_633_000.0, 3_980.0, AreaType::Urban, "Shenzhen-HK"),
891 PopulationRegion::new(23.1291, 113.2644, 18_677_000.0, 7_434.0, AreaType::Urban, "Guangzhou"),
892 PopulationRegion::new(30.5728, 104.0668, 16_045_000.0, 14_378.0, AreaType::Urban, "Chengdu"),
893 PopulationRegion::new(22.8170, 108.3665, 14_545_000.0, 7_263.0, AreaType::Urban, "Chongqing Urban"),
894 PopulationRegion::new(31.8639, 117.2808, 13_255_000.0, 11_445.0, AreaType::Urban, "Tianjin"),
895 PopulationRegion::new(30.2741, 120.1551, 11_936_000.0, 16_596.0, AreaType::Urban, "Hangzhou"),
896 PopulationRegion::new(30.5928, 114.3055, 11_895_000.0, 8_569.0, AreaType::Urban, "Wuhan"),
897 PopulationRegion::new(34.2667, 108.8833, 10_680_000.0, 10_096.0, AreaType::Urban, "Xi'an"),
898 PopulationRegion::new(32.0603, 118.7969, 9_204_000.0, 6_587.0, AreaType::Urban, "Nanjing"),
899 PopulationRegion::new(26.0745, 119.2965, 8_346_000.0, 12_155.0, AreaType::Urban, "Fuzhou"),
900 PopulationRegion::new(38.9122, 121.6021, 7_903_000.0, 13_238.0, AreaType::Urban, "Dalian"),
901 PopulationRegion::new(41.7923, 123.4328, 7_441_000.0, 12_948.0, AreaType::Urban, "Shenyang"),
902 PopulationRegion::new(36.6512, 117.1201, 6_814_000.0, 7_753.0, AreaType::Urban, "Jinan"),
903 PopulationRegion::new(25.0389, 102.7183, 6_663_000.0, 21_473.0, AreaType::Urban, "Kunming"),
904 PopulationRegion::new(43.8171, 125.3235, 5_965_000.0, 32_347.0, AreaType::Urban, "Changchun"),
905 PopulationRegion::new(45.8038, 126.5350, 5_353_000.0, 53_068.0, AreaType::Urban, "Harbin"),
906 PopulationRegion::new(29.5630, 106.5516, 5_104_000.0, 82_403.0, AreaType::Urban, "Chongqing Metro"),
907 PopulationRegion::new(35.0, 105.0, 440_000_000.0, 9_500_000.0, AreaType::Rural, "Rural China"),
908 ], 9_596_961.0)
909 },
910
911 Self::Colombia => {
912 // Colombia: 51.5M population, 1,141,748 km² area, ~81% urban.
913 CountryPopulationData::from_regions(vec![
914 PopulationRegion::new(4.7110, -74.0721, 11_285_000.0, 1_775.0, AreaType::Urban, "Bogotá Metro"),
915 PopulationRegion::new(6.2442, -75.5812, 4_103_000.0, 1_152.0, AreaType::Urban, "Medellín Metro"),
916 PopulationRegion::new(3.4516, -76.5320, 2_882_000.0, 564.0, AreaType::Urban, "Cali Metro"),
917 PopulationRegion::new(10.9685, -74.7813, 2_046_000.0, 154.0, AreaType::Urban, "Barranquilla Metro"),
918 PopulationRegion::new(11.2422, -74.2017, 1_358_000.0, 55.0, AreaType::Urban, "Cartagena"),
919 PopulationRegion::new(7.8836, -72.4967, 714_000.0, 143.0, AreaType::Urban, "Cúcuta"),
920 PopulationRegion::new(7.1254, -73.1198, 681_000.0, 30.0, AreaType::Urban, "Bucaramanga"),
921 PopulationRegion::new(8.7549, -75.8261, 557_000.0, 90.0, AreaType::Urban, "Montería"),
922 PopulationRegion::new(5.0689, -75.5174, 539_000.0, 25.0, AreaType::Urban, "Manizales"),
923 PopulationRegion::new(4.0, -72.0, 7_300_000.0, 1_138_000.0, AreaType::Rural, "Rural Colombia"),
924 ], 1_141_748.0)
925 },
926
927 Self::Comoros => {
928 // Comoros: 889k population, 1,861 km² area, ~29% urban.
929 CountryPopulationData::from_regions(vec![
930 PopulationRegion::new(-11.7100, 43.2400, 62_000.0, 30.0, AreaType::Urban, "Moroni"),
931 PopulationRegion::new(-12.2800, 44.4500, 25_000.0, 15.0, AreaType::Urban, "Mutsamudu"),
932 PopulationRegion::new(-12.1667, 44.2667, 21_000.0, 12.0, AreaType::Urban, "Fomboni"),
933 PopulationRegion::new(-11.4667, 43.3333, 18_000.0, 10.0, AreaType::Urban, "Domoni"),
934 PopulationRegion::new(-11.8, 43.3, 591_000.0, 1_794.0, AreaType::Rural, "Rural Comoros"),
935 ], 1_861.0)
936 },
937
938 Self::CostaRica => {
939 // Costa Rica: 5.2M population, 51,100 km² area, ~81% urban.
940 CountryPopulationData::from_regions(vec![
941 PopulationRegion::new(9.9281, -84.0907, 2_158_000.0, 2_044.0, AreaType::Urban, "San José Metro"),
942 PopulationRegion::new(10.0154, -84.2142, 356_000.0, 42.0, AreaType::Urban, "Alajuela"),
943 PopulationRegion::new(9.8661, -83.9211, 167_000.0, 31.0, AreaType::Urban, "Cartago"),
944 PopulationRegion::new(10.0, -84.0, 1_000_000.0, 48_900.0, AreaType::Rural, "Rural Costa Rica"),
945 ], 51_100.0)
946 },
947
948 Self::CotedIvoire => {
949 // Côte d'Ivoire: 27.1M population, 322,463 km² area, ~52% urban.
950 CountryPopulationData::from_regions(vec![
951 PopulationRegion::new(5.3599, -4.0082, 5_517_000.0, 2_119.0, AreaType::Urban, "Abidjan"),
952 PopulationRegion::new(7.5399, -5.5471, 356_000.0, 70.0, AreaType::Urban, "Bouaké"),
953 PopulationRegion::new(9.4580, -6.8262, 320_000.0, 60.0, AreaType::Urban, "Korhogo"),
954 PopulationRegion::new(6.8184, -6.1456, 270_000.0, 50.0, AreaType::Urban, "Yamoussoukro"),
955 PopulationRegion::new(7.0, -5.5, 13_000_000.0, 320_000.0, AreaType::Rural, "Rural Côte d'Ivoire"),
956 ], 322_463.0)
957 },
958
959 Self::Croatia => {
960 // Croatia: 4.0M population, 56,594 km² area, ~58% urban.
961 CountryPopulationData::from_regions(vec![
962 PopulationRegion::new(45.8150, 15.9819, 806_000.0, 641.0, AreaType::Urban, "Zagreb"),
963 PopulationRegion::new(43.5081, 16.4402, 179_000.0, 79.0, AreaType::Urban, "Split"),
964 PopulationRegion::new(44.1194, 15.2314, 129_000.0, 58.0, AreaType::Urban, "Rijeka"),
965 PopulationRegion::new(45.5550, 18.6955, 108_000.0, 84.0, AreaType::Urban, "Osijek"),
966 PopulationRegion::new(45.3270, 14.4420, 57_000.0, 44.0, AreaType::Urban, "Pula"),
967 PopulationRegion::new(44.8666, 13.8495, 55_000.0, 38.0, AreaType::Urban, "Zadar"),
968 PopulationRegion::new(45.4873, 15.5468, 49_000.0, 36.0, AreaType::Urban, "Karlovac"),
969 PopulationRegion::new(45.0, 16.0, 1_540_000.0, 55_614.0, AreaType::Rural, "Rural Croatia"),
970 ], 56_594.0)
971 },
972
973 Self::Cuba => {
974 // Cuba: 11.3M population, 109,884 km² area, ~77% urban.
975 CountryPopulationData::from_regions(vec![
976 PopulationRegion::new(23.1136, -82.3666, 2_141_000.0, 728.0, AreaType::Urban, "Havana"),
977 PopulationRegion::new(20.0174, -75.8134, 433_000.0, 216.0, AreaType::Urban, "Santiago de Cuba"),
978 PopulationRegion::new(22.1456, -80.4364, 326_000.0, 43.0, AreaType::Urban, "Camagüey"),
979 PopulationRegion::new(20.3433, -76.2611, 242_000.0, 70.0, AreaType::Urban, "Holguín"),
980 PopulationRegion::new(22.0, -79.0, 2_600_000.0, 108_800.0, AreaType::Rural, "Rural Cuba"),
981 ], 109_884.0)
982 },
983
984 Self::Cyprus => {
985 // Cyprus: 1.2M population, 9,251 km² area, ~67% urban.
986 CountryPopulationData::from_regions(vec![
987 PopulationRegion::new(35.1856, 33.3823, 269_000.0, 111.0, AreaType::Urban, "Nicosia"),
988 PopulationRegion::new(34.6841, 33.0379, 108_000.0, 76.0, AreaType::Urban, "Limassol"),
989 PopulationRegion::new(34.9221, 33.6189, 51_000.0, 31.0, AreaType::Urban, "Larnaca"),
990 PopulationRegion::new(35.1, 33.2, 400_000.0, 9_033.0, AreaType::Rural, "Rural Cyprus"),
991 ], 9_251.0)
992 },
993
994 Self::CzechRepublic => {
995 // Czech Republic: 10.5M population, 78,867 km² area, ~74% urban.
996 CountryPopulationData::from_regions(vec![
997 PopulationRegion::new(50.0755, 14.4378, 2_165_000.0, 496.0, AreaType::Urban, "Prague Metro"),
998 PopulationRegion::new(49.1951, 16.6068, 697_000.0, 230.0, AreaType::Urban, "Brno Metro"),
999 PopulationRegion::new(49.8398, 18.2820, 325_000.0, 214.0, AreaType::Urban, "Ostrava"),
1000 PopulationRegion::new(49.7437, 13.3736, 172_000.0, 138.0, AreaType::Urban, "Plzeň"),
1001 PopulationRegion::new(50.0, 15.0, 2_700_000.0, 77_800.0, AreaType::Rural, "Rural Czech Republic"),
1002 ], 78_867.0)
1003 },
1004
1005 Self::DemocraticRepublicOfTheCongo => {
1006 // DRC: 95.9M population, 2,344,858 km² area, ~46% urban.
1007 CountryPopulationData::from_regions(vec![
1008 PopulationRegion::new(-4.4419, 15.2663, 14_970_000.0, 9_965.0, AreaType::Urban, "Kinshasa"),
1009 PopulationRegion::new(-11.6609, 27.4794, 2_866_000.0, 747.0, AreaType::Urban, "Lubumbashi"),
1010 PopulationRegion::new(-5.0459, 23.5236, 1_602_000.0, 200.0, AreaType::Urban, "Mbuji-Mayi"),
1011 PopulationRegion::new(-1.6596, 29.2204, 1_080_000.0, 90.0, AreaType::Urban, "Goma"),
1012 PopulationRegion::new(0.5143, 25.1897, 1_054_000.0, 85.0, AreaType::Urban, "Kisangani"),
1013 PopulationRegion::new(-2.0, 23.0, 51_700_000.0, 2_333_000.0, AreaType::Rural, "Rural DRC"),
1014 ], 2_344_858.0)
1015 },
1016
1017 Self::DemocraticRepublicOfTimorLeste => {
1018 // Timor-Leste: 1.3M population, 14,919 km² area, ~31% urban.
1019 CountryPopulationData::from_regions(vec![
1020 PopulationRegion::new(-8.5569, 125.5603, 281_000.0, 49.0, AreaType::Urban, "Dili"),
1021 PopulationRegion::new(-8.7839, 126.3593, 29_000.0, 13.0, AreaType::Urban, "Baucau"),
1022 PopulationRegion::new(-8.7, 125.9, 917_000.0, 14_857.0, AreaType::Rural, "Rural Timor-Leste"),
1023 ], 14_919.0)
1024 },
1025
1026 Self::Denmark => {
1027 // Denmark: 5.9M population, 43,094 km² area, ~88% urban.
1028 CountryPopulationData::from_regions(vec![
1029 PopulationRegion::new(55.6761, 12.5683, 1_363_000.0, 180.0, AreaType::Urban, "Copenhagen Metro"),
1030 PopulationRegion::new(56.1629, 10.2039, 349_000.0, 91.0, AreaType::Urban, "Aarhus"),
1031 PopulationRegion::new(55.4038, 10.4024, 216_000.0, 79.0, AreaType::Urban, "Odense"),
1032 PopulationRegion::new(57.0488, 9.9217, 143_000.0, 558.0, AreaType::Urban, "Aalborg"),
1033 PopulationRegion::new(56.0, 10.0, 700_000.0, 42_000.0, AreaType::Rural, "Rural Denmark"),
1034 ], 43_094.0)
1035 },
1036
1037 Self::Djibouti => {
1038 // Djibouti: 1.0M population, 23,200 km² area, ~78% urban.
1039 CountryPopulationData::from_regions(vec![
1040 PopulationRegion::new(11.5721, 43.1456, 624_000.0, 630.0, AreaType::Urban, "Djibouti City"),
1041 PopulationRegion::new(11.7886, 42.5903, 37_000.0, 25.0, AreaType::Urban, "Ali Sabieh"),
1042 PopulationRegion::new(11.5, 42.5, 220_000.0, 22_545.0, AreaType::Rural, "Rural Djibouti"),
1043 ], 23_200.0)
1044 },
1045
1046 Self::Dominica => {
1047 // Dominica: 72k population, 750 km² area, ~71% urban.
1048 CountryPopulationData::from_regions(vec![
1049 PopulationRegion::new(15.3010, -61.3863, 15_000.0, 13.0, AreaType::Urban, "Roseau"),
1050 PopulationRegion::new(15.4316, -61.3707, 3_000.0, 5.0, AreaType::Urban, "Portsmouth"),
1051 PopulationRegion::new(15.4, -61.3, 21_000.0, 732.0, AreaType::Rural, "Rural Dominica"),
1052 ], 750.0)
1053 },
1054
1055 Self::DominicanRepublic => {
1056 // Dominican Republic: 10.8M population, 48,671 km² area, ~83% urban.
1057 CountryPopulationData::from_regions(vec![
1058 PopulationRegion::new(18.4861, -69.9312, 3_524_000.0, 1_401.0, AreaType::Urban, "Santo Domingo Metro"),
1059 PopulationRegion::new(19.4436, -70.6843, 1_164_000.0, 394.0, AreaType::Urban, "Santiago"),
1060 PopulationRegion::new(18.4269, -68.9655, 347_000.0, 84.0, AreaType::Urban, "La Romana"),
1061 PopulationRegion::new(18.5430, -69.3203, 331_000.0, 45.0, AreaType::Urban, "San Pedro de Macorís"),
1062 PopulationRegion::new(19.0, -70.0, 1_870_000.0, 46_700.0, AreaType::Rural, "Rural Dominican Republic"),
1063 ], 48_671.0)
1064 },
1065
1066 Self::Ecuador => {
1067 // Ecuador: 17.9M population, 283,561 km² area, ~64% urban.
1068 CountryPopulationData::from_regions(vec![
1069 PopulationRegion::new(-2.1962, -79.8862, 3_094_000.0, 344.0, AreaType::Urban, "Guayaquil Metro"),
1070 PopulationRegion::new(-0.1807, -78.4678, 2_239_000.0, 372.0, AreaType::Urban, "Quito Metro"),
1071 PopulationRegion::new(-2.9001, -79.0058, 661_000.0, 75.0, AreaType::Urban, "Cuenca"),
1072 PopulationRegion::new(-1.2491, -78.6196, 418_000.0, 43.0, AreaType::Urban, "Ambato"),
1073 PopulationRegion::new(-1.0, -78.0, 6_400_000.0, 282_700.0, AreaType::Rural, "Rural Ecuador"),
1074 ], 283_561.0)
1075 },
1076
1077 Self::Egypt => {
1078 // Egypt: 104.3M population, 1,001,450 km² area, ~43% urban.
1079 CountryPopulationData::from_regions(vec![
1080 PopulationRegion::new(30.0444, 31.2357, 21_323_000.0, 3_085.0, AreaType::Urban, "Cairo Metro"),
1081 PopulationRegion::new(31.2001, 29.9187, 5_381_000.0, 2_679.0, AreaType::Urban, "Alexandria"),
1082 PopulationRegion::new(30.5927, 32.2714, 800_000.0, 100.0, AreaType::Urban, "Port Said"),
1083 PopulationRegion::new(29.9668, 32.5498, 711_000.0, 110.0, AreaType::Urban, "Suez"),
1084 PopulationRegion::new(25.6872, 32.6396, 545_000.0, 417.0, AreaType::Urban, "Luxor"),
1085 PopulationRegion::new(27.1811, 31.1858, 538_000.0, 50.0, AreaType::Urban, "Asyut"),
1086 PopulationRegion::new(30.5765, 31.5041, 522_000.0, 45.0, AreaType::Urban, "Tanta"),
1087 PopulationRegion::new(31.0409, 31.3785, 495_000.0, 40.0, AreaType::Urban, "Mansoura"),
1088 PopulationRegion::new(30.1282, 31.3429, 483_000.0, 35.0, AreaType::Urban, "Zagazig"),
1089 PopulationRegion::new(24.0889, 32.8998, 474_000.0, 30.0, AreaType::Urban, "Aswan"),
1090 PopulationRegion::new(27.0, 30.0, 56_900_000.0, 997_600.0, AreaType::Rural, "Rural Egypt"),
1091 ], 1_001_450.0)
1092 },
1093
1094 Self::ElSalvador => {
1095 // El Salvador: 6.5M population, 21,041 km² area, ~74% urban.
1096 CountryPopulationData::from_regions(vec![
1097 PopulationRegion::new(13.6929, -89.2182, 1_107_000.0, 72.0, AreaType::Urban, "San Salvador"),
1098 PopulationRegion::new(14.3038, -89.4462, 264_000.0, 55.0, AreaType::Urban, "Santa Ana"),
1099 PopulationRegion::new(13.4889, -88.1806, 245_000.0, 40.0, AreaType::Urban, "San Miguel"),
1100 PopulationRegion::new(13.8, -89.0, 1_700_000.0, 20_900.0, AreaType::Rural, "Rural El Salvador"),
1101 ], 21_041.0)
1102 },
1103
1104 Self::EquatorialGuinea => {
1105 // Equatorial Guinea: 1.5M population, 28,051 km² area, ~73% urban.
1106 CountryPopulationData::from_regions(vec![
1107 PopulationRegion::new(3.7504, 8.7821, 333_000.0, 18.0, AreaType::Urban, "Malabo"),
1108 PopulationRegion::new(1.8501, 9.7713, 246_000.0, 25.0, AreaType::Urban, "Bata"),
1109 PopulationRegion::new(1.5, 10.0, 400_000.0, 28_008.0, AreaType::Rural, "Rural Equatorial Guinea"),
1110 ], 28_051.0)
1111 },
1112
1113 Self::Eritrea => {
1114 // Eritrea: 3.6M population, 117,600 km² area, ~42% urban.
1115 CountryPopulationData::from_regions(vec![
1116 PopulationRegion::new(15.3389, 38.9252, 803_000.0, 45.0, AreaType::Urban, "Asmara"),
1117 PopulationRegion::new(15.6109, 39.4545, 91_000.0, 20.0, AreaType::Urban, "Massawa"),
1118 PopulationRegion::new(14.8897, 38.8829, 82_000.0, 15.0, AreaType::Urban, "Keren"),
1119 PopulationRegion::new(15.5, 38.5, 2_100_000.0, 117_500.0, AreaType::Rural, "Rural Eritrea"),
1120 ], 117_600.0)
1121 },
1122
1123 Self::Estonia => {
1124 // Estonia: 1.3M population, 45,228 km² area, ~69% urban.
1125 CountryPopulationData::from_regions(vec![
1126 PopulationRegion::new(59.4370, 24.7536, 445_000.0, 159.0, AreaType::Urban, "Tallinn"),
1127 PopulationRegion::new(58.3776, 26.7291, 96_000.0, 39.0, AreaType::Urban, "Tartu"),
1128 PopulationRegion::new(59.3776, 27.4185, 55_000.0, 30.0, AreaType::Urban, "Narva"),
1129 PopulationRegion::new(58.5, 25.5, 415_000.0, 45_000.0, AreaType::Rural, "Rural Estonia"),
1130 ], 45_228.0)
1131 },
1132
1133 Self::Ethiopia => {
1134 // Ethiopia: 120.3M population, 1,104,300 km² area, ~22% urban.
1135 CountryPopulationData::from_regions(vec![
1136 PopulationRegion::new(9.0250, 38.7469, 5_006_000.0, 527.0, AreaType::Urban, "Addis Ababa"),
1137 PopulationRegion::new(7.6781, 36.8289, 605_000.0, 169.0, AreaType::Urban, "Arba Minch"),
1138 PopulationRegion::new(11.5931, 37.3964, 534_000.0, 213.0, AreaType::Urban, "Bahir Dar"),
1139 PopulationRegion::new(6.8227, 37.7282, 500_000.0, 98.0, AreaType::Urban, "Hawassa"),
1140 PopulationRegion::new(11.1274, 39.6365, 497_000.0, 150.0, AreaType::Urban, "Mekelle"),
1141 PopulationRegion::new(7.5522, 38.4872, 445_000.0, 120.0, AreaType::Urban, "Jimma"),
1142 PopulationRegion::new(9.3225, 42.1198, 437_000.0, 130.0, AreaType::Urban, "Dire Dawa"),
1143 PopulationRegion::new(13.4937, 39.4764, 423_000.0, 100.0, AreaType::Urban, "Gonder"),
1144 PopulationRegion::new(8.5500, 39.2667, 401_000.0, 90.0, AreaType::Urban, "Shashemene"),
1145 PopulationRegion::new(9.0107, 38.7613, 385_000.0, 80.0, AreaType::Urban, "Adama"),
1146 PopulationRegion::new(9.0, 39.0, 88_400_000.0, 1_103_000.0, AreaType::Rural, "Rural Ethiopia"),
1147 ], 1_104_300.0)
1148 },
1149
1150 Self::FederatedStatesOfMicronesia => {
1151 // Federated States of Micronesia: 115k population, 702 km² area, ~23% urban.
1152 CountryPopulationData::from_regions(vec![
1153 PopulationRegion::new(6.9248, 158.1610, 7_000.0, 12.0, AreaType::Urban, "Palikir"),
1154 PopulationRegion::new(6.8927, 158.2339, 7_000.0, 10.0, AreaType::Urban, "Kolonia"),
1155 PopulationRegion::new(7.4456, 151.8488, 3_500.0, 8.0, AreaType::Urban, "Weno"),
1156 PopulationRegion::new(7.3315, 151.5033, 3_000.0, 6.0, AreaType::Urban, "Tol"),
1157 PopulationRegion::new(7.0, 158.0, 81_500.0, 666.0, AreaType::Rural, "Rural Micronesia"),
1158 ], 702.0)
1159 },
1160
1161 Self::Fiji => {
1162 // Fiji: 903k population, 18,274 km² area, ~57% urban.
1163 CountryPopulationData::from_regions(vec![
1164 PopulationRegion::new(-18.1248, 178.4501, 341_000.0, 2_048.0, AreaType::Urban, "Suva Metro"),
1165 PopulationRegion::new(-17.6134, 177.4481, 52_000.0, 32.0, AreaType::Urban, "Lautoka"),
1166 PopulationRegion::new(-17.7765, 177.9098, 72_000.0, 57.0, AreaType::Urban, "Nadi"),
1167 PopulationRegion::new(-17.5333, 178.8167, 50_000.0, 30.0, AreaType::Urban, "Labasa"),
1168 PopulationRegion::new(-17.8000, 178.0000, 44_000.0, 25.0, AreaType::Urban, "Ba"),
1169 PopulationRegion::new(-18.0, 178.0, 295_000.0, 16_082.0, AreaType::Rural, "Rural Fiji"),
1170 ], 18_274.0)
1171 },
1172
1173 Self::Finland => {
1174 // Finland: 5.5M population, 338,424 km² area, ~85% urban.
1175 CountryPopulationData::from_regions(vec![
1176 PopulationRegion::new(60.1699, 24.9384, 1_305_000.0, 770.0, AreaType::Urban, "Helsinki Metro"),
1177 PopulationRegion::new(61.4978, 23.7610, 347_000.0, 689.0, AreaType::Urban, "Tampere"),
1178 PopulationRegion::new(60.4515, 22.2688, 196_000.0, 306.0, AreaType::Urban, "Turku"),
1179 PopulationRegion::new(65.0121, 25.4651, 141_000.0, 1_410.0, AreaType::Urban, "Oulu"),
1180 PopulationRegion::new(63.0, 27.0, 820_000.0, 335_000.0, AreaType::Rural, "Rural Finland"),
1181 ], 338_424.0)
1182 },
1183
1184 Self::France => {
1185 // France: 67.8M population, 643,801 km² area, ~81% urban.
1186 CountryPopulationData::from_regions(vec![
1187 PopulationRegion::new(48.8566, 2.3522, 11_027_000.0, 2_845.0, AreaType::Urban, "Paris Metro"),
1188 PopulationRegion::new(45.7640, 4.8357, 2_323_000.0, 6_019.0, AreaType::Urban, "Lyon Metro"),
1189 PopulationRegion::new(43.2965, 5.3698, 1_760_000.0, 3_173.0, AreaType::Urban, "Marseille Metro"),
1190 PopulationRegion::new(43.6047, 1.4442, 1_360_000.0, 5_381.0, AreaType::Urban, "Toulouse Metro"),
1191 PopulationRegion::new(50.6292, 3.0573, 1_187_000.0, 977.0, AreaType::Urban, "Lille Metro"),
1192 PopulationRegion::new(44.8378, -0.5792, 1_247_000.0, 5_613.0, AreaType::Urban, "Bordeaux Metro"),
1193 PopulationRegion::new(47.2184, -1.5536, 972_000.0, 3_378.0, AreaType::Urban, "Nantes Metro"),
1194 PopulationRegion::new(48.1113, -1.6742, 733_000.0, 704.0, AreaType::Urban, "Rennes"),
1195 PopulationRegion::new(43.6047, 7.2644, 1_006_000.0, 2_383.0, AreaType::Urban, "Nice Metro"),
1196 PopulationRegion::new(45.1880, 5.7240, 689_000.0, 2_621.0, AreaType::Urban, "Grenoble Metro"),
1197 PopulationRegion::new(47.0, 2.0, 10_600_000.0, 620_000.0, AreaType::Rural, "Rural France"),
1198 ], 643_801.0)
1199 },
1200
1201 Self::Gabon => {
1202 // Gabon: 2.3M population, 267,668 km² area, ~90% urban.
1203 CountryPopulationData::from_regions(vec![
1204 PopulationRegion::new(0.4162, 9.4673, 831_000.0, 189.0, AreaType::Urban, "Libreville"),
1205 PopulationRegion::new(-0.7001, 8.7809, 285_000.0, 81.0, AreaType::Urban, "Port-Gentil"),
1206 PopulationRegion::new(-1.9569, 11.4853, 61_000.0, 20.0, AreaType::Urban, "Franceville"),
1207 PopulationRegion::new(-0.5, 10.0, 230_000.0, 267_400.0, AreaType::Rural, "Rural Gabon"),
1208 ], 267_668.0)
1209 },
1210
1211 Self::TheGambia => {
1212 // The Gambia: 2.5M population, 11,295 km² area, ~63% urban.
1213 CountryPopulationData::from_regions(vec![
1214 PopulationRegion::new(13.4432, -16.6781, 437_000.0, 93.0, AreaType::Urban, "Banjul Metro"),
1215 PopulationRegion::new(13.4531, -16.5775, 393_000.0, 76.0, AreaType::Urban, "Serekunda"),
1216 PopulationRegion::new(13.4418, -16.5636, 50_000.0, 10.0, AreaType::Urban, "Brikama"),
1217 PopulationRegion::new(13.5, -16.0, 950_000.0, 11_100.0, AreaType::Rural, "Rural Gambia"),
1218 ], 11_295.0)
1219 },
1220
1221 Self::Georgia => {
1222 // Georgia: 3.7M population, 69,700 km² area, ~60% urban.
1223 CountryPopulationData::from_regions(vec![
1224 PopulationRegion::new(41.7151, 44.8271, 1_165_000.0, 504.0, AreaType::Urban, "Tbilisi"),
1225 PopulationRegion::new(42.2662, 42.7180, 147_000.0, 64.0, AreaType::Urban, "Kutaisi"),
1226 PopulationRegion::new(41.6168, 41.6367, 184_000.0, 66.0, AreaType::Urban, "Batumi"),
1227 PopulationRegion::new(42.2529, 43.9653, 57_000.0, 30.0, AreaType::Urban, "Gori"),
1228 PopulationRegion::new(42.0, 43.5, 1_490_000.0, 69_000.0, AreaType::Rural, "Rural Georgia"),
1229 ], 69_700.0)
1230 },
1231
1232 Self::Germany => {
1233 // Germany: 83.2M population, 357,588 km² area, ~77% urban.
1234 CountryPopulationData::from_regions(vec![
1235 PopulationRegion::new(52.5200, 13.4050, 3_769_000.0, 891.0, AreaType::Urban, "Berlin"),
1236 PopulationRegion::new(53.5511, 9.9937, 1_899_000.0, 755.0, AreaType::Urban, "Hamburg"),
1237 PopulationRegion::new(48.1351, 11.5820, 1_484_000.0, 311.0, AreaType::Urban, "Munich"),
1238 PopulationRegion::new(50.9375, 6.9603, 1_085_000.0, 405.0, AreaType::Urban, "Cologne"),
1239 PopulationRegion::new(50.1109, 8.6821, 753_000.0, 248.0, AreaType::Urban, "Frankfurt"),
1240 PopulationRegion::new(48.7758, 9.1829, 634_000.0, 207.0, AreaType::Urban, "Stuttgart"),
1241 PopulationRegion::new(51.2277, 6.7735, 619_000.0, 217.0, AreaType::Urban, "Düsseldorf"),
1242 PopulationRegion::new(51.4556, 7.0116, 586_000.0, 210.0, AreaType::Urban, "Essen"),
1243 PopulationRegion::new(51.3397, 12.3731, 587_000.0, 297.0, AreaType::Urban, "Leipzig"),
1244 PopulationRegion::new(51.3127, 7.4639, 582_000.0, 280.0, AreaType::Urban, "Dortmund"),
1245 PopulationRegion::new(51.0504, 13.7373, 556_000.0, 328.0, AreaType::Urban, "Dresden"),
1246 PopulationRegion::new(49.4521, 11.0768, 532_000.0, 186.0, AreaType::Urban, "Nuremberg"),
1247 PopulationRegion::new(52.3759, 9.7320, 532_000.0, 204.0, AreaType::Urban, "Hanover"),
1248 PopulationRegion::new(51.5136, 7.4653, 519_000.0, 168.0, AreaType::Urban, "Bochum"),
1249 PopulationRegion::new(51.0, 10.0, 15_600_000.0, 354_000.0, AreaType::Rural, "Rural Germany"),
1250 ], 357_588.0)
1251 },
1252
1253 Self::Ghana => {
1254 // Ghana: 31.7M population, 238,533 km² area, ~57% urban.
1255 CountryPopulationData::from_regions(vec![
1256 PopulationRegion::new(5.6037, -0.1870, 5_055_000.0, 225.0, AreaType::Urban, "Accra Metro"),
1257 PopulationRegion::new(6.6885, -1.6244, 2_557_000.0, 254.0, AreaType::Urban, "Kumasi"),
1258 PopulationRegion::new(5.1136, -1.2821, 289_000.0, 103.0, AreaType::Urban, "Sekondi-Takoradi"),
1259 PopulationRegion::new(9.4034, -0.8424, 235_000.0, 750.0, AreaType::Urban, "Tamale"),
1260 PopulationRegion::new(8.0, -1.0, 13_600_000.0, 237_300.0, AreaType::Rural, "Rural Ghana"),
1261 ], 238_533.0)
1262 },
1263
1264 Self::Greece => {
1265 // Greece: 10.7M population, 131,957 km² area, ~79% urban.
1266 CountryPopulationData::from_regions(vec![
1267 PopulationRegion::new(37.9838, 23.7275, 3_690_000.0, 2_929.0, AreaType::Urban, "Athens Metro"),
1268 PopulationRegion::new(40.6401, 22.9444, 1_110_000.0, 1_286.0, AreaType::Urban, "Thessaloniki Metro"),
1269 PopulationRegion::new(38.2466, 21.7346, 214_000.0, 125.0, AreaType::Urban, "Patras"),
1270 PopulationRegion::new(35.3387, 25.1442, 174_000.0, 336.0, AreaType::Urban, "Heraklion"),
1271 PopulationRegion::new(37.0741, 22.4303, 139_000.0, 90.0, AreaType::Urban, "Kalamata"),
1272 PopulationRegion::new(35.5138, 24.0180, 122_000.0, 240.0, AreaType::Urban, "Chania"),
1273 PopulationRegion::new(36.4167, 28.2167, 105_000.0, 200.0, AreaType::Urban, "Rhodes"),
1274 PopulationRegion::new(37.9500, 23.6333, 100_000.0, 180.0, AreaType::Urban, "Piraeus"),
1275 PopulationRegion::new(39.6650, 20.8537, 85_000.0, 120.0, AreaType::Urban, "Ioannina"),
1276 PopulationRegion::new(38.9000, 22.4333, 75_000.0, 100.0, AreaType::Urban, "Lamia"),
1277 PopulationRegion::new(39.5, 22.0, 1_460_000.0, 127_300.0, AreaType::Rural, "Rural Greece"),
1278 ], 131_957.0)
1279 },
1280
1281 Self::Grenada => {
1282 // Grenada: 113k population, 349 km² area, ~36% urban.
1283 CountryPopulationData::from_regions(vec![
1284 PopulationRegion::new(12.0540, -61.7486, 40_000.0, 65.0, AreaType::Urban, "St. George's"),
1285 PopulationRegion::new(12.1, -61.7, 72_000.0, 284.0, AreaType::Rural, "Rural Grenada"),
1286 ], 349.0)
1287 },
1288
1289 Self::Guatemala => {
1290 // Guatemala: 17.3M population, 108,889 km² area, ~52% urban.
1291 CountryPopulationData::from_regions(vec![
1292 PopulationRegion::new(14.6407, -90.5133, 2_983_000.0, 996.0, AreaType::Urban, "Guatemala City Metro"),
1293 PopulationRegion::new(14.8344, -91.5185, 1_125_000.0, 484.0, AreaType::Urban, "Quetzaltenango"),
1294 PopulationRegion::new(14.9589, -90.9833, 184_000.0, 50.0, AreaType::Urban, "Escuintla"),
1295 PopulationRegion::new(15.0, -91.0, 8_400_000.0, 107_400.0, AreaType::Rural, "Rural Guatemala"),
1296 ], 108_889.0)
1297 },
1298
1299 Self::Guinea => {
1300 // Guinea: 13.5M population, 245,857 km² area, ~37% urban.
1301 CountryPopulationData::from_regions(vec![
1302 PopulationRegion::new(9.6412, -13.5784, 1_991_000.0, 450.0, AreaType::Urban, "Conakry"),
1303 PopulationRegion::new(10.7356, -10.3860, 235_000.0, 50.0, AreaType::Urban, "Kankan"),
1304 PopulationRegion::new(11.3182, -12.2887, 146_000.0, 30.0, AreaType::Urban, "Kindia"),
1305 PopulationRegion::new(10.5, -11.0, 8_500_000.0, 245_300.0, AreaType::Rural, "Rural Guinea"),
1306 ], 245_857.0)
1307 },
1308
1309 Self::GuineaBissau => {
1310 // Guinea-Bissau: 2.0M population, 36,125 km² area, ~44% urban.
1311 CountryPopulationData::from_regions(vec![
1312 PopulationRegion::new(11.8636, -15.5977, 643_000.0, 77.0, AreaType::Urban, "Bissau"),
1313 PopulationRegion::new(12.2833, -14.7667, 52_000.0, 12.0, AreaType::Urban, "Bafatá"),
1314 PopulationRegion::new(12.0, -15.0, 1_130_000.0, 36_000.0, AreaType::Rural, "Rural Guinea-Bissau"),
1315 ], 36_125.0)
1316 },
1317
1318 Self::Guyana => {
1319 // Guyana: 787k population, 214,969 km² area, ~27% urban.
1320 CountryPopulationData::from_regions(vec![
1321 PopulationRegion::new(6.8013, -58.1551, 118_000.0, 70.0, AreaType::Urban, "Georgetown"),
1322 PopulationRegion::new(6.0045, -57.4795, 25_000.0, 20.0, AreaType::Urban, "Linden"),
1323 PopulationRegion::new(5.0, -59.0, 575_000.0, 214_900.0, AreaType::Rural, "Rural Guyana"),
1324 ], 214_969.0)
1325 },
1326
1327 Self::Haiti => {
1328 // Haiti: 11.5M population, 27,750 km² area, ~58% urban.
1329 CountryPopulationData::from_regions(vec![
1330 PopulationRegion::new(18.5944, -72.3074, 2_915_000.0, 158.0, AreaType::Urban, "Port-au-Prince Metro"),
1331 PopulationRegion::new(19.7567, -72.2025, 375_000.0, 21.0, AreaType::Urban, "Cap-Haïtien"),
1332 PopulationRegion::new(18.5396, -72.3361, 172_000.0, 10.0, AreaType::Urban, "Pétionville"),
1333 PopulationRegion::new(19.0, -72.5, 4_900_000.0, 27_500.0, AreaType::Rural, "Rural Haiti"),
1334 ], 27_750.0)
1335 },
1336
1337 Self::Honduras => {
1338 // Honduras: 10.1M population, 112,492 km² area, ~59% urban.
1339 CountryPopulationData::from_regions(vec![
1340 PopulationRegion::new(14.0723, -87.1921, 1_444_000.0, 220.0, AreaType::Urban, "Tegucigalpa"),
1341 PopulationRegion::new(15.5047, -88.0237, 929_000.0, 92.0, AreaType::Urban, "San Pedro Sula"),
1342 PopulationRegion::new(15.7800, -86.7892, 182_000.0, 30.0, AreaType::Urban, "La Ceiba"),
1343 PopulationRegion::new(15.0, -87.0, 4_150_000.0, 112_100.0, AreaType::Rural, "Rural Honduras"),
1344 ], 112_492.0)
1345 },
1346
1347 Self::Hungary => {
1348 // Hungary: 9.7M population, 93,028 km² area, ~72% urban.
1349 CountryPopulationData::from_regions(vec![
1350 PopulationRegion::new(47.4979, 19.0402, 3_011_000.0, 525.0, AreaType::Urban, "Budapest Metro"),
1351 PopulationRegion::new(47.6875, 17.6504, 179_000.0, 282.0, AreaType::Urban, "Győr"),
1352 PopulationRegion::new(46.0727, 18.2323, 161_000.0, 161.0, AreaType::Urban, "Pécs"),
1353 PopulationRegion::new(46.2530, 20.1480, 170_000.0, 281.0, AreaType::Urban, "Szeged"),
1354 PopulationRegion::new(47.5, 19.0, 2_740_000.0, 91_800.0, AreaType::Rural, "Rural Hungary"),
1355 ], 93_028.0)
1356 },
1357
1358 Self::Iceland => {
1359 // Iceland: 372k population, 103,000 km² area, ~94% urban.
1360 CountryPopulationData::from_regions(vec![
1361 PopulationRegion::new(64.1466, -21.9426, 233_000.0, 273.0, AreaType::Urban, "Reykjavík Metro"),
1362 PopulationRegion::new(64.1265, -21.8174, 13_000.0, 10.0, AreaType::Urban, "Kópavogur"),
1363 PopulationRegion::new(64.0671, -21.9602, 12_000.0, 8.0, AreaType::Urban, "Hafnarfjörður"),
1364 PopulationRegion::new(65.0, -19.0, 22_000.0, 102_700.0, AreaType::Rural, "Rural Iceland"),
1365 ], 103_000.0)
1366 },
1367
1368 Self::India => {
1369 // India: 1,408M population, 3,287,263 km² area, ~35% urban.
1370 CountryPopulationData::from_regions(vec![
1371 PopulationRegion::new(28.7041, 77.1025, 32_941_000.0, 1_425.0, AreaType::Urban, "Delhi"),
1372 PopulationRegion::new(19.0760, 72.8777, 20_961_000.0, 550.0, AreaType::Urban, "Mumbai"),
1373 PopulationRegion::new(22.5726, 88.3639, 15_134_000.0, 1_851.0, AreaType::Urban, "Kolkata"),
1374 PopulationRegion::new(12.9716, 77.5946, 13_193_000.0, 741.0, AreaType::Urban, "Bangalore"),
1375 PopulationRegion::new(13.0827, 80.2707, 11_504_000.0, 1_049.0, AreaType::Urban, "Chennai"),
1376 PopulationRegion::new(17.3850, 78.4867, 10_494_000.0, 625.0, AreaType::Urban, "Hyderabad"),
1377 PopulationRegion::new(23.0225, 72.5714, 8_588_000.0, 464.0, AreaType::Urban, "Ahmedabad"),
1378 PopulationRegion::new(18.5204, 73.8567, 7_412_000.0, 582.0, AreaType::Urban, "Pune"),
1379 PopulationRegion::new(22.3072, 73.1812, 6_357_000.0, 331.0, AreaType::Urban, "Surat"),
1380 PopulationRegion::new(26.4499, 80.3319, 3_683_000.0, 285.0, AreaType::Urban, "Kanpur"),
1381 PopulationRegion::new(26.8467, 80.9462, 3_597_000.0, 402.0, AreaType::Urban, "Lucknow"),
1382 PopulationRegion::new(21.1458, 79.0882, 3_004_000.0, 227.0, AreaType::Urban, "Nagpur"),
1383 PopulationRegion::new(26.9124, 75.7873, 3_928_000.0, 484.0, AreaType::Urban, "Jaipur"),
1384 PopulationRegion::new(23.2599, 77.4126, 2_427_000.0, 293.0, AreaType::Urban, "Bhopal"),
1385 PopulationRegion::new(17.6868, 83.2185, 2_358_000.0, 682.0, AreaType::Urban, "Visakhapatnam"),
1386 PopulationRegion::new(25.5941, 85.1376, 2_300_000.0, 201.0, AreaType::Urban, "Patna"),
1387 PopulationRegion::new(13.0878, 80.2785, 2_283_000.0, 175.0, AreaType::Urban, "Vadodara"),
1388 PopulationRegion::new(22.7196, 75.8577, 2_171_000.0, 244.0, AreaType::Urban, "Indore"),
1389 PopulationRegion::new(30.7333, 76.7794, 2_122_000.0, 158.0, AreaType::Urban, "Chandigarh"),
1390 PopulationRegion::new(25.3478, 72.3106, 2_019_000.0, 149.0, AreaType::Urban, "Jodhpur"),
1391 PopulationRegion::new(23.0, 78.0, 880_000_000.0, 3_275_000.0, AreaType::Rural, "Rural India"),
1392 ], 3_287_263.0)
1393 },
1394
1395 Self::Indonesia => {
1396 // Indonesia: 273.8M population, 1,904,569 km² area, ~57% urban.
1397 CountryPopulationData::from_regions(vec![
1398 PopulationRegion::new(-6.2088, 106.8456, 34_540_000.0, 3_540.0, AreaType::Urban, "Jakarta Metro"),
1399 PopulationRegion::new(-7.2575, 112.7521, 10_098_000.0, 5_343.0, AreaType::Urban, "Surabaya Metro"),
1400 PopulationRegion::new(-6.9175, 107.6191, 9_049_000.0, 2_875.0, AreaType::Urban, "Bandung Metro"),
1401 PopulationRegion::new(3.5952, 98.6722, 5_253_000.0, 479.0, AreaType::Urban, "Medan Metro"),
1402 PopulationRegion::new(-6.9667, 110.4167, 4_679_000.0, 210.0, AreaType::Urban, "Semarang Metro"),
1403 PopulationRegion::new(-5.1477, 119.4327, 3_368_000.0, 2_226.0, AreaType::Urban, "Makassar Metro"),
1404 PopulationRegion::new(-0.9493, 100.3543, 2_658_000.0, 694.0, AreaType::Urban, "Padang Metro"),
1405 PopulationRegion::new(-3.8000, 102.2667, 2_010_000.0, 315.0, AreaType::Urban, "Palembang"),
1406 PopulationRegion::new(1.4926, 124.8414, 1_895_000.0, 409.0, AreaType::Urban, "Manado"),
1407 PopulationRegion::new(-0.8917, 119.8707, 1_423_000.0, 333.0, AreaType::Urban, "Palu"),
1408 PopulationRegion::new(-8.5833, 116.1167, 1_407_000.0, 222.0, AreaType::Urban, "Mataram"),
1409 PopulationRegion::new(-0.0263, 109.3425, 1_396_000.0, 230.0, AreaType::Urban, "Pontianak"),
1410 PopulationRegion::new(-8.6500, 115.2167, 1_327_000.0, 5_780.0, AreaType::Urban, "Denpasar"),
1411 PopulationRegion::new(-2.9909, 104.7754, 1_312_000.0, 358.0, AreaType::Urban, "Jambi"),
1412 PopulationRegion::new(-3.0, 120.0, 95_700_000.0, 1_890_000.0, AreaType::Rural, "Rural Indonesia"),
1413 ], 1_904_569.0)
1414 },
1415
1416 Self::Iran => {
1417 // Iran: 85.0M population, 1,648,195 km² area, ~76% urban.
1418 CountryPopulationData::from_regions(vec![
1419 PopulationRegion::new(35.6892, 51.3890, 9_382_000.0, 730.0, AreaType::Urban, "Tehran"),
1420 PopulationRegion::new(36.2605, 59.6168, 3_372_000.0, 328.0, AreaType::Urban, "Mashhad"),
1421 PopulationRegion::new(32.6546, 51.6680, 2_132_000.0, 106.0, AreaType::Urban, "Isfahan"),
1422 PopulationRegion::new(35.3219, 46.9982, 1_920_000.0, 234.0, AreaType::Urban, "Kermanshah"),
1423 PopulationRegion::new(38.0792, 46.2919, 1_841_000.0, 131.0, AreaType::Urban, "Tabriz"),
1424 PopulationRegion::new(29.5918, 52.5836, 1_750_000.0, 240.0, AreaType::Urban, "Shiraz"),
1425 PopulationRegion::new(37.2807, 49.5831, 1_703_000.0, 162.0, AreaType::Urban, "Rasht"),
1426 PopulationRegion::new(31.3183, 48.6706, 1_569_000.0, 134.0, AreaType::Urban, "Ahvaz"),
1427 PopulationRegion::new(36.3107, 59.5989, 1_245_000.0, 92.0, AreaType::Urban, "Zahedan"),
1428 PopulationRegion::new(34.6416, 50.8746, 1_228_000.0, 106.0, AreaType::Urban, "Qom"),
1429 PopulationRegion::new(32.0, 53.0, 14_600_000.0, 1_646_000.0, AreaType::Rural, "Rural Iran"),
1430 ], 1_648_195.0)
1431 },
1432
1433 Self::Iraq => {
1434 // Iraq: 41.2M population, 438,317 km² area, ~71% urban.
1435 CountryPopulationData::from_regions(vec![
1436 PopulationRegion::new(33.3152, 44.3661, 8_765_000.0, 204.0, AreaType::Urban, "Baghdad"),
1437 PopulationRegion::new(36.3489, 43.1577, 1_846_000.0, 180.0, AreaType::Urban, "Mosul"),
1438 PopulationRegion::new(30.5234, 47.7919, 1_497_000.0, 117.0, AreaType::Urban, "Basra"),
1439 PopulationRegion::new(36.1905, 44.0119, 1_080_000.0, 70.0, AreaType::Urban, "Erbil"),
1440 PopulationRegion::new(35.4679, 44.3923, 875_000.0, 60.0, AreaType::Urban, "Kirkuk"),
1441 PopulationRegion::new(31.9960, 44.3150, 821_000.0, 54.0, AreaType::Urban, "Najaf"),
1442 PopulationRegion::new(32.4637, 44.0249, 711_000.0, 48.0, AreaType::Urban, "Karbala"),
1443 PopulationRegion::new(32.6149, 44.0227, 656_000.0, 43.0, AreaType::Urban, "Hillah"),
1444 PopulationRegion::new(32.0, 44.0, 10_000_000.0, 437_700.0, AreaType::Rural, "Rural Iraq"),
1445 ], 438_317.0)
1446 },
1447
1448 Self::Ireland => {
1449 // Ireland: 5.0M population, 70,273 km² area, ~64% urban.
1450 CountryPopulationData::from_regions(vec![
1451 PopulationRegion::new(53.3498, -6.2603, 1_388_000.0, 318.0, AreaType::Urban, "Dublin Metro"),
1452 PopulationRegion::new(51.8969, -8.4863, 310_000.0, 187.0, AreaType::Urban, "Cork Metro"),
1453 PopulationRegion::new(53.2707, -9.0568, 195_000.0, 150.0, AreaType::Urban, "Galway"),
1454 PopulationRegion::new(52.6638, -8.6267, 117_000.0, 54.0, AreaType::Urban, "Limerick"),
1455 PopulationRegion::new(53.0, -8.0, 1_800_000.0, 69_500.0, AreaType::Rural, "Rural Ireland"),
1456 ], 70_273.0)
1457 },
1458
1459 Self::Israel => {
1460 // Israel: 9.4M population, 20,770 km² area, ~93% urban.
1461 CountryPopulationData::from_regions(vec![
1462 PopulationRegion::new(32.0853, 34.7818, 4_343_000.0, 1_554.0, AreaType::Urban, "Tel Aviv Metro"),
1463 PopulationRegion::new(31.7683, 35.2137, 1_158_000.0, 125.0, AreaType::Urban, "Jerusalem"),
1464 PopulationRegion::new(32.7940, 34.9896, 924_000.0, 290.0, AreaType::Urban, "Haifa Metro"),
1465 PopulationRegion::new(31.2530, 34.7915, 217_000.0, 62.0, AreaType::Urban, "Beersheba"),
1466 PopulationRegion::new(32.0876, 34.8881, 197_000.0, 55.0, AreaType::Urban, "Rishon LeZion"),
1467 PopulationRegion::new(32.3261, 34.8516, 193_000.0, 52.0, AreaType::Urban, "Netanya"),
1468 PopulationRegion::new(31.8894, 34.8031, 181_000.0, 48.0, AreaType::Urban, "Ashdod"),
1469 PopulationRegion::new(32.0, 35.0, 260_000.0, 18_584.0, AreaType::Rural, "Rural Israel"),
1470 ], 20_770.0)
1471 },
1472
1473 Self::Italy => {
1474 // Italy: 59.1M population, 301,340 km² area, ~71% urban.
1475 CountryPopulationData::from_regions(vec![
1476 PopulationRegion::new(41.9028, 12.4964, 4_342_000.0, 1_287.0, AreaType::Urban, "Rome Metro"),
1477 PopulationRegion::new(45.4642, 9.1900, 4_336_000.0, 1_575.0, AreaType::Urban, "Milan Metro"),
1478 PopulationRegion::new(40.8518, 14.2681, 3_085_000.0, 1_171.0, AreaType::Urban, "Naples Metro"),
1479 PopulationRegion::new(45.0703, 7.6869, 1_720_000.0, 335.0, AreaType::Urban, "Turin Metro"),
1480 PopulationRegion::new(38.1157, 13.3613, 1_252_000.0, 5_009.0, AreaType::Urban, "Palermo Metro"),
1481 PopulationRegion::new(44.4949, 11.3426, 1_011_000.0, 3_703.0, AreaType::Urban, "Bologna Metro"),
1482 PopulationRegion::new(43.7696, 11.2558, 1_013_000.0, 4_844.0, AreaType::Urban, "Florence Metro"),
1483 PopulationRegion::new(45.4408, 12.3155, 853_000.0, 2_462.0, AreaType::Urban, "Venice Metro"),
1484 PopulationRegion::new(41.1171, 16.8719, 608_000.0, 2_122.0, AreaType::Urban, "Bari"),
1485 PopulationRegion::new(45.0555, 8.0463, 462_000.0, 1_553.0, AreaType::Urban, "Genoa"),
1486 PopulationRegion::new(37.5079, 15.0830, 580_000.0, 1_570.0, AreaType::Urban, "Catania"),
1487 PopulationRegion::new(38.1938, 15.5540, 423_000.0, 3_183.0, AreaType::Urban, "Messina"),
1488 PopulationRegion::new(45.4064, 11.8768, 407_000.0, 2_281.0, AreaType::Urban, "Padua"),
1489 PopulationRegion::new(42.0, 12.5, 13_900_000.0, 283_000.0, AreaType::Rural, "Rural Italy"),
1490 ], 301_340.0)
1491 },
1492
1493 Self::Jamaica => {
1494 // Jamaica: 2.8M population, 10,991 km² area, ~56% urban.
1495 CountryPopulationData::from_regions(vec![
1496 PopulationRegion::new(17.9714, -76.7937, 1_243_000.0, 453.0, AreaType::Urban, "Kingston Metro"),
1497 PopulationRegion::new(18.4709, -77.9219, 110_000.0, 25.0, AreaType::Urban, "Montego Bay"),
1498 PopulationRegion::new(18.0179, -76.8099, 89_000.0, 20.0, AreaType::Urban, "Spanish Town"),
1499 PopulationRegion::new(18.0, -77.0, 1_240_000.0, 10_400.0, AreaType::Rural, "Rural Jamaica"),
1500 ], 10_991.0)
1501 },
1502
1503 Self::Japan => {
1504 // Japan: 125.4M population, 377,975 km² area, ~92% urban.
1505 CountryPopulationData::from_regions(vec![
1506 PopulationRegion::new(35.6762, 139.6503, 38_505_000.0, 13_452.0, AreaType::Urban, "Tokyo Metro"),
1507 PopulationRegion::new(34.6937, 135.5023, 19_165_000.0, 13_033.0, AreaType::Urban, "Osaka-Kobe-Kyoto"),
1508 PopulationRegion::new(35.1815, 136.9066, 9_197_000.0, 10_868.0, AreaType::Urban, "Nagoya Metro"),
1509 PopulationRegion::new(43.0642, 141.3469, 2_636_000.0, 3_800.0, AreaType::Urban, "Sapporo Metro"),
1510 PopulationRegion::new(33.5904, 130.4017, 5_502_000.0, 4_747.0, AreaType::Urban, "Fukuoka-Kitakyushu"),
1511 PopulationRegion::new(34.3853, 132.4553, 2_096_000.0, 905.0, AreaType::Urban, "Hiroshima Metro"),
1512 PopulationRegion::new(38.2682, 140.8694, 2_324_000.0, 6_400.0, AreaType::Urban, "Sendai Metro"),
1513 PopulationRegion::new(35.4437, 139.6380, 1_304_000.0, 326.0, AreaType::Urban, "Kawasaki"),
1514 PopulationRegion::new(35.1796, 136.9066, 1_163_000.0, 523.0, AreaType::Urban, "Kobe"),
1515 PopulationRegion::new(34.9756, 138.3829, 1_143_000.0, 1_411.0, AreaType::Urban, "Shizuoka"),
1516 PopulationRegion::new(26.2124, 127.6809, 1_377_000.0, 1_199.0, AreaType::Urban, "Naha"),
1517 PopulationRegion::new(37.0, 138.0, 8_600_000.0, 324_000.0, AreaType::Rural, "Rural Japan"),
1518 ], 377_975.0)
1519 },
1520
1521 Self::Jordan => {
1522 // Jordan: 10.3M population, 89,342 km² area, ~91% urban.
1523 CountryPopulationData::from_regions(vec![
1524 PopulationRegion::new(31.9454, 35.9284, 2_210_000.0, 696.0, AreaType::Urban, "Amman"),
1525 PopulationRegion::new(31.1853, 35.7041, 655_000.0, 121.0, AreaType::Urban, "Zarqa"),
1526 PopulationRegion::new(32.5568, 35.8469, 608_000.0, 176.0, AreaType::Urban, "Irbid"),
1527 PopulationRegion::new(31.7148, 35.7933, 144_000.0, 35.0, AreaType::Urban, "Russeifa"),
1528 PopulationRegion::new(31.0, 36.0, 920_000.0, 88_300.0, AreaType::Rural, "Rural Jordan"),
1529 ], 89_342.0)
1530 },
1531
1532 Self::Kazakhstan => {
1533 // Kazakhstan: 19.0M population, 2,724,900 km² area, ~58% urban.
1534 CountryPopulationData::from_regions(vec![
1535 PopulationRegion::new(43.2551, 76.9126, 2_048_000.0, 683.0, AreaType::Urban, "Almaty"),
1536 PopulationRegion::new(51.1655, 71.4272, 1_184_000.0, 810.0, AreaType::Urban, "Nur-Sultan"),
1537 PopulationRegion::new(42.3151, 69.5893, 1_074_000.0, 200.0, AreaType::Urban, "Shymkent"),
1538 PopulationRegion::new(50.4119, 80.2282, 510_000.0, 300.0, AreaType::Urban, "Semey"),
1539 PopulationRegion::new(47.1167, 51.8833, 500_000.0, 280.0, AreaType::Urban, "Aktobe"),
1540 PopulationRegion::new(49.8047, 73.1094, 497_000.0, 220.0, AreaType::Urban, "Karaganda"),
1541 PopulationRegion::new(52.2878, 76.9456, 476_000.0, 195.0, AreaType::Urban, "Pavlodar"),
1542 PopulationRegion::new(43.3551, 77.3205, 453_000.0, 175.0, AreaType::Urban, "Taraz"),
1543 PopulationRegion::new(48.0, 68.0, 6_700_000.0, 2_722_000.0, AreaType::Rural, "Rural Kazakhstan"),
1544 ], 2_724_900.0)
1545 },
1546
1547 Self::Kenya => {
1548 // Kenya: 54.0M population, 580,367 km² area, ~28% urban.
1549 CountryPopulationData::from_regions(vec![
1550 PopulationRegion::new(-1.2921, 36.8219, 5_119_000.0, 696.0, AreaType::Urban, "Nairobi"),
1551 PopulationRegion::new(-4.0435, 39.6682, 1_341_000.0, 294.0, AreaType::Urban, "Mombasa"),
1552 PopulationRegion::new(0.5143, 35.2698, 608_000.0, 325.0, AreaType::Urban, "Nakuru"),
1553 PopulationRegion::new(-1.0502, 37.0804, 500_000.0, 123.0, AreaType::Urban, "Ruiru"),
1554 PopulationRegion::new(-0.0917, 34.7680, 475_000.0, 197.0, AreaType::Urban, "Kisumu"),
1555 PopulationRegion::new(0.0353, 37.0733, 336_000.0, 85.0, AreaType::Urban, "Eldoret"),
1556 PopulationRegion::new(-1.2837, 36.8269, 311_000.0, 75.0, AreaType::Urban, "Kikuyu"),
1557 PopulationRegion::new(-0.7174, 37.1520, 260_000.0, 65.0, AreaType::Urban, "Thika"),
1558 PopulationRegion::new(-1.0, 37.0, 37_000_000.0, 578_700.0, AreaType::Rural, "Rural Kenya"),
1559 ], 580_367.0)
1560 },
1561
1562 Self::Kiribati => {
1563 // Kiribati: 121k population, 811 km² area, ~55% urban.
1564 CountryPopulationData::from_regions(vec![
1565 PopulationRegion::new(1.3559, 172.9847, 66_000.0, 40.0, AreaType::Urban, "South Tarawa"),
1566 PopulationRegion::new(1.9808, 157.3603, 3_200.0, 8.0, AreaType::Urban, "Kiritimati"),
1567 PopulationRegion::new(1.4167, 173.0167, 3_000.0, 7.0, AreaType::Urban, "Betio"),
1568 PopulationRegion::new(1.3333, 172.9833, 2_800.0, 6.0, AreaType::Urban, "Bairiki"),
1569 PopulationRegion::new(1.5, 173.0, 45_000.0, 750.0, AreaType::Rural, "Rural Kiribati"),
1570 ], 811.0)
1571 },
1572
1573 Self::Kosovo => {
1574 // Kosovo: 1.8M population, 10,887 km² area, ~43% urban.
1575 CountryPopulationData::from_regions(vec![
1576 PopulationRegion::new(42.6629, 21.1655, 207_000.0, 83.0, AreaType::Urban, "Pristina"),
1577 PopulationRegion::new(42.3702, 20.4298, 97_000.0, 32.0, AreaType::Urban, "Prizren"),
1578 PopulationRegion::new(42.7441, 20.8333, 87_000.0, 35.0, AreaType::Urban, "Gjilan"),
1579 PopulationRegion::new(42.5, 21.0, 1_024_000.0, 10_700.0, AreaType::Rural, "Rural Kosovo"),
1580 ], 10_887.0)
1581 },
1582
1583 Self::Kuwait => {
1584 // Kuwait: 4.3M population, 17,818 km² area, ~100% urban.
1585 CountryPopulationData::from_regions(vec![
1586 PopulationRegion::new(29.3759, 47.9774, 3_115_000.0, 200.0, AreaType::Urban, "Kuwait City Metro"),
1587 PopulationRegion::new(29.1458, 48.0975, 295_000.0, 37.0, AreaType::Urban, "Ahmadi"),
1588 PopulationRegion::new(29.3347, 47.6581, 273_000.0, 30.0, AreaType::Urban, "Farwaniya"),
1589 PopulationRegion::new(29.2, 47.8, 600_000.0, 17_551.0, AreaType::Rural, "Rural Kuwait"),
1590 ], 17_818.0)
1591 },
1592
1593 Self::Kyrgyzstan => {
1594 // Kyrgyzstan: 6.7M population, 199,951 km² area, ~37% urban.
1595 CountryPopulationData::from_regions(vec![
1596 PopulationRegion::new(42.8746, 74.5698, 1_069_000.0, 127.0, AreaType::Urban, "Bishkek"),
1597 PopulationRegion::new(40.5140, 72.8161, 1_064_000.0, 29.0, AreaType::Urban, "Osh"),
1598 PopulationRegion::new(40.9333, 72.9833, 83_000.0, 18.0, AreaType::Urban, "Jalal-Abad"),
1599 PopulationRegion::new(41.0, 74.0, 4_200_000.0, 199_700.0, AreaType::Rural, "Rural Kyrgyzstan"),
1600 ], 199_951.0)
1601 },
1602
1603 Self::Laos => {
1604 // Laos: 7.4M population, 236,800 km² area, ~36% urban.
1605 CountryPopulationData::from_regions(vec![
1606 PopulationRegion::new(17.9757, 102.6331, 683_000.0, 130.0, AreaType::Urban, "Vientiane"),
1607 PopulationRegion::new(15.1202, 105.7817, 141_000.0, 47.0, AreaType::Urban, "Savannakhet"),
1608 PopulationRegion::new(14.8817, 105.8076, 122_000.0, 28.0, AreaType::Urban, "Pakse"),
1609 PopulationRegion::new(18.0, 103.0, 4_700_000.0, 236_600.0, AreaType::Rural, "Rural Laos"),
1610 ], 236_800.0)
1611 },
1612
1613 Self::Latvia => {
1614 // Latvia: 1.9M population, 64,589 km² area, ~68% urban.
1615 CountryPopulationData::from_regions(vec![
1616 PopulationRegion::new(56.9496, 24.1052, 633_000.0, 307.0, AreaType::Urban, "Riga"),
1617 PopulationRegion::new(55.8753, 26.5361, 79_000.0, 58.0, AreaType::Urban, "Daugavpils"),
1618 PopulationRegion::new(56.5000, 21.0167, 61_000.0, 60.0, AreaType::Urban, "Liepāja"),
1619 PopulationRegion::new(57.0, 24.0, 592_000.0, 64_100.0, AreaType::Rural, "Rural Latvia"),
1620 ], 64_589.0)
1621 },
1622
1623 Self::Lebanon => {
1624 // Lebanon: 6.8M population, 10,452 km² area, ~89% urban.
1625 CountryPopulationData::from_regions(vec![
1626 PopulationRegion::new(33.8938, 35.5018, 2_424_000.0, 100.0, AreaType::Urban, "Beirut Metro"),
1627 PopulationRegion::new(33.5633, 35.3814, 530_000.0, 17.0, AreaType::Urban, "Tripoli"),
1628 PopulationRegion::new(33.3705, 35.3709, 237_000.0, 20.0, AreaType::Urban, "Sidon"),
1629 PopulationRegion::new(33.2773, 35.2033, 200_000.0, 16.0, AreaType::Urban, "Tyre"),
1630 PopulationRegion::new(33.8, 35.7, 750_000.0, 10_300.0, AreaType::Rural, "Rural Lebanon"),
1631 ], 10_452.0)
1632 },
1633
1634 Self::Lesotho => {
1635 // Lesotho: 2.2M population, 30,355 km² area, ~29% urban.
1636 CountryPopulationData::from_regions(vec![
1637 PopulationRegion::new(-29.3100, 27.4800, 331_000.0, 138.0, AreaType::Urban, "Maseru"),
1638 PopulationRegion::new(-29.1500, 27.5500, 36_000.0, 20.0, AreaType::Urban, "Teyateyaneng"),
1639 PopulationRegion::new(-29.5, 28.0, 1_560_000.0, 30_200.0, AreaType::Rural, "Rural Lesotho"),
1640 ], 30_355.0)
1641 },
1642
1643 Self::Liberia => {
1644 // Liberia: 5.2M population, 111,369 km² area, ~52% urban.
1645 CountryPopulationData::from_regions(vec![
1646 PopulationRegion::new(6.3106, -10.8048, 1_517_000.0, 194.0, AreaType::Urban, "Monrovia"),
1647 PopulationRegion::new(6.4160, -10.7969, 56_000.0, 12.0, AreaType::Urban, "Paynesville"),
1648 PopulationRegion::new(5.0119, -9.0383, 50_000.0, 10.0, AreaType::Urban, "Harper"),
1649 PopulationRegion::new(6.5, -9.5, 2_500_000.0, 111_100.0, AreaType::Rural, "Rural Liberia"),
1650 ], 111_369.0)
1651 },
1652
1653 Self::Libya => {
1654 // Libya: 6.9M population, 1,759,540 km² area, ~81% urban.
1655 CountryPopulationData::from_regions(vec![
1656 PopulationRegion::new(32.8872, 13.1913, 1_165_000.0, 400.0, AreaType::Urban, "Tripoli"),
1657 PopulationRegion::new(32.1194, 20.0867, 807_000.0, 210.0, AreaType::Urban, "Benghazi"),
1658 PopulationRegion::new(32.7571, 12.9681, 287_000.0, 63.0, AreaType::Urban, "Misrata"),
1659 PopulationRegion::new(31.1992, 16.5887, 118_000.0, 55.0, AreaType::Urban, "Tarhuna"),
1660 PopulationRegion::new(27.0, 17.0, 1_300_000.0, 1_758_800.0, AreaType::Rural, "Rural Libya"),
1661 ], 1_759_540.0)
1662 },
1663
1664 Self::Liechtenstein => {
1665 // Liechtenstein: 39k population, 160 km² area, ~15% urban.
1666 CountryPopulationData::from_regions(vec![
1667 PopulationRegion::new(47.1410, 9.5209, 6_000.0, 17.0, AreaType::Urban, "Vaduz"),
1668 PopulationRegion::new(47.1, 9.5, 33_000.0, 143.0, AreaType::Rural, "Rural Liechtenstein"),
1669 ], 160.0)
1670 },
1671
1672 Self::Lithuania => {
1673 // Lithuania: 2.8M population, 65,300 km² area, ~68% urban.
1674 CountryPopulationData::from_regions(vec![
1675 PopulationRegion::new(54.6872, 25.2797, 580_000.0, 401.0, AreaType::Urban, "Vilnius"),
1676 PopulationRegion::new(54.9012, 23.9036, 290_000.0, 157.0, AreaType::Urban, "Kaunas"),
1677 PopulationRegion::new(55.7333, 21.1333, 149_000.0, 99.0, AreaType::Urban, "Klaipėda"),
1678 PopulationRegion::new(55.0, 24.0, 880_000.0, 64_600.0, AreaType::Rural, "Rural Lithuania"),
1679 ], 65_300.0)
1680 },
1681
1682 Self::Luxembourg => {
1683 // Luxembourg: 640k population, 2,586 km² area, ~91% urban.
1684 CountryPopulationData::from_regions(vec![
1685 PopulationRegion::new(49.6117, 6.1319, 128_000.0, 52.0, AreaType::Urban, "Luxembourg City"),
1686 PopulationRegion::new(49.4804, 5.9860, 33_000.0, 15.0, AreaType::Urban, "Esch-sur-Alzette"),
1687 PopulationRegion::new(49.6806, 5.8139, 29_000.0, 10.0, AreaType::Urban, "Differdange"),
1688 PopulationRegion::new(49.7, 6.1, 60_000.0, 2_509.0, AreaType::Rural, "Rural Luxembourg"),
1689 ], 2_586.0)
1690 },
1691
1692 Self::Macedonia => {
1693 // North Macedonia: 2.1M population, 25,713 km² area, ~59% urban.
1694 CountryPopulationData::from_regions(vec![
1695 PopulationRegion::new(41.9981, 21.4254, 544_000.0, 77.0, AreaType::Urban, "Skopje"),
1696 PopulationRegion::new(41.0297, 21.3292, 73_000.0, 30.0, AreaType::Urban, "Bitola"),
1697 PopulationRegion::new(41.7151, 22.1821, 66_000.0, 25.0, AreaType::Urban, "Kumanovo"),
1698 PopulationRegion::new(41.5, 21.5, 860_000.0, 25_600.0, AreaType::Rural, "Rural North Macedonia"),
1699 ], 25_713.0)
1700 },
1701
1702 Self::Madagascar => {
1703 // Madagascar: 28.4M population, 587,041 km² area, ~39% urban.
1704 CountryPopulationData::from_regions(vec![
1705 PopulationRegion::new(-18.8792, 47.5079, 1_740_000.0, 93.0, AreaType::Urban, "Antananarivo"),
1706 PopulationRegion::new(-23.3599, 43.6713, 316_000.0, 80.0, AreaType::Urban, "Toliara"),
1707 PopulationRegion::new(-18.1443, 49.3958, 289_000.0, 45.0, AreaType::Urban, "Toamasina"),
1708 PopulationRegion::new(-19.8692, 47.0338, 244_000.0, 50.0, AreaType::Urban, "Antsirabe"),
1709 PopulationRegion::new(-20.0, 47.0, 17_400_000.0, 586_700.0, AreaType::Rural, "Rural Madagascar"),
1710 ], 587_041.0)
1711 },
1712
1713 Self::Malawi => {
1714 // Malawi: 19.6M population, 118,484 km² area, ~17% urban.
1715 CountryPopulationData::from_regions(vec![
1716 PopulationRegion::new(-13.9626, 33.7741, 1_122_000.0, 158.0, AreaType::Urban, "Lilongwe"),
1717 PopulationRegion::new(-15.3875, 35.0085, 873_000.0, 184.0, AreaType::Urban, "Blantyre"),
1718 PopulationRegion::new(-11.4502, 34.0191, 221_000.0, 86.0, AreaType::Urban, "Mzuzu"),
1719 PopulationRegion::new(-14.0, 34.0, 16_400_000.0, 118_100.0, AreaType::Rural, "Rural Malawi"),
1720 ], 118_484.0)
1721 },
1722
1723 Self::Malaysia => {
1724 // Malaysia: 32.7M population, 330,803 km² area, ~78% urban.
1725 CountryPopulationData::from_regions(vec![
1726 PopulationRegion::new(3.1390, 101.6869, 8_420_000.0, 2_793.0, AreaType::Urban, "Kuala Lumpur Metro"),
1727 PopulationRegion::new(5.4141, 100.3288, 2_513_000.0, 2_562.0, AreaType::Urban, "Penang Metro"),
1728 PopulationRegion::new(1.5533, 103.7594, 1_803_000.0, 1_064.0, AreaType::Urban, "Johor Bahru Metro"),
1729 PopulationRegion::new(3.0733, 101.5185, 800_000.0, 290.0, AreaType::Urban, "Ipoh"),
1730 PopulationRegion::new(6.1254, 102.2381, 354_000.0, 36.0, AreaType::Urban, "Kota Bharu"),
1731 PopulationRegion::new(1.4655, 110.4294, 740_000.0, 1_545.0, AreaType::Urban, "Kuching"),
1732 PopulationRegion::new(5.9804, 116.0735, 500_000.0, 366.0, AreaType::Urban, "Kota Kinabalu"),
1733 PopulationRegion::new(3.8077, 103.3260, 497_000.0, 33.0, AreaType::Urban, "Kuantan"),
1734 PopulationRegion::new(5.3593, 103.1368, 425_000.0, 28.0, AreaType::Urban, "Kota Terengganu"),
1735 PopulationRegion::new(4.0, 102.0, 5_300_000.0, 324_000.0, AreaType::Rural, "Rural Malaysia"),
1736 ], 330_803.0)
1737 },
1738
1739 Self::Maldives => {
1740 // Maldives: 541k population, 298 km² area, ~41% urban.
1741 CountryPopulationData::from_regions(vec![
1742 PopulationRegion::new(4.1755, 73.5093, 211_000.0, 6.0, AreaType::Urban, "Malé"),
1743 PopulationRegion::new(4.1748, 73.5089, 41_000.0, 2.0, AreaType::Urban, "Hulhumalé"),
1744 PopulationRegion::new(-0.6286, 73.0949, 12_000.0, 1.0, AreaType::Urban, "Addu City"),
1745 PopulationRegion::new(5.0378, 73.0728, 8_000.0, 1.0, AreaType::Urban, "Kulhudhuffushi"),
1746 PopulationRegion::new(-0.5816, 73.0969, 7_000.0, 1.0, AreaType::Urban, "Hithadhoo"),
1747 PopulationRegion::new(4.2, 73.5, 252_000.0, 287.0, AreaType::Rural, "Rural Maldives"),
1748 ], 298.0)
1749 },
1750
1751 Self::Mali => {
1752 // Mali: 21.0M population, 1,240,192 km² area, ~44% urban.
1753 CountryPopulationData::from_regions(vec![
1754 PopulationRegion::new(12.6392, -8.0029, 2_713_000.0, 267.0, AreaType::Urban, "Bamako"),
1755 PopulationRegion::new(12.6570, -5.9957, 375_000.0, 87.0, AreaType::Urban, "Sikasso"),
1756 PopulationRegion::new(13.8317, -4.8896, 283_000.0, 65.0, AreaType::Urban, "Segou"),
1757 PopulationRegion::new(16.7735, -3.0097, 237_000.0, 56.0, AreaType::Urban, "Timbuktu"),
1758 PopulationRegion::new(17.0, -4.0, 11_700_000.0, 1_239_700.0, AreaType::Rural, "Rural Mali"),
1759 ], 1_240_192.0)
1760 },
1761
1762 Self::Malta => {
1763 // Malta: 519k population, 316 km² area, ~95% urban.
1764 CountryPopulationData::from_regions(vec![
1765 PopulationRegion::new(35.8989, 14.5146, 213_000.0, 17.0, AreaType::Urban, "Valletta Metro"),
1766 PopulationRegion::new(35.8857, 14.4024, 30_000.0, 5.0, AreaType::Urban, "Birkirkara"),
1767 PopulationRegion::new(35.9147, 14.4894, 25_000.0, 3.0, AreaType::Urban, "Qormi"),
1768 PopulationRegion::new(35.9, 14.5, 26_000.0, 291.0, AreaType::Rural, "Rural Malta"),
1769 ], 316.0)
1770 },
1771
1772 Self::MarshallIslands => {
1773 // Marshall Islands: 60k population, 181 km² area, ~78% urban.
1774 CountryPopulationData::from_regions(vec![
1775 PopulationRegion::new(7.0897, 171.3803, 28_000.0, 10.0, AreaType::Urban, "Majuro"),
1776 PopulationRegion::new(8.7208, 167.7314, 12_000.0, 5.0, AreaType::Urban, "Ebeye"),
1777 PopulationRegion::new(7.1315, 171.3723, 3_000.0, 3.0, AreaType::Urban, "Delap-Uliga-Djarrit"),
1778 PopulationRegion::new(7.5, 171.0, 10_000.0, 163.0, AreaType::Rural, "Rural Marshall Islands"),
1779 ], 181.0)
1780 },
1781
1782 Self::Mauritania => {
1783 // Mauritania: 4.8M population, 1,030,700 km² area, ~55% urban.
1784 CountryPopulationData::from_regions(vec![
1785 PopulationRegion::new(18.0858, -15.9785, 1_315_000.0, 1_000.0, AreaType::Urban, "Nouakchott"),
1786 PopulationRegion::new(18.1384, -15.8031, 158_000.0, 40.0, AreaType::Urban, "Nouadhibou"),
1787 PopulationRegion::new(16.1712, -13.8267, 66_000.0, 20.0, AreaType::Urban, "Rosso"),
1788 PopulationRegion::new(20.0, -12.0, 2_160_000.0, 1_029_600.0, AreaType::Rural, "Rural Mauritania"),
1789 ], 1_030_700.0)
1790 },
1791
1792 Self::Mauritius => {
1793 // Mauritius: 1.3M population, 2,040 km² area, ~41% urban.
1794 CountryPopulationData::from_regions(vec![
1795 PopulationRegion::new(-20.1625, 57.4989, 147_000.0, 48.0, AreaType::Urban, "Port Louis"),
1796 PopulationRegion::new(-20.2611, 57.4781, 110_000.0, 25.0, AreaType::Urban, "Beau Bassin-Rose Hill"),
1797 PopulationRegion::new(-20.3203, 57.5156, 82_000.0, 20.0, AreaType::Urban, "Vacoas-Phoenix"),
1798 PopulationRegion::new(-20.2, 57.5, 765_000.0, 1_947.0, AreaType::Rural, "Rural Mauritius"),
1799 ], 2_040.0)
1800 },
1801
1802 Self::Mexico => {
1803 // Mexico: 128.9M population, 1,964,375 km² area, ~81% urban.
1804 CountryPopulationData::from_regions(vec![
1805 PopulationRegion::new(19.4326, -99.1332, 21_919_000.0, 7_866.0, AreaType::Urban, "Mexico City Metro"),
1806 PopulationRegion::new(20.6597, -103.3496, 5_269_000.0, 2_735.0, AreaType::Urban, "Guadalajara Metro"),
1807 PopulationRegion::new(25.6866, -100.3161, 5_341_000.0, 7_431.0, AreaType::Urban, "Monterrey Metro"),
1808 PopulationRegion::new(19.0414, -98.2063, 3_251_000.0, 2_393.0, AreaType::Urban, "Puebla Metro"),
1809 PopulationRegion::new(21.0251, -101.2545, 2_058_000.0, 2_042.0, AreaType::Urban, "León Metro"),
1810 PopulationRegion::new(32.5149, -117.0382, 2_157_000.0, 1_392.0, AreaType::Urban, "Tijuana"),
1811 PopulationRegion::new(31.6904, -106.4245, 1_513_000.0, 4_853.0, AreaType::Urban, "Ciudad Juárez"),
1812 PopulationRegion::new(19.1738, -96.1342, 1_046_000.0, 475.0, AreaType::Urban, "Veracruz"),
1813 PopulationRegion::new(20.5880, -100.3899, 1_385_000.0, 1_165.0, AreaType::Urban, "Querétaro"),
1814 PopulationRegion::new(21.0190, -89.6237, 1_316_000.0, 348.0, AreaType::Urban, "Mérida"),
1815 PopulationRegion::new(20.6953, -101.9539, 1_266_000.0, 324.0, AreaType::Urban, "Aguascalientes"),
1816 PopulationRegion::new(23.0, -102.0, 19_900_000.0, 1_940_000.0, AreaType::Rural, "Rural Mexico"),
1817 ], 1_964_375.0)
1818 },
1819
1820 Self::Moldova => {
1821 // Moldova: 2.6M population, 33,846 km² area, ~43% urban.
1822 CountryPopulationData::from_regions(vec![
1823 PopulationRegion::new(47.0105, 28.8638, 695_000.0, 120.0, AreaType::Urban, "Chișinău"),
1824 PopulationRegion::new(46.8419, 29.6139, 90_000.0, 25.0, AreaType::Urban, "Tiraspol"),
1825 PopulationRegion::new(47.7571, 27.9237, 81_000.0, 20.0, AreaType::Urban, "Bălți"),
1826 PopulationRegion::new(47.5, 28.5, 1_490_000.0, 33_600.0, AreaType::Rural, "Rural Moldova"),
1827 ], 33_846.0)
1828 },
1829
1830 Self::Monaco => {
1831 // Monaco: 39k population, 2 km² area, ~100% urban.
1832 CountryPopulationData::from_regions(vec![
1833 PopulationRegion::new(43.7384, 7.4246, 39_000.0, 2.0, AreaType::Urban, "Monaco"),
1834 ], 2.0)
1835 },
1836
1837 Self::Mongolia => {
1838 // Mongolia: 3.4M population, 1,564,110 km² area, ~69% urban.
1839 CountryPopulationData::from_regions(vec![
1840 PopulationRegion::new(47.8864, 106.9057, 1_600_000.0, 4_704.0, AreaType::Urban, "Ulaanbaatar"),
1841 PopulationRegion::new(48.9674, 89.5824, 89_000.0, 50.0, AreaType::Urban, "Ölgii"),
1842 PopulationRegion::new(49.6333, 100.1500, 87_000.0, 45.0, AreaType::Urban, "Erdenet"),
1843 PopulationRegion::new(48.0, 103.0, 1_050_000.0, 1_559_300.0, AreaType::Rural, "Rural Mongolia"),
1844 ], 1_564_110.0)
1845 },
1846
1847 Self::Montenegro => {
1848 // Montenegro: 621k population, 13,812 km² area, ~68% urban.
1849 CountryPopulationData::from_regions(vec![
1850 PopulationRegion::new(42.4304, 19.2594, 188_000.0, 1_441.0, AreaType::Urban, "Podgorica"),
1851 PopulationRegion::new(43.1238, 19.0975, 74_000.0, 24.0, AreaType::Urban, "Nikšić"),
1852 PopulationRegion::new(42.7731, 18.9446, 20_000.0, 12.0, AreaType::Urban, "Herceg Novi"),
1853 PopulationRegion::new(42.5, 19.0, 199_000.0, 12_300.0, AreaType::Rural, "Rural Montenegro"),
1854 ], 13_812.0)
1855 },
1856
1857 Self::Morocco => {
1858 // Morocco: 37.5M population, 446,550 km² area, ~64% urban.
1859 CountryPopulationData::from_regions(vec![
1860 PopulationRegion::new(33.5731, -7.5898, 4_079_000.0, 230.0, AreaType::Urban, "Casablanca"),
1861 PopulationRegion::new(34.0209, -6.8416, 1_273_000.0, 118.0, AreaType::Urban, "Rabat"),
1862 PopulationRegion::new(31.6295, -7.9811, 1_137_000.0, 230.0, AreaType::Urban, "Marrakesh"),
1863 PopulationRegion::new(35.7595, -5.8340, 1_034_000.0, 119.0, AreaType::Urban, "Tangier"),
1864 PopulationRegion::new(34.0333, -5.0000, 966_000.0, 424.0, AreaType::Urban, "Fez"),
1865 PopulationRegion::new(33.5883, -7.6114, 893_000.0, 220.0, AreaType::Urban, "Salé"),
1866 PopulationRegion::new(32.0, -6.0, 13_500_000.0, 445_400.0, AreaType::Rural, "Rural Morocco"),
1867 ], 446_550.0)
1868 },
1869
1870 Self::Mozambique => {
1871 // Mozambique: 32.2M population, 801,590 km² area, ~37% urban.
1872 CountryPopulationData::from_regions(vec![
1873 PopulationRegion::new(-25.9692, 32.5732, 1_136_000.0, 347.0, AreaType::Urban, "Maputo"),
1874 PopulationRegion::new(-25.9167, 32.5667, 1_126_000.0, 300.0, AreaType::Urban, "Matola"),
1875 PopulationRegion::new(-19.8436, 34.8389, 616_000.0, 230.0, AreaType::Urban, "Beira"),
1876 PopulationRegion::new(-15.1167, 39.2667, 351_000.0, 66.0, AreaType::Urban, "Nampula"),
1877 PopulationRegion::new(-18.0, 35.0, 20_300_000.0, 800_600.0, AreaType::Rural, "Rural Mozambique"),
1878 ], 801_590.0)
1879 },
1880
1881 Self::Myanmar => {
1882 // Myanmar: 54.8M population, 676,578 km² area, ~31% urban.
1883 CountryPopulationData::from_regions(vec![
1884 PopulationRegion::new(16.8661, 96.1951, 5_610_000.0, 610.0, AreaType::Urban, "Yangon"),
1885 PopulationRegion::new(21.9588, 96.0891, 1_440_000.0, 156.0, AreaType::Urban, "Mandalay"),
1886 PopulationRegion::new(19.7463, 96.1609, 491_000.0, 125.0, AreaType::Urban, "Naypyidaw"),
1887 PopulationRegion::new(16.4833, 97.6167, 181_000.0, 30.0, AreaType::Urban, "Mawlamyine"),
1888 PopulationRegion::new(21.0, 96.0, 37_800_000.0, 675_600.0, AreaType::Rural, "Rural Myanmar"),
1889 ], 676_578.0)
1890 },
1891
1892 Self::Namibia => {
1893 // Namibia: 2.5M population, 825,615 km² area, ~52% urban.
1894 CountryPopulationData::from_regions(vec![
1895 PopulationRegion::new(-22.5594, 17.0832, 431_000.0, 5_133.0, AreaType::Urban, "Windhoek"),
1896 PopulationRegion::new(-22.6700, 14.5269, 107_000.0, 29.0, AreaType::Urban, "Swakopmund"),
1897 PopulationRegion::new(-22.9576, 14.5046, 107_000.0, 29.0, AreaType::Urban, "Walvis Bay"),
1898 PopulationRegion::new(-22.0, 17.0, 1_200_000.0, 820_400.0, AreaType::Rural, "Rural Namibia"),
1899 ], 825_615.0)
1900 },
1901
1902 Self::Nauru => {
1903 // Nauru: 11k population, 21 km² area, ~100% urban.
1904 CountryPopulationData::from_regions(vec![
1905 PopulationRegion::new(-0.5477, 166.9209, 11_000.0, 21.0, AreaType::Urban, "Yaren District"),
1906 ], 21.0)
1907 },
1908
1909 Self::Nepal => {
1910 // Nepal: 30.2M population, 147,516 km² area, ~21% urban.
1911 CountryPopulationData::from_regions(vec![
1912 PopulationRegion::new(27.7172, 85.3240, 1_330_000.0, 50.0, AreaType::Urban, "Kathmandu"),
1913 PopulationRegion::new(26.4525, 87.2718, 196_000.0, 30.0, AreaType::Urban, "Biratnagar"),
1914 PopulationRegion::new(28.2380, 83.9956, 384_000.0, 70.0, AreaType::Urban, "Pokhara"),
1915 PopulationRegion::new(27.7, 85.3, 23_900_000.0, 147_300.0, AreaType::Rural, "Rural Nepal"),
1916 ], 147_516.0)
1917 },
1918
1919 Self::Netherlands => {
1920 // Netherlands: 17.5M population, 41,850 km² area, ~92% urban.
1921 CountryPopulationData::from_regions(vec![
1922 PopulationRegion::new(52.3676, 4.9041, 2_480_000.0, 2_580.0, AreaType::Urban, "Amsterdam Metro"),
1923 PopulationRegion::new(51.9244, 4.4777, 1_024_000.0, 324.0, AreaType::Urban, "Rotterdam"),
1924 PopulationRegion::new(52.0907, 5.1214, 906_000.0, 1_449.0, AreaType::Urban, "Utrecht"),
1925 PopulationRegion::new(52.1601, 4.4970, 1_404_000.0, 1_024.0, AreaType::Urban, "The Hague Metro"),
1926 PopulationRegion::new(51.4416, 5.4697, 786_000.0, 332.0, AreaType::Urban, "Eindhoven Metro"),
1927 PopulationRegion::new(51.5719, 4.7683, 218_000.0, 129.0, AreaType::Urban, "Breda"),
1928 PopulationRegion::new(53.2194, 6.5665, 233_000.0, 83.0, AreaType::Urban, "Groningen"),
1929 PopulationRegion::new(52.0, 5.0, 1_400_000.0, 35_900.0, AreaType::Rural, "Rural Netherlands"),
1930 ], 41_850.0)
1931 },
1932
1933 Self::NewZealand => {
1934 // New Zealand: 5.1M population, 268,021 km² area, ~87% urban.
1935 CountryPopulationData::from_regions(vec![
1936 PopulationRegion::new(-36.8485, 174.7633, 1_658_000.0, 5_600.0, AreaType::Urban, "Auckland Metro"),
1937 PopulationRegion::new(-41.2865, 174.7762, 543_000.0, 1_390.0, AreaType::Urban, "Wellington Metro"),
1938 PopulationRegion::new(-43.5321, 172.6362, 521_000.0, 1_426.0, AreaType::Urban, "Christchurch Metro"),
1939 PopulationRegion::new(-37.7870, 175.2793, 242_000.0, 1_115.0, AreaType::Urban, "Hamilton"),
1940 PopulationRegion::new(-38.1368, 176.2497, 151_000.0, 168.0, AreaType::Urban, "Tauranga"),
1941 PopulationRegion::new(-45.8788, 170.5028, 134_000.0, 256.0, AreaType::Urban, "Dunedin"),
1942 PopulationRegion::new(-39.0556, 174.0752, 83_000.0, 2_062.0, AreaType::Urban, "New Plymouth"),
1943 PopulationRegion::new(-39.4928, 176.9120, 81_000.0, 156.0, AreaType::Urban, "Napier-Hastings"),
1944 PopulationRegion::new(-38.6857, 178.0236, 79_000.0, 94.0, AreaType::Urban, "Gisborne"),
1945 PopulationRegion::new(-46.4132, 168.3538, 56_000.0, 3_314.0, AreaType::Urban, "Invercargill"),
1946 PopulationRegion::new(-42.0, 172.0, 350_000.0, 258_600.0, AreaType::Rural, "Rural New Zealand"),
1947 ], 268_021.0)
1948 },
1949
1950 Self::Nicaragua => {
1951 // Nicaragua: 6.7M population, 130,373 km² area, ~59% urban.
1952 CountryPopulationData::from_regions(vec![
1953 PopulationRegion::new(12.1364, -86.2514, 1_080_000.0, 544.0, AreaType::Urban, "Managua"),
1954 PopulationRegion::new(12.4340, -86.8779, 203_000.0, 44.0, AreaType::Urban, "León"),
1955 PopulationRegion::new(11.9727, -86.0948, 161_000.0, 38.0, AreaType::Urban, "Masaya"),
1956 PopulationRegion::new(12.0, -85.0, 2_750_000.0, 129_700.0, AreaType::Rural, "Rural Nicaragua"),
1957 ], 130_373.0)
1958 },
1959
1960 Self::Niger => {
1961 // Niger: 25.1M population, 1,267,000 km² area, ~17% urban.
1962 CountryPopulationData::from_regions(vec![
1963 PopulationRegion::new(13.5137, 2.1098, 1_336_000.0, 255.0, AreaType::Urban, "Niamey"),
1964 PopulationRegion::new(13.8001, 8.9816, 123_000.0, 30.0, AreaType::Urban, "Zinder"),
1965 PopulationRegion::new(13.0499, 7.6088, 118_000.0, 25.0, AreaType::Urban, "Maradi"),
1966 PopulationRegion::new(17.0, 8.0, 21_000_000.0, 1_266_700.0, AreaType::Rural, "Rural Niger"),
1967 ], 1_267_000.0)
1968 },
1969
1970 Self::Nigeria => {
1971 // Nigeria: 213.4M population, 923,768 km² area, ~52% urban.
1972 CountryPopulationData::from_regions(vec![
1973 PopulationRegion::new(6.5244, 3.3792, 15_946_000.0, 1_171.0, AreaType::Urban, "Lagos"),
1974 PopulationRegion::new(12.0022, 8.5919, 3_840_000.0, 476.0, AreaType::Urban, "Kano"),
1975 PopulationRegion::new(7.3775, 3.9069, 3_649_000.0, 1_204.0, AreaType::Urban, "Ibadan"),
1976 PopulationRegion::new(9.0765, 7.3986, 3_278_000.0, 1_069.0, AreaType::Urban, "Abuja"),
1977 PopulationRegion::new(6.3350, 5.6037, 1_874_000.0, 369.0, AreaType::Urban, "Benin City"),
1978 PopulationRegion::new(4.8156, 7.0498, 1_865_000.0, 360.0, AreaType::Urban, "Port Harcourt"),
1979 PopulationRegion::new(11.8333, 13.1500, 1_336_000.0, 194.0, AreaType::Urban, "Maiduguri"),
1980 PopulationRegion::new(6.1704, 6.7410, 1_049_000.0, 228.0, AreaType::Urban, "Warri"),
1981 PopulationRegion::new(11.0992, 7.6508, 950_000.0, 216.0, AreaType::Urban, "Kaduna"),
1982 PopulationRegion::new(5.1053, 7.3646, 918_000.0, 103.0, AreaType::Urban, "Aba"),
1983 PopulationRegion::new(10.0, 8.0, 99_000_000.0, 920_000.0, AreaType::Rural, "Rural Nigeria"),
1984 ], 923_768.0)
1985 },
1986
1987 Self::NorthKorea => {
1988 // North Korea: 25.9M population, 120,540 km² area, ~62% urban.
1989 CountryPopulationData::from_regions(vec![
1990 PopulationRegion::new(39.0194, 125.7381, 3_255_000.0, 2_113.0, AreaType::Urban, "Pyongyang"),
1991 PopulationRegion::new(41.8010, 129.7857, 667_000.0, 155.0, AreaType::Urban, "Chongjin"),
1992 PopulationRegion::new(38.5072, 125.6897, 555_000.0, 132.0, AreaType::Urban, "Nampo"),
1993 PopulationRegion::new(39.9181, 127.5364, 530_000.0, 110.0, AreaType::Urban, "Hamhung"),
1994 PopulationRegion::new(40.0, 127.0, 9_800_000.0, 118_000.0, AreaType::Rural, "Rural North Korea"),
1995 ], 120_540.0)
1996 },
1997
1998 Self::Norway => {
1999 // Norway: 5.4M population, 323,802 km² area, ~83% urban.
2000 CountryPopulationData::from_regions(vec![
2001 PopulationRegion::new(59.9139, 10.7522, 1_071_000.0, 454.0, AreaType::Urban, "Oslo Metro"),
2002 PopulationRegion::new(60.3913, 5.3221, 420_000.0, 445.0, AreaType::Urban, "Bergen Metro"),
2003 PopulationRegion::new(63.4305, 10.3951, 280_000.0, 321.0, AreaType::Urban, "Trondheim Metro"),
2004 PopulationRegion::new(58.9700, 5.7331, 225_000.0, 71.0, AreaType::Urban, "Stavanger Metro"),
2005 PopulationRegion::new(68.4384, 17.4272, 86_000.0, 103.0, AreaType::Urban, "Bodø"),
2006 PopulationRegion::new(67.2803, 14.4049, 83_000.0, 98.0, AreaType::Urban, "Narvik"),
2007 PopulationRegion::new(69.6492, 18.9553, 77_000.0, 2_521.0, AreaType::Urban, "Tromsø"),
2008 PopulationRegion::new(62.0, 9.0, 670_000.0, 322_500.0, AreaType::Rural, "Rural Norway"),
2009 ], 323_802.0)
2010 },
2011
2012 Self::Oman => {
2013 // Oman: 5.2M population, 309,500 km² area, ~87% urban.
2014 CountryPopulationData::from_regions(vec![
2015 PopulationRegion::new(23.5880, 58.3829, 1_590_000.0, 3_500.0, AreaType::Urban, "Muscat Metro"),
2016 PopulationRegion::new(17.0187, 54.0924, 318_000.0, 77.0, AreaType::Urban, "Salalah"),
2017 PopulationRegion::new(23.6739, 58.1893, 267_000.0, 55.0, AreaType::Urban, "Seeb"),
2018 PopulationRegion::new(22.9333, 57.5333, 209_000.0, 45.0, AreaType::Urban, "Nizwa"),
2019 PopulationRegion::new(21.0, 57.0, 680_000.0, 305_800.0, AreaType::Rural, "Rural Oman"),
2020 ], 309_500.0)
2021 },
2022
2023 Self::Pakistan => {
2024 // Pakistan: 225.2M population, 881,913 km² area, ~37% urban.
2025 CountryPopulationData::from_regions(vec![
2026 PopulationRegion::new(24.8607, 67.0011, 14_916_000.0, 3_780.0, AreaType::Urban, "Karachi"),
2027 PopulationRegion::new(31.5497, 74.3436, 11_738_000.0, 1_772.0, AreaType::Urban, "Lahore"),
2028 PopulationRegion::new(33.6844, 73.0479, 2_301_000.0, 906.0, AreaType::Urban, "Islamabad-Rawalpindi"),
2029 PopulationRegion::new(30.1984, 71.4687, 2_065_000.0, 348.0, AreaType::Urban, "Multan"),
2030 PopulationRegion::new(31.4180, 73.0790, 1_977_000.0, 370.0, AreaType::Urban, "Faisalabad"),
2031 PopulationRegion::new(25.3960, 68.3578, 1_677_000.0, 168.0, AreaType::Urban, "Hyderabad"),
2032 PopulationRegion::new(34.0150, 71.5805, 1_594_000.0, 92.0, AreaType::Urban, "Peshawar"),
2033 PopulationRegion::new(32.0740, 72.6861, 1_388_000.0, 122.0, AreaType::Urban, "Jhang"),
2034 PopulationRegion::new(29.3956, 71.6836, 1_217_000.0, 108.0, AreaType::Urban, "Bahawalpur"),
2035 PopulationRegion::new(32.1877, 74.1945, 1_197_000.0, 103.0, AreaType::Urban, "Gujranwala"),
2036 PopulationRegion::new(31.4504, 74.5366, 1_165_000.0, 97.0, AreaType::Urban, "Gujrat"),
2037 PopulationRegion::new(30.8138, 73.4534, 1_027_000.0, 83.0, AreaType::Urban, "Sahiwal"),
2038 PopulationRegion::new(30.0, 70.0, 130_000_000.0, 876_500.0, AreaType::Rural, "Rural Pakistan"),
2039 ], 881_913.0)
2040 },
2041
2042 Self::Palau => {
2043 // Palau: 18k population, 459 km² area, ~81% urban.
2044 CountryPopulationData::from_regions(vec![
2045 PopulationRegion::new(7.3419, 134.4794, 11_000.0, 18.0, AreaType::Urban, "Koror"),
2046 PopulationRegion::new(7.5036, 134.6292, 2_500.0, 6.0, AreaType::Urban, "Airai"),
2047 PopulationRegion::new(7.5, 134.5, 500.0, 435.0, AreaType::Rural, "Rural Palau"),
2048 ], 459.0)
2049 },
2050
2051 Self::Panama => {
2052 // Panama: 4.4M population, 75,417 km² area, ~68% urban.
2053 CountryPopulationData::from_regions(vec![
2054 PopulationRegion::new(8.9824, -79.5199, 1_938_000.0, 2_561.0, AreaType::Urban, "Panama City Metro"),
2055 PopulationRegion::new(8.4333, -82.4333, 139_000.0, 30.0, AreaType::Urban, "David"),
2056 PopulationRegion::new(8.0975, -80.9826, 48_000.0, 12.0, AreaType::Urban, "Santiago"),
2057 PopulationRegion::new(9.0, -79.5, 1_410_000.0, 72_800.0, AreaType::Rural, "Rural Panama"),
2058 ], 75_417.0)
2059 },
2060
2061 Self::PapuaNewGuinea => {
2062 // Papua New Guinea: 9.1M population, 462,840 km² area, ~13% urban.
2063 CountryPopulationData::from_regions(vec![
2064 PopulationRegion::new(-9.4438, 147.1802, 383_000.0, 240.0, AreaType::Urban, "Port Moresby"),
2065 PopulationRegion::new(-6.7333, 147.0000, 77_000.0, 50.0, AreaType::Urban, "Lae"),
2066 PopulationRegion::new(-5.5600, 150.2600, 39_000.0, 20.0, AreaType::Urban, "Arawa"),
2067 PopulationRegion::new(-6.0, 147.0, 7_900_000.0, 462_500.0, AreaType::Rural, "Rural PNG"),
2068 ], 462_840.0)
2069 },
2070
2071 Self::Paraguay => {
2072 // Paraguay: 7.2M population, 406,752 km² area, ~62% urban.
2073 CountryPopulationData::from_regions(vec![
2074 PopulationRegion::new(-25.2637, -57.5759, 3_452_000.0, 2_582.0, AreaType::Urban, "Asunción Metro"),
2075 PopulationRegion::new(-25.5084, -54.6111, 301_000.0, 67.0, AreaType::Urban, "Ciudad del Este"),
2076 PopulationRegion::new(-27.3334, -55.8667, 91_000.0, 25.0, AreaType::Urban, "Encarnación"),
2077 PopulationRegion::new(-23.0, -57.0, 2_700_000.0, 404_100.0, AreaType::Rural, "Rural Paraguay"),
2078 ], 406_752.0)
2079 },
2080
2081 Self::Peru => {
2082 // Peru: 33.4M population, 1,285,216 km² area, ~79% urban.
2083 CountryPopulationData::from_regions(vec![
2084 PopulationRegion::new(-12.0464, -77.0428, 11_046_000.0, 2_672.0, AreaType::Urban, "Lima Metro"),
2085 PopulationRegion::new(-16.4090, -71.5375, 1_129_000.0, 2_923.0, AreaType::Urban, "Arequipa"),
2086 PopulationRegion::new(-8.1116, -79.0288, 975_000.0, 692.0, AreaType::Urban, "Trujillo"),
2087 PopulationRegion::new(-6.7701, -79.8223, 763_000.0, 192.0, AreaType::Urban, "Chiclayo"),
2088 PopulationRegion::new(-12.0266, -75.2041, 563_000.0, 494.0, AreaType::Urban, "Huancayo"),
2089 PopulationRegion::new(-3.7437, -73.2516, 498_000.0, 368.0, AreaType::Urban, "Iquitos"),
2090 PopulationRegion::new(-5.1783, -80.6466, 484_000.0, 277.0, AreaType::Urban, "Piura"),
2091 PopulationRegion::new(-13.5226, -71.9673, 480_000.0, 385.0, AreaType::Urban, "Cusco"),
2092 PopulationRegion::new(-10.0, -75.0, 5_500_000.0, 1_280_000.0, AreaType::Rural, "Rural Peru"),
2093 ], 1_285_216.0)
2094 },
2095
2096 Self::Philippines => {
2097 // Philippines: 111.0M population, 300,000 km² area, ~48% urban.
2098 CountryPopulationData::from_regions(vec![
2099 PopulationRegion::new(14.5995, 120.9842, 13_923_000.0, 619.0, AreaType::Urban, "Manila Metro"),
2100 PopulationRegion::new(7.0731, 125.6128, 1_776_000.0, 2_444.0, AreaType::Urban, "Davao"),
2101 PopulationRegion::new(10.3157, 123.8854, 1_013_000.0, 315.0, AreaType::Urban, "Cebu City"),
2102 PopulationRegion::new(6.9214, 122.0790, 457_000.0, 133.0, AreaType::Urban, "Zamboanga City"),
2103 PopulationRegion::new(7.8010, 123.4132, 439_000.0, 40.0, AreaType::Urban, "Cagayan de Oro"),
2104 PopulationRegion::new(10.6969, 122.5605, 433_000.0, 124.0, AreaType::Urban, "Bacolod"),
2105 PopulationRegion::new(8.4822, 124.6472, 354_000.0, 163.0, AreaType::Urban, "Butuan"),
2106 PopulationRegion::new(14.5547, 121.0244, 354_000.0, 103.0, AreaType::Urban, "Caloocan"),
2107 PopulationRegion::new(10.7202, 122.5621, 511_000.0, 279.0, AreaType::Urban, "Iloilo City"),
2108 PopulationRegion::new(11.2472, 125.0006, 188_000.0, 197.0, AreaType::Urban, "Tacloban"),
2109 PopulationRegion::new(13.1391, 123.7358, 182_000.0, 107.0, AreaType::Urban, "Legazpi"),
2110 PopulationRegion::new(9.6500, 123.8500, 172_000.0, 80.0, AreaType::Urban, "Tagbilaran"),
2111 PopulationRegion::new(16.4023, 120.5960, 170_000.0, 77.0, AreaType::Urban, "Baguio"),
2112 PopulationRegion::new(12.0, 122.0, 55_200_000.0, 296_400.0, AreaType::Rural, "Rural Philippines"),
2113 ], 300_000.0)
2114 },
2115
2116 Self::Poland => {
2117 // Poland: 37.8M population, 312,696 km² area, ~60% urban.
2118 CountryPopulationData::from_regions(vec![
2119 PopulationRegion::new(52.2297, 21.0122, 3_153_000.0, 517.0, AreaType::Urban, "Warsaw Metro"),
2120 PopulationRegion::new(50.0647, 19.9450, 1_783_000.0, 327.0, AreaType::Urban, "Kraków Metro"),
2121 PopulationRegion::new(51.7592, 19.4560, 1_095_000.0, 293.0, AreaType::Urban, "Łódź Metro"),
2122 PopulationRegion::new(51.1079, 17.0385, 1_080_000.0, 293.0, AreaType::Urban, "Wrocław Metro"),
2123 PopulationRegion::new(52.4064, 16.9252, 1_005_000.0, 262.0, AreaType::Urban, "Poznań Metro"),
2124 PopulationRegion::new(50.2649, 19.0238, 993_000.0, 164.0, AreaType::Urban, "Katowice Metro"),
2125 PopulationRegion::new(54.3520, 18.6466, 972_000.0, 416.0, AreaType::Urban, "Gdańsk Metro"),
2126 PopulationRegion::new(52.0, 19.0, 15_100_000.0, 310_400.0, AreaType::Rural, "Rural Poland"),
2127 ], 312_696.0)
2128 },
2129
2130 Self::Portugal => {
2131 // Portugal: 10.3M population, 92,090 km² area, ~66% urban.
2132 CountryPopulationData::from_regions(vec![
2133 PopulationRegion::new(38.7223, -9.1393, 2_957_000.0, 2_962.0, AreaType::Urban, "Lisbon Metro"),
2134 PopulationRegion::new(41.1579, -8.6291, 2_489_000.0, 2_395.0, AreaType::Urban, "Porto Metro"),
2135 PopulationRegion::new(40.2033, -8.4103, 235_000.0, 319.0, AreaType::Urban, "Coimbra"),
2136 PopulationRegion::new(41.5454, -8.4265, 181_000.0, 183.0, AreaType::Urban, "Braga"),
2137 PopulationRegion::new(37.0194, -7.9304, 150_000.0, 607.0, AreaType::Urban, "Faro"),
2138 PopulationRegion::new(32.6333, -16.9000, 112_000.0, 828.0, AreaType::Urban, "Funchal"),
2139 PopulationRegion::new(38.5667, -7.9000, 110_000.0, 314.0, AreaType::Urban, "Évora"),
2140 PopulationRegion::new(41.5333, -8.6167, 101_000.0, 183.0, AreaType::Urban, "Viana do Castelo"),
2141 PopulationRegion::new(40.0, -8.0, 3_100_000.0, 86_200.0, AreaType::Rural, "Rural Portugal"),
2142 ], 92_090.0)
2143 },
2144
2145 Self::Qatar => {
2146 // Qatar: 2.8M population, 11,586 km² area, ~99% urban.
2147 CountryPopulationData::from_regions(vec![
2148 PopulationRegion::new(25.2854, 51.5310, 1_514_000.0, 132.0, AreaType::Urban, "Doha"),
2149 PopulationRegion::new(25.3548, 51.2496, 765_000.0, 90.0, AreaType::Urban, "Al Rayyan"),
2150 PopulationRegion::new(25.3862, 51.6017, 121_000.0, 25.0, AreaType::Urban, "Umm Salal"),
2151 PopulationRegion::new(25.4106, 51.4930, 117_000.0, 20.0, AreaType::Urban, "Al Daayen"),
2152 PopulationRegion::new(25.3, 51.2, 30_000.0, 11_300.0, AreaType::Rural, "Rural Qatar"),
2153 ], 11_586.0)
2154 },
2155
2156 Self::RepublicOfTheCongo => {
2157 // Republic of the Congo: 5.7M population, 342,000 km² area, ~68% urban.
2158 CountryPopulationData::from_regions(vec![
2159 PopulationRegion::new(-4.2634, 15.2429, 2_388_000.0, 1_821.0, AreaType::Urban, "Brazzaville"),
2160 PopulationRegion::new(-4.7761, 11.8635, 1_214_000.0, 79.0, AreaType::Urban, "Pointe-Noire"),
2161 PopulationRegion::new(-4.2097, 12.6547, 58_000.0, 20.0, AreaType::Urban, "Dolisie"),
2162 PopulationRegion::new(-2.0, 15.0, 1_820_000.0, 340_100.0, AreaType::Rural, "Rural Congo"),
2163 ], 342_000.0)
2164 },
2165
2166 Self::Romania => {
2167 // Romania: 19.0M population, 238,397 km² area, ~54% urban.
2168 CountryPopulationData::from_regions(vec![
2169 PopulationRegion::new(44.4268, 26.1025, 2_155_000.0, 228.0, AreaType::Urban, "Bucharest"),
2170 PopulationRegion::new(46.7712, 23.6236, 325_000.0, 179.0, AreaType::Urban, "Cluj-Napoca"),
2171 PopulationRegion::new(47.1585, 27.6014, 318_000.0, 94.0, AreaType::Urban, "Iași"),
2172 PopulationRegion::new(45.7494, 21.2272, 318_000.0, 138.0, AreaType::Urban, "Timișoara"),
2173 PopulationRegion::new(44.1810, 28.6348, 283_000.0, 231.0, AreaType::Urban, "Constanța"),
2174 PopulationRegion::new(46.0, 25.0, 8_750_000.0, 237_300.0, AreaType::Rural, "Rural Romania"),
2175 ], 238_397.0)
2176 },
2177
2178 Self::Russia => {
2179 // Russia: 143.4M population, 17,098,242 km² area, ~75% urban.
2180 CountryPopulationData::from_regions(vec![
2181 PopulationRegion::new(55.7558, 37.6173, 12_641_000.0, 2_561.0, AreaType::Urban, "Moscow"),
2182 PopulationRegion::new(59.9311, 30.3609, 5_384_000.0, 1_439.0, AreaType::Urban, "St. Petersburg"),
2183 PopulationRegion::new(55.0084, 82.9357, 1_625_000.0, 505.0, AreaType::Urban, "Novosibirsk"),
2184 PopulationRegion::new(56.8389, 60.6057, 1_494_000.0, 468.0, AreaType::Urban, "Yekaterinburg"),
2185 PopulationRegion::new(56.0269, 92.8672, 1_094_000.0, 354.0, AreaType::Urban, "Krasnoyarsk"),
2186 PopulationRegion::new(53.2001, 50.1500, 1_165_000.0, 541.0, AreaType::Urban, "Samara"),
2187 PopulationRegion::new(58.0105, 56.2502, 1_056_000.0, 799.0, AreaType::Urban, "Perm"),
2188 PopulationRegion::new(55.3333, 86.0833, 1_075_000.0, 293.0, AreaType::Urban, "Novokuznetsk"),
2189 PopulationRegion::new(55.7540, 48.7439, 1_255_000.0, 425.0, AreaType::Urban, "Kazan"),
2190 PopulationRegion::new(52.0300, 113.5000, 1_054_000.0, 500.0, AreaType::Urban, "Chita"),
2191 PopulationRegion::new(54.7388, 55.9721, 1_126_000.0, 479.0, AreaType::Urban, "Ufa"),
2192 PopulationRegion::new(53.1958, 45.0183, 1_019_000.0, 353.0, AreaType::Urban, "Volgograd"),
2193 PopulationRegion::new(47.2357, 39.7015, 1_119_000.0, 348.0, AreaType::Urban, "Rostov-on-Don"),
2194 PopulationRegion::new(55.0415, 73.3686, 1_174_000.0, 573.0, AreaType::Urban, "Omsk"),
2195 PopulationRegion::new(43.1056, 131.8735, 606_000.0, 325.0, AreaType::Urban, "Vladivostok"),
2196 PopulationRegion::new(60.0, 90.0, 29_700_000.0, 17_090_000.0, AreaType::Rural, "Rural Russia"),
2197 ], 17_098_242.0)
2198 },
2199
2200 Self::Rwanda => {
2201 // Rwanda: 13.3M population, 26,338 km² area, ~17% urban.
2202 CountryPopulationData::from_regions(vec![
2203 PopulationRegion::new(-1.9403, 30.0587, 1_204_000.0, 730.0, AreaType::Urban, "Kigali"),
2204 PopulationRegion::new(-2.4973, 28.9075, 66_000.0, 20.0, AreaType::Urban, "Gisenyi"),
2205 PopulationRegion::new(-1.6965, 29.2394, 63_000.0, 18.0, AreaType::Urban, "Ruhengeri"),
2206 PopulationRegion::new(-2.0, 29.5, 11_000_000.0, 25_600.0, AreaType::Rural, "Rural Rwanda"),
2207 ], 26_338.0)
2208 },
2209
2210 Self::SaintKittsAndNevis => {
2211 // Saint Kitts and Nevis: 54k population, 261 km² area, ~31% urban.
2212 CountryPopulationData::from_regions(vec![
2213 PopulationRegion::new(17.3026, -62.7177, 13_000.0, 7.0, AreaType::Urban, "Basseterre"),
2214 PopulationRegion::new(17.3578, -62.7822, 2_500.0, 3.0, AreaType::Urban, "Sandy Point Town"),
2215 PopulationRegion::new(17.1408, -62.6228, 1_800.0, 2.0, AreaType::Urban, "Charlestown"),
2216 PopulationRegion::new(17.3, -62.7, 32_700.0, 249.0, AreaType::Rural, "Rural St Kitts and Nevis"),
2217 ], 261.0)
2218 },
2219
2220 Self::SaintLucia => {
2221 // Saint Lucia: 185k population, 617 km² area, ~19% urban.
2222 CountryPopulationData::from_regions(vec![
2223 PopulationRegion::new(14.0101, -60.9875, 22_000.0, 11.0, AreaType::Urban, "Castries"),
2224 PopulationRegion::new(13.9740, -61.0242, 6_000.0, 5.0, AreaType::Urban, "Gros Islet"),
2225 PopulationRegion::new(13.8412, -60.9605, 5_000.0, 4.0, AreaType::Urban, "Vieux Fort"),
2226 PopulationRegion::new(13.9, -61.0, 138_000.0, 597.0, AreaType::Rural, "Rural Saint Lucia"),
2227 ], 617.0)
2228 },
2229
2230 Self::SaintVincentAndTheGrenadines => {
2231 // Saint Vincent and the Grenadines: 110k population, 389 km² area, ~53% urban.
2232 CountryPopulationData::from_regions(vec![
2233 PopulationRegion::new(13.1600, -61.2248, 27_000.0, 13.0, AreaType::Urban, "Kingstown"),
2234 PopulationRegion::new(13.0031, -61.2397, 1_200.0, 2.0, AreaType::Urban, "Port Elizabeth"),
2235 PopulationRegion::new(13.1526, -61.1964, 1_000.0, 1.0, AreaType::Urban, "Georgetown"),
2236 PopulationRegion::new(13.1, -61.2, 49_800.0, 373.0, AreaType::Rural, "Rural St Vincent"),
2237 ], 389.0)
2238 },
2239
2240 Self::Samoa => {
2241 // Samoa: 200k population, 2,842 km² area, ~18% urban.
2242 CountryPopulationData::from_regions(vec![
2243 PopulationRegion::new(-13.8314, -171.7518, 36_000.0, 60.0, AreaType::Urban, "Apia"),
2244 PopulationRegion::new(-13.8, -172.0, 164_000.0, 2_782.0, AreaType::Rural, "Rural Samoa"),
2245 ], 2_842.0)
2246 },
2247
2248 Self::SanMarino => {
2249 // San Marino: 34k population, 61 km² area, ~97% urban.
2250 CountryPopulationData::from_regions(vec![
2251 PopulationRegion::new(43.9424, 12.4578, 4_000.0, 7.0, AreaType::Urban, "San Marino City"),
2252 PopulationRegion::new(43.9333, 12.4167, 29_000.0, 54.0, AreaType::Urban, "Urban San Marino"),
2253 ], 61.0)
2254 },
2255
2256 Self::SaoTomeAndPrincipe => {
2257 // São Tomé and Príncipe: 223k population, 964 km² area, ~74% urban.
2258 CountryPopulationData::from_regions(vec![
2259 PopulationRegion::new(0.3365, 6.7273, 90_000.0, 17.0, AreaType::Urban, "São Tomé"),
2260 PopulationRegion::new(1.6333, 7.4167, 8_000.0, 4.0, AreaType::Urban, "Santo António"),
2261 PopulationRegion::new(0.2017, 6.5317, 6_000.0, 3.0, AreaType::Urban, "Neves"),
2262 PopulationRegion::new(0.3, 6.7, 44_000.0, 940.0, AreaType::Rural, "Rural São Tomé"),
2263 ], 964.0)
2264 },
2265
2266 Self::SaudiArabia => {
2267 // Saudi Arabia: 35.0M population, 2,149,690 km² area, ~84% urban.
2268 CountryPopulationData::from_regions(vec![
2269 PopulationRegion::new(24.7136, 46.6753, 7_538_000.0, 1_913.0, AreaType::Urban, "Riyadh"),
2270 PopulationRegion::new(21.3891, 39.8579, 4_610_000.0, 1_686.0, AreaType::Urban, "Jeddah"),
2271 PopulationRegion::new(21.4267, 39.8261, 2_042_000.0, 760.0, AreaType::Urban, "Mecca"),
2272 PopulationRegion::new(24.4861, 39.6111, 1_387_000.0, 589.0, AreaType::Urban, "Medina"),
2273 PopulationRegion::new(26.4207, 50.0888, 1_252_000.0, 672.0, AreaType::Urban, "Dammam"),
2274 PopulationRegion::new(18.3004, 42.7103, 949_000.0, 334.0, AreaType::Urban, "Abha"),
2275 PopulationRegion::new(24.6877, 46.7219, 814_000.0, 280.0, AreaType::Urban, "Kharj"),
2276 PopulationRegion::new(26.3267, 43.9750, 768_000.0, 263.0, AreaType::Urban, "Buraydah"),
2277 PopulationRegion::new(21.2700, 40.4158, 689_000.0, 235.0, AreaType::Urban, "Taif"),
2278 PopulationRegion::new(16.8892, 42.5511, 668_000.0, 228.0, AreaType::Urban, "Jazan"),
2279 PopulationRegion::new(24.0, 45.0, 2_900_000.0, 2_145_000.0, AreaType::Rural, "Rural Saudi Arabia"),
2280 ], 2_149_690.0)
2281 },
2282
2283 Self::Senegal => {
2284 // Senegal: 17.2M population, 196,722 km² area, ~48% urban.
2285 CountryPopulationData::from_regions(vec![
2286 PopulationRegion::new(14.7167, -17.4677, 3_140_000.0, 82.0, AreaType::Urban, "Dakar"),
2287 PopulationRegion::new(12.5686, -16.2436, 230_000.0, 40.0, AreaType::Urban, "Ziguinchor"),
2288 PopulationRegion::new(14.6937, -17.4441, 197_000.0, 30.0, AreaType::Urban, "Thiès"),
2289 PopulationRegion::new(14.0, -16.0, 8_900_000.0, 196_600.0, AreaType::Rural, "Rural Senegal"),
2290 ], 196_722.0)
2291 },
2292
2293 Self::Serbia => {
2294 // Serbia: 6.8M population, 88,361 km² area, ~57% urban.
2295 CountryPopulationData::from_regions(vec![
2296 PopulationRegion::new(44.7866, 20.4489, 1_405_000.0, 360.0, AreaType::Urban, "Belgrade"),
2297 PopulationRegion::new(45.2671, 19.8335, 306_000.0, 277.0, AreaType::Urban, "Novi Sad"),
2298 PopulationRegion::new(43.3209, 21.8954, 187_000.0, 113.0, AreaType::Urban, "Niš"),
2299 PopulationRegion::new(44.0144, 20.9114, 147_000.0, 77.0, AreaType::Urban, "Kragujevac"),
2300 PopulationRegion::new(44.5, 20.5, 2_920_000.0, 87_500.0, AreaType::Rural, "Rural Serbia"),
2301 ], 88_361.0)
2302 },
2303
2304 Self::Seychelles => {
2305 // Seychelles: 99k population, 452 km² area, ~58% urban.
2306 CountryPopulationData::from_regions(vec![
2307 PopulationRegion::new(-4.6827, 55.4804, 28_000.0, 20.0, AreaType::Urban, "Victoria"),
2308 PopulationRegion::new(-4.7667, 55.5167, 8_500.0, 6.0, AreaType::Urban, "Anse Royale"),
2309 PopulationRegion::new(-4.7833, 55.5333, 4_000.0, 3.0, AreaType::Urban, "Beau Vallon"),
2310 PopulationRegion::new(-4.3167, 55.7667, 3_500.0, 2.0, AreaType::Urban, "Baie Lazare"),
2311 PopulationRegion::new(-4.6, 55.5, 26_000.0, 421.0, AreaType::Rural, "Rural Seychelles"),
2312 ], 452.0)
2313 },
2314
2315 Self::SierraLeone => {
2316 // Sierra Leone: 8.1M population, 71,740 km² area, ~43% urban.
2317 CountryPopulationData::from_regions(vec![
2318 PopulationRegion::new(8.4656, -13.2317, 1_236_000.0, 68.0, AreaType::Urban, "Freetown"),
2319 PopulationRegion::new(7.8765, -11.1875, 241_000.0, 30.0, AreaType::Urban, "Bo"),
2320 PopulationRegion::new(8.4821, -11.1885, 128_000.0, 20.0, AreaType::Urban, "Kenema"),
2321 PopulationRegion::new(8.5, -12.0, 4_600_000.0, 71_600.0, AreaType::Rural, "Rural Sierra Leone"),
2322 ], 71_740.0)
2323 },
2324
2325 Self::Singapore => {
2326 // Singapore: 5.7M population, 728 km² area, ~100% urban.
2327 CountryPopulationData::from_regions(vec![
2328 PopulationRegion::new(1.3521, 103.8198, 5_686_000.0, 728.0, AreaType::Urban, "Singapore"),
2329 ], 728.0)
2330 },
2331
2332 Self::Slovakia => {
2333 // Slovakia: 5.4M population, 49,037 km² area, ~54% urban.
2334 CountryPopulationData::from_regions(vec![
2335 PopulationRegion::new(48.1486, 17.1077, 475_000.0, 368.0, AreaType::Urban, "Bratislava"),
2336 PopulationRegion::new(48.9961, 21.2393, 239_000.0, 243.0, AreaType::Urban, "Košice"),
2337 PopulationRegion::new(49.0683, 18.9237, 180_000.0, 193.0, AreaType::Urban, "Prešov"),
2338 PopulationRegion::new(48.7163, 21.2611, 95_000.0, 80.0, AreaType::Urban, "Nitra"),
2339 PopulationRegion::new(48.5, 19.5, 2_500_000.0, 48_200.0, AreaType::Rural, "Rural Slovakia"),
2340 ], 49_037.0)
2341 },
2342
2343 Self::Slovenia => {
2344 // Slovenia: 2.1M population, 20,273 km² area, ~55% urban.
2345 CountryPopulationData::from_regions(vec![
2346 PopulationRegion::new(46.0569, 14.5058, 537_000.0, 555.0, AreaType::Urban, "Ljubljana Metro"),
2347 PopulationRegion::new(46.5547, 15.6466, 141_000.0, 168.0, AreaType::Urban, "Maribor"),
2348 PopulationRegion::new(46.2397, 15.2686, 55_000.0, 50.0, AreaType::Urban, "Celje"),
2349 PopulationRegion::new(46.2, 14.5, 945_000.0, 19_500.0, AreaType::Rural, "Rural Slovenia"),
2350 ], 20_273.0)
2351 },
2352
2353 Self::SolomonIslands => {
2354 // Solomon Islands: 703k population, 28,896 km² area, ~24% urban.
2355 CountryPopulationData::from_regions(vec![
2356 PopulationRegion::new(-9.4319, 159.9556, 93_000.0, 22.0, AreaType::Urban, "Honiara"),
2357 PopulationRegion::new(-8.7667, 160.7000, 6_200.0, 5.0, AreaType::Urban, "Auki"),
2358 PopulationRegion::new(-10.5667, 161.7667, 5_100.0, 4.0, AreaType::Urban, "Gizo"),
2359 PopulationRegion::new(-8.1333, 157.2000, 4_500.0, 3.0, AreaType::Urban, "Buala"),
2360 PopulationRegion::new(-9.0, 160.0, 519_200.0, 28_862.0, AreaType::Rural, "Rural Solomon Islands"),
2361 ], 28_896.0)
2362 },
2363
2364 Self::Somalia => {
2365 // Somalia: 16.4M population, 637,657 km² area, ~46% urban.
2366 CountryPopulationData::from_regions(vec![
2367 PopulationRegion::new(2.0469, 45.3182, 2_610_000.0, 91.0, AreaType::Urban, "Mogadishu"),
2368 PopulationRegion::new(9.5200, 44.0700, 515_000.0, 50.0, AreaType::Urban, "Hargeisa"),
2369 PopulationRegion::new(0.5667, 47.5000, 437_000.0, 40.0, AreaType::Urban, "Merca"),
2370 PopulationRegion::new(6.0, 46.0, 8_800_000.0, 637_500.0, AreaType::Rural, "Rural Somalia"),
2371 ], 637_657.0)
2372 },
2373
2374 Self::SouthAfrica => {
2375 // South Africa: 60.0M population, 1,221,037 km² area, ~67% urban.
2376 CountryPopulationData::from_regions(vec![
2377 PopulationRegion::new(-26.2041, 28.0473, 11_191_000.0, 6_856.0, AreaType::Urban, "Johannesburg Metro"),
2378 PopulationRegion::new(-33.9249, 18.4241, 4_710_000.0, 2_446.0, AreaType::Urban, "Cape Town Metro"),
2379 PopulationRegion::new(-29.8587, 31.0292, 3_969_000.0, 2_556.0, AreaType::Urban, "Durban Metro"),
2380 PopulationRegion::new(-25.7479, 28.2293, 3_888_000.0, 6_197.0, AreaType::Urban, "Pretoria Metro"),
2381 PopulationRegion::new(-33.9608, 25.6022, 770_000.0, 947.0, AreaType::Urban, "Port Elizabeth Metro"),
2382 PopulationRegion::new(-32.0833, 18.8666, 348_000.0, 13_647.0, AreaType::Urban, "Saldanha Bay"),
2383 PopulationRegion::new(-33.0167, 27.9, 312_000.0, 6_357.0, AreaType::Urban, "East London"),
2384 PopulationRegion::new(-28.7282, 24.7499, 255_000.0, 164.0, AreaType::Urban, "Kimberley"),
2385 PopulationRegion::new(-26.6667, 27.0833, 232_000.0, 38.0, AreaType::Urban, "Welkom"),
2386 PopulationRegion::new(-29.0852, 26.1596, 222_000.0, 6_283.0, AreaType::Urban, "Bloemfontein"),
2387 PopulationRegion::new(-29.0, 24.0, 18_000_000.0, 1_208_000.0, AreaType::Rural, "Rural South Africa"),
2388 ], 1_221_037.0)
2389 },
2390
2391 Self::SouthKorea => {
2392 // South Korea: 51.7M population, 100,210 km² area, ~81% urban.
2393 CountryPopulationData::from_regions(vec![
2394 PopulationRegion::new(37.5665, 126.9780, 25_674_000.0, 11_690.0, AreaType::Urban, "Seoul Metro"),
2395 PopulationRegion::new(35.1796, 129.0756, 3_404_000.0, 770.0, AreaType::Urban, "Busan"),
2396 PopulationRegion::new(37.4563, 126.7052, 3_032_000.0, 1_045.0, AreaType::Urban, "Incheon"),
2397 PopulationRegion::new(35.8714, 128.6014, 2_431_000.0, 884.0, AreaType::Urban, "Daegu"),
2398 PopulationRegion::new(35.1595, 126.8526, 1_478_000.0, 501.0, AreaType::Urban, "Gwangju"),
2399 PopulationRegion::new(36.3504, 127.3845, 1_542_000.0, 540.0, AreaType::Urban, "Daejeon"),
2400 PopulationRegion::new(35.5384, 129.3114, 1_046_000.0, 1_058.0, AreaType::Urban, "Ulsan"),
2401 PopulationRegion::new(37.8813, 127.7298, 983_000.0, 872.0, AreaType::Urban, "Chuncheon"),
2402 PopulationRegion::new(36.5, 127.5, 6_700_000.0, 85_300.0, AreaType::Rural, "Rural South Korea"),
2403 ], 100_210.0)
2404 },
2405
2406 Self::SouthSudan => {
2407 // South Sudan: 11.4M population, 619,745 km² area, ~20% urban.
2408 CountryPopulationData::from_regions(vec![
2409 PopulationRegion::new(4.8594, 31.5713, 525_000.0, 52.0, AreaType::Urban, "Juba"),
2410 PopulationRegion::new(9.5370, 31.6603, 90_000.0, 20.0, AreaType::Urban, "Wau"),
2411 PopulationRegion::new(6.8100, 29.6950, 61_000.0, 15.0, AreaType::Urban, "Yei"),
2412 PopulationRegion::new(7.0, 30.0, 9_100_000.0, 619_600.0, AreaType::Rural, "Rural South Sudan"),
2413 ], 619_745.0)
2414 },
2415
2416 Self::Spain => {
2417 // Spain: 47.4M population, 505,992 km² area, ~81% urban.
2418 CountryPopulationData::from_regions(vec![
2419 PopulationRegion::new(40.4168, -3.7038, 6_751_000.0, 606.0, AreaType::Urban, "Madrid Metro"),
2420 PopulationRegion::new(41.3851, 2.1734, 5_609_000.0, 636.0, AreaType::Urban, "Barcelona Metro"),
2421 PopulationRegion::new(39.4699, -0.3763, 2_560_000.0, 628.0, AreaType::Urban, "Valencia Metro"),
2422 PopulationRegion::new(37.3891, -5.9845, 1_949_000.0, 4_906.0, AreaType::Urban, "Seville Metro"),
2423 PopulationRegion::new(36.7213, -4.4217, 1_661_000.0, 1_336.0, AreaType::Urban, "Málaga Metro"),
2424 PopulationRegion::new(43.2627, -2.9253, 1_037_000.0, 497.0, AreaType::Urban, "Bilbao Metro"),
2425 PopulationRegion::new(39.5750, 2.6502, 634_000.0, 209.0, AreaType::Urban, "Palma"),
2426 PopulationRegion::new(37.9922, -1.1307, 493_000.0, 558.0, AreaType::Urban, "Murcia"),
2427 PopulationRegion::new(36.5344, -6.2994, 477_000.0, 32.0, AreaType::Urban, "Cádiz"),
2428 PopulationRegion::new(37.8882, -4.7794, 472_000.0, 38.0, AreaType::Urban, "Córdoba"),
2429 PopulationRegion::new(40.0, -4.0, 7_600_000.0, 497_000.0, AreaType::Rural, "Rural Spain"),
2430 ], 505_992.0)
2431 },
2432
2433 Self::SriLanka => {
2434 // Sri Lanka: 21.9M population, 65,610 km² area, ~19% urban.
2435 CountryPopulationData::from_regions(vec![
2436 PopulationRegion::new(6.9271, 79.8612, 753_000.0, 37.0, AreaType::Urban, "Colombo"),
2437 PopulationRegion::new(7.4675, 80.6234, 169_000.0, 26.0, AreaType::Urban, "Kurunegala"),
2438 PopulationRegion::new(7.2906, 80.6337, 140_000.0, 30.0, AreaType::Urban, "Kandy"),
2439 PopulationRegion::new(8.0, 80.5, 17_700_000.0, 65_500.0, AreaType::Rural, "Rural Sri Lanka"),
2440 ], 65_610.0)
2441 },
2442
2443 Self::Sudan => {
2444 // Sudan: 44.9M population, 1,886,068 km² area, ~35% urban.
2445 CountryPopulationData::from_regions(vec![
2446 PopulationRegion::new(15.5007, 32.5599, 5_829_000.0, 1_010.0, AreaType::Urban, "Khartoum Metro"),
2447 PopulationRegion::new(19.6158, 37.2164, 524_000.0, 52.0, AreaType::Urban, "Port Sudan"),
2448 PopulationRegion::new(13.1833, 30.2167, 524_000.0, 75.0, AreaType::Urban, "Nyala"),
2449 PopulationRegion::new(11.8659, 34.3869, 344_000.0, 40.0, AreaType::Urban, "Kusti"),
2450 PopulationRegion::new(15.0, 30.0, 29_200_000.0, 1_884_900.0, AreaType::Rural, "Rural Sudan"),
2451 ], 1_886_068.0)
2452 },
2453
2454 Self::Suriname => {
2455 // Suriname: 598k population, 163,820 km² area, ~66% urban.
2456 CountryPopulationData::from_regions(vec![
2457 PopulationRegion::new(5.8521, -55.2038, 241_000.0, 182.0, AreaType::Urban, "Paramaribo"),
2458 PopulationRegion::new(5.8, -55.2, 203_000.0, 163_600.0, AreaType::Rural, "Rural Suriname"),
2459 ], 163_820.0)
2460 },
2461
2462 Self::Swaziland => {
2463 // Eswatini: 1.2M population, 17,364 km² area, ~24% urban.
2464 CountryPopulationData::from_regions(vec![
2465 PopulationRegion::new(-26.3054, 31.1367, 95_000.0, 81.0, AreaType::Urban, "Mbabane"),
2466 PopulationRegion::new(-26.4833, 31.2000, 76_000.0, 60.0, AreaType::Urban, "Manzini"),
2467 PopulationRegion::new(-26.5, 31.5, 914_000.0, 17_200.0, AreaType::Rural, "Rural Eswatini"),
2468 ], 17_364.0)
2469 },
2470
2471 Self::Sweden => {
2472 // Sweden: 10.4M population, 450,295 km² area, ~88% urban.
2473 CountryPopulationData::from_regions(vec![
2474 PopulationRegion::new(59.3293, 18.0686, 2_415_000.0, 1_912.0, AreaType::Urban, "Stockholm Metro"),
2475 PopulationRegion::new(57.7089, 11.9746, 1_089_000.0, 896.0, AreaType::Urban, "Gothenburg Metro"),
2476 PopulationRegion::new(55.6050, 13.0038, 749_000.0, 347.0, AreaType::Urban, "Malmö Metro"),
2477 PopulationRegion::new(59.8586, 17.6389, 177_000.0, 49.0, AreaType::Urban, "Uppsala"),
2478 PopulationRegion::new(62.3908, 17.3069, 127_000.0, 30.0, AreaType::Urban, "Sundsvall"),
2479 PopulationRegion::new(63.8258, 20.2630, 123_000.0, 29.0, AreaType::Urban, "Umeå"),
2480 PopulationRegion::new(58.4108, 15.6214, 110_000.0, 25.0, AreaType::Urban, "Linköping"),
2481 PopulationRegion::new(56.1612, 15.5869, 93_000.0, 20.0, AreaType::Urban, "Karlskrona"),
2482 PopulationRegion::new(60.0, 15.0, 800_000.0, 447_000.0, AreaType::Rural, "Rural Sweden"),
2483 ], 450_295.0)
2484 },
2485
2486 Self::Switzerland => {
2487 // Switzerland: 8.7M population, 41,285 km² area, ~74% urban.
2488 CountryPopulationData::from_regions(vec![
2489 PopulationRegion::new(47.3769, 8.5417, 1_408_000.0, 1_729.0, AreaType::Urban, "Zürich Metro"),
2490 PopulationRegion::new(46.2044, 6.1432, 609_000.0, 343.0, AreaType::Urban, "Geneva Metro"),
2491 PopulationRegion::new(47.5596, 7.5886, 537_000.0, 559.0, AreaType::Urban, "Basel Metro"),
2492 PopulationRegion::new(46.9480, 7.4474, 423_000.0, 233.0, AreaType::Urban, "Bern Metro"),
2493 PopulationRegion::new(46.5197, 6.6323, 438_000.0, 376.0, AreaType::Urban, "Lausanne Metro"),
2494 PopulationRegion::new(47.0, 8.5, 2_260_000.0, 38_400.0, AreaType::Rural, "Rural Switzerland"),
2495 ], 41_285.0)
2496 },
2497
2498 Self::Syria => {
2499 // Syria: 18.5M population, 185,180 km² area, ~56% urban.
2500 CountryPopulationData::from_regions(vec![
2501 PopulationRegion::new(33.5138, 36.2765, 2_211_000.0, 105.0, AreaType::Urban, "Damascus"),
2502 PopulationRegion::new(36.2021, 37.1343, 1_917_000.0, 190.0, AreaType::Urban, "Aleppo"),
2503 PopulationRegion::new(33.5074, 36.3097, 968_000.0, 60.0, AreaType::Urban, "Rif Dimashq"),
2504 PopulationRegion::new(34.7305, 36.7137, 809_000.0, 102.0, AreaType::Urban, "Homs"),
2505 PopulationRegion::new(35.0, 38.0, 8_100_000.0, 184_800.0, AreaType::Rural, "Rural Syria"),
2506 ], 185_180.0)
2507 },
2508
2509 Self::Taiwan => {
2510 // Taiwan: 23.6M population, 36,193 km² area, ~79% urban.
2511 CountryPopulationData::from_regions(vec![
2512 PopulationRegion::new(25.0330, 121.5654, 7_047_000.0, 2_457.0, AreaType::Urban, "Taipei Metro"),
2513 PopulationRegion::new(22.6273, 120.3014, 2_773_000.0, 176.0, AreaType::Urban, "Kaohsiung"),
2514 PopulationRegion::new(24.1477, 120.6736, 2_820_000.0, 2_192.0, AreaType::Urban, "Taichung"),
2515 PopulationRegion::new(22.9998, 120.2269, 764_000.0, 69.0, AreaType::Urban, "Tainan"),
2516 PopulationRegion::new(24.8015, 120.9715, 218_000.0, 29.0, AreaType::Urban, "Hsinchu"),
2517 PopulationRegion::new(24.5, 121.0, 4_950_000.0, 31_000.0, AreaType::Rural, "Rural Taiwan"),
2518 ], 36_193.0)
2519 },
2520
2521 Self::Tajikistan => {
2522 // Tajikistan: 9.7M population, 143,100 km² area, ~27% urban.
2523 CountryPopulationData::from_regions(vec![
2524 PopulationRegion::new(38.5598, 68.7870, 912_000.0, 124.0, AreaType::Urban, "Dushanbe"),
2525 PopulationRegion::new(40.2833, 69.6333, 150_000.0, 35.0, AreaType::Urban, "Khujand"),
2526 PopulationRegion::new(38.5484, 68.7790, 109_000.0, 25.0, AreaType::Urban, "Bokhtar"),
2527 PopulationRegion::new(39.0, 70.0, 7_100_000.0, 142_900.0, AreaType::Rural, "Rural Tajikistan"),
2528 ], 143_100.0)
2529 },
2530
2531 Self::Tanzania => {
2532 // Tanzania: 61.5M population, 945,087 km² area, ~35% urban.
2533 CountryPopulationData::from_regions(vec![
2534 PopulationRegion::new(-6.7924, 39.2083, 6_368_000.0, 1_590.0, AreaType::Urban, "Dar es Salaam"),
2535 PopulationRegion::new(-3.3869, 36.6830, 621_000.0, 83.0, AreaType::Urban, "Arusha"),
2536 PopulationRegion::new(-5.0689, 39.0986, 540_000.0, 65.0, AreaType::Urban, "Tanga"),
2537 PopulationRegion::new(-2.5166, 32.9000, 540_000.0, 70.0, AreaType::Urban, "Mwanza"),
2538 PopulationRegion::new(-5.9095, 35.7516, 436_000.0, 58.0, AreaType::Urban, "Dodoma"),
2539 PopulationRegion::new(-8.9094, 33.4608, 414_000.0, 53.0, AreaType::Urban, "Mbeya"),
2540 PopulationRegion::new(-4.8723, 29.6420, 303_000.0, 38.0, AreaType::Urban, "Kigoma"),
2541 PopulationRegion::new(-10.2667, 40.1833, 280_000.0, 35.0, AreaType::Urban, "Mtwara"),
2542 PopulationRegion::new(-6.0, 35.0, 37_500_000.0, 943_200.0, AreaType::Rural, "Rural Tanzania"),
2543 ], 945_087.0)
2544 },
2545
2546 Self::Thailand => {
2547 // Thailand: 70.0M population, 513,120 km² area, ~51% urban.
2548 CountryPopulationData::from_regions(vec![
2549 PopulationRegion::new(13.7563, 100.5018, 11_070_000.0, 1_569.0, AreaType::Urban, "Bangkok Metro"),
2550 PopulationRegion::new(7.0086, 100.4733, 439_000.0, 70.0, AreaType::Urban, "Hat Yai"),
2551 PopulationRegion::new(18.7883, 98.9853, 435_000.0, 40.0, AreaType::Urban, "Chiang Mai"),
2552 PopulationRegion::new(14.9714, 102.1027, 358_000.0, 46.0, AreaType::Urban, "Nakhon Ratchasima"),
2553 PopulationRegion::new(16.4322, 102.8236, 355_000.0, 40.0, AreaType::Urban, "Khon Kaen"),
2554 PopulationRegion::new(12.6095, 102.1038, 315_000.0, 35.0, AreaType::Urban, "Chonburi"),
2555 PopulationRegion::new(16.8211, 100.2668, 300_000.0, 32.0, AreaType::Urban, "Phitsanulok"),
2556 PopulationRegion::new(15.0, 100.0, 33_400_000.0, 511_400.0, AreaType::Rural, "Rural Thailand"),
2557 ], 513_120.0)
2558 },
2559
2560 Self::Togo => {
2561 // Togo: 8.5M population, 56,785 km² area, ~43% urban.
2562 CountryPopulationData::from_regions(vec![
2563 PopulationRegion::new(6.1256, 1.2254, 2_188_000.0, 280.0, AreaType::Urban, "Lomé"),
2564 PopulationRegion::new(8.9831, 1.1444, 168_000.0, 30.0, AreaType::Urban, "Sokodé"),
2565 PopulationRegion::new(9.5511, 1.1865, 158_000.0, 25.0, AreaType::Urban, "Kara"),
2566 PopulationRegion::new(8.0, 1.0, 4_800_000.0, 56_400.0, AreaType::Rural, "Rural Togo"),
2567 ], 56_785.0)
2568 },
2569
2570 Self::Tonga => {
2571 // Tonga: 107k population, 747 km² area, ~23% urban.
2572 CountryPopulationData::from_regions(vec![
2573 PopulationRegion::new(-21.1393, -175.2049, 23_000.0, 30.0, AreaType::Urban, "Nukuʻalofa"),
2574 PopulationRegion::new(-21.1333, -175.2, 6_000.0, 8.0, AreaType::Urban, "Neiafu"),
2575 PopulationRegion::new(-20.0333, -174.3667, 3_500.0, 5.0, AreaType::Urban, "Haveluloto"),
2576 PopulationRegion::new(-18.6500, -173.9833, 3_000.0, 4.0, AreaType::Urban, "Vava'u"),
2577 PopulationRegion::new(-21.0, -175.0, 69_500.0, 700.0, AreaType::Rural, "Rural Tonga"),
2578 ], 747.0)
2579 },
2580
2581 Self::TrinidadAndTobago => {
2582 // Trinidad and Tobago: 1.4M population, 5,130 km² area, ~53% urban.
2583 CountryPopulationData::from_regions(vec![
2584 PopulationRegion::new(10.6596, -61.5086, 545_000.0, 547.0, AreaType::Urban, "Port of Spain Metro"),
2585 PopulationRegion::new(10.2667, -61.4667, 83_000.0, 20.0, AreaType::Urban, "San Fernando"),
2586 PopulationRegion::new(10.6425, -61.4013, 61_000.0, 15.0, AreaType::Urban, "Arima"),
2587 PopulationRegion::new(10.5333, -61.4119, 58_000.0, 13.0, AreaType::Urban, "Chaguanas"),
2588 PopulationRegion::new(11.1891, -60.7525, 18_000.0, 5.0, AreaType::Urban, "Scarborough"),
2589 PopulationRegion::new(10.5, -61.3, 570_000.0, 4_530.0, AreaType::Rural, "Rural Trinidad"),
2590 ], 5_130.0)
2591 },
2592
2593 Self::Tunisia => {
2594 // Tunisia: 12.0M population, 163,610 km² area, ~70% urban.
2595 CountryPopulationData::from_regions(vec![
2596 PopulationRegion::new(36.8065, 10.1815, 2_845_000.0, 3_135.0, AreaType::Urban, "Tunis Metro"),
2597 PopulationRegion::new(35.8288, 10.6405, 742_000.0, 235.0, AreaType::Urban, "Sousse"),
2598 PopulationRegion::new(36.4514, 10.7356, 291_000.0, 63.0, AreaType::Urban, "Nabeul"),
2599 PopulationRegion::new(35.6804, 10.0982, 275_000.0, 40.0, AreaType::Urban, "Kairouan"),
2600 PopulationRegion::new(36.0, 9.0, 3_600_000.0, 160_100.0, AreaType::Rural, "Rural Tunisia"),
2601 ], 163_610.0)
2602 },
2603
2604 Self::Turkey => {
2605 // Turkey: 85.0M population, 783,562 km² area, ~77% urban.
2606 CountryPopulationData::from_regions(vec![
2607 PopulationRegion::new(41.0082, 28.9784, 15_848_000.0, 5_343.0, AreaType::Urban, "Istanbul"),
2608 PopulationRegion::new(39.9334, 32.8597, 5_748_000.0, 25_437.0, AreaType::Urban, "Ankara"),
2609 PopulationRegion::new(38.4192, 27.1287, 4_440_000.0, 8_276.0, AreaType::Urban, "Izmir"),
2610 PopulationRegion::new(40.1885, 29.0610, 3_175_000.0, 4_302.0, AreaType::Urban, "Bursa"),
2611 PopulationRegion::new(36.9914, 35.3308, 2_254_000.0, 13_488.0, AreaType::Urban, "Adana"),
2612 PopulationRegion::new(37.8737, 32.4847, 2_254_000.0, 20_814.0, AreaType::Urban, "Konya"),
2613 PopulationRegion::new(36.9081, 30.6956, 2_619_000.0, 19_086.0, AreaType::Urban, "Antalya"),
2614 PopulationRegion::new(37.0660, 37.3781, 1_986_000.0, 3_584.0, AreaType::Urban, "Gaziantep"),
2615 PopulationRegion::new(38.7317, 35.4787, 1_241_000.0, 13_251.0, AreaType::Urban, "Kayseri"),
2616 PopulationRegion::new(41.0053, 39.7277, 757_000.0, 6_277.0, AreaType::Urban, "Trabzon"),
2617 PopulationRegion::new(39.0, 35.0, 14_800_000.0, 700_000.0, AreaType::Rural, "Rural Turkey"),
2618 ], 783_562.0)
2619 },
2620
2621 Self::Turkmenistan => {
2622 // Turkmenistan: 6.0M population, 488_100 km² area, ~52% urban.
2623 CountryPopulationData::from_regions(vec![
2624 PopulationRegion::new(37.9500, 58.3833, 810_000.0, 200.0, AreaType::Urban, "Ashgabat"),
2625 PopulationRegion::new(39.0833, 63.5833, 408_000.0, 75.0, AreaType::Urban, "Türkmenabat"),
2626 PopulationRegion::new(38.9697, 56.2711, 243_000.0, 50.0, AreaType::Urban, "Daşoguz"),
2627 PopulationRegion::new(39.0, 59.0, 2_880_000.0, 487_800.0, AreaType::Rural, "Rural Turkmenistan"),
2628 ], 488_100.0)
2629 },
2630
2631 Self::Tuvalu => {
2632 // Tuvalu: 12k population, 26 km² area, ~63% urban.
2633 CountryPopulationData::from_regions(vec![
2634 PopulationRegion::new(-8.5243, 179.1942, 7_000.0, 3.0, AreaType::Urban, "Funafuti"),
2635 PopulationRegion::new(-8.5, 179.0, 4_000.0, 23.0, AreaType::Rural, "Rural Tuvalu"),
2636 ], 26.0)
2637 },
2638
2639 Self::Uganda => {
2640 // Uganda: 47.1M population, 241,038 km² area, ~26% urban.
2641 CountryPopulationData::from_regions(vec![
2642 PopulationRegion::new(0.3163, 32.5822, 3_652_000.0, 189.0, AreaType::Urban, "Kampala Metro"),
2643 PopulationRegion::new(0.6201, 32.4450, 509_000.0, 46.0, AreaType::Urban, "Wakiso"),
2644 PopulationRegion::new(-0.4452, 32.4421, 289_000.0, 31.0, AreaType::Urban, "Mukono"),
2645 PopulationRegion::new(0.0, 32.0, 35_000_000.0, 240_700.0, AreaType::Rural, "Rural Uganda"),
2646 ], 241_038.0)
2647 },
2648
2649 Self::Ukraine => {
2650 // Ukraine: 43.2M population, 603,500 km² area, ~70% urban.
2651 CountryPopulationData::from_regions(vec![
2652 PopulationRegion::new(50.4501, 30.5234, 3_017_000.0, 839.0, AreaType::Urban, "Kyiv"),
2653 PopulationRegion::new(49.9935, 36.2304, 1_443_000.0, 350.0, AreaType::Urban, "Kharkiv"),
2654 PopulationRegion::new(46.4825, 30.7233, 1_010_000.0, 162.0, AreaType::Urban, "Odesa"),
2655 PopulationRegion::new(48.4647, 35.0462, 980_000.0, 424.0, AreaType::Urban, "Dnipro"),
2656 PopulationRegion::new(47.8388, 35.1396, 715_000.0, 236.0, AreaType::Urban, "Zaporizhzhia"),
2657 PopulationRegion::new(48.0, 33.0, 13_000_000.0, 601_600.0, AreaType::Rural, "Rural Ukraine"),
2658 ], 603_500.0)
2659 },
2660
2661 Self::UnitedArabEmirates => {
2662 // UAE: 10.0M population, 83,600 km² area, ~87% urban.
2663 CountryPopulationData::from_regions(vec![
2664 PopulationRegion::new(25.2048, 55.2708, 3_481_000.0, 4_114.0, AreaType::Urban, "Dubai"),
2665 PopulationRegion::new(24.4539, 54.3773, 1_684_000.0, 972.0, AreaType::Urban, "Abu Dhabi"),
2666 PopulationRegion::new(25.3463, 55.4209, 807_000.0, 259.0, AreaType::Urban, "Sharjah"),
2667 PopulationRegion::new(25.4052, 56.2611, 545_000.0, 100.0, AreaType::Urban, "Ajman"),
2668 PopulationRegion::new(25.3350, 55.3890, 262_000.0, 80.0, AreaType::Urban, "Al Ain"),
2669 PopulationRegion::new(25.4000, 55.5136, 230_000.0, 70.0, AreaType::Urban, "Ras Al Khaimah"),
2670 PopulationRegion::new(25.1294, 55.3765, 140_000.0, 60.0, AreaType::Urban, "Fujairah"),
2671 PopulationRegion::new(24.9, 55.0, 668_000.0, 78_145.0, AreaType::Rural, "Rural UAE"),
2672 ], 83_600.0)
2673 },
2674
2675 Self::UnitedKingdom => {
2676 // UK: 67.7M population, 242,495 km² area, ~84% urban.
2677 CountryPopulationData::from_regions(vec![
2678 PopulationRegion::new(51.5074, -0.1278, 9_648_000.0, 1_738.0, AreaType::Urban, "London Metro"),
2679 PopulationRegion::new(52.4862, -1.8904, 2_938_000.0, 599.0, AreaType::Urban, "Birmingham Metro"),
2680 PopulationRegion::new(53.4808, -2.2426, 2_731_000.0, 1_277.0, AreaType::Urban, "Manchester Metro"),
2681 PopulationRegion::new(53.8008, -1.5491, 2_347_000.0, 488.0, AreaType::Urban, "Leeds-Bradford"),
2682 PopulationRegion::new(55.8642, -4.2518, 1_861_000.0, 3_339.0, AreaType::Urban, "Glasgow Metro"),
2683 PopulationRegion::new(53.4084, -2.9916, 1_557_000.0, 646.0, AreaType::Urban, "Liverpool Metro"),
2684 PopulationRegion::new(53.3811, -1.4701, 1_376_000.0, 1_553.0, AreaType::Urban, "Sheffield Metro"),
2685 PopulationRegion::new(54.9783, -1.6178, 1_100_000.0, 2_329.0, AreaType::Urban, "Newcastle Metro"),
2686 PopulationRegion::new(52.9548, -1.1581, 919_000.0, 641.0, AreaType::Urban, "Nottingham Metro"),
2687 PopulationRegion::new(51.4545, -2.5879, 909_000.0, 1_015.0, AreaType::Urban, "Bristol Metro"),
2688 PopulationRegion::new(55.9533, -3.1883, 902_000.0, 264.0, AreaType::Urban, "Edinburgh"),
2689 PopulationRegion::new(50.8229, -0.1363, 789_000.0, 641.0, AreaType::Urban, "Brighton"),
2690 PopulationRegion::new(52.2053, 0.1218, 752_000.0, 634.0, AreaType::Urban, "Cambridge"),
2691 PopulationRegion::new(50.9097, -1.4044, 636_000.0, 394.0, AreaType::Urban, "Southampton"),
2692 PopulationRegion::new(50.7256, -3.5269, 617_000.0, 816.0, AreaType::Urban, "Plymouth"),
2693 PopulationRegion::new(53.0, -1.5, 6_500_000.0, 230_000.0, AreaType::Rural, "Rural UK"),
2694 ], 242_495.0)
2695 },
2696
2697 Self::UnitedStatesOfAmerica => {
2698 // USA: 331.9M population, 9,833,520 km² area, ~83% urban.
2699 CountryPopulationData::from_regions(vec![
2700 PopulationRegion::new(40.7128, -74.0060, 20_141_000.0, 17_405.0, AreaType::Urban, "New York Metro"),
2701 PopulationRegion::new(34.0522, -118.2437, 13_201_000.0, 12_562.0, AreaType::Urban, "Los Angeles Metro"),
2702 PopulationRegion::new(41.8781, -87.6298, 9_620_000.0, 10_857.0, AreaType::Urban, "Chicago Metro"),
2703 PopulationRegion::new(32.7767, -96.7970, 7_638_000.0, 9_287.0, AreaType::Urban, "Dallas-Fort Worth"),
2704 PopulationRegion::new(29.7604, -95.3698, 7_122_000.0, 10_063.0, AreaType::Urban, "Houston Metro"),
2705 PopulationRegion::new(38.9072, -77.0369, 6_385_000.0, 14_413.0, AreaType::Urban, "Washington DC Metro"),
2706 PopulationRegion::new(39.9526, -75.1652, 6_246_000.0, 13_257.0, AreaType::Urban, "Philadelphia Metro"),
2707 PopulationRegion::new(33.7490, -84.3880, 6_090_000.0, 8_377.0, AreaType::Urban, "Atlanta Metro"),
2708 PopulationRegion::new(25.7617, -80.1918, 6_013_000.0, 6_138.0, AreaType::Urban, "Miami Metro"),
2709 PopulationRegion::new(33.4484, -112.0740, 5_060_000.0, 14_599.0, AreaType::Urban, "Phoenix Metro"),
2710 PopulationRegion::new(42.3601, -71.0589, 4_942_000.0, 11_701.0, AreaType::Urban, "Boston Metro"),
2711 PopulationRegion::new(37.7749, -122.4194, 4_750_000.0, 6_985.0, AreaType::Urban, "San Francisco Bay Area"),
2712 PopulationRegion::new(32.7157, -117.1611, 3_339_000.0, 4_527.0, AreaType::Urban, "San Diego Metro"),
2713 PopulationRegion::new(44.9778, -93.2650, 3_691_000.0, 16_012.0, AreaType::Urban, "Minneapolis-St. Paul"),
2714 PopulationRegion::new(42.8864, -78.8784, 4_089_000.0, 7_315.0, AreaType::Urban, "Detroit Metro"),
2715 PopulationRegion::new(27.9506, -82.4572, 3_243_000.0, 6_376.0, AreaType::Urban, "Tampa Bay Metro"),
2716 PopulationRegion::new(47.6062, -122.3321, 4_019_000.0, 15_210.0, AreaType::Urban, "Seattle Metro"),
2717 PopulationRegion::new(39.7392, -104.9903, 2_968_000.0, 21_622.0, AreaType::Urban, "Denver Metro"),
2718 PopulationRegion::new(45.5152, -122.6784, 2_513_000.0, 6_685.0, AreaType::Urban, "Portland Metro"),
2719 PopulationRegion::new(28.5383, -81.3792, 2_609_000.0, 4_013.0, AreaType::Urban, "Orlando Metro"),
2720 PopulationRegion::new(39.0997, -94.5786, 2_193_000.0, 20_570.0, AreaType::Urban, "Kansas City Metro"),
2721 PopulationRegion::new(40.4406, -79.9959, 2_324_000.0, 13_761.0, AreaType::Urban, "Pittsburgh Metro"),
2722 PopulationRegion::new(40.7608, -111.8910, 2_607_000.0, 21_590.0, AreaType::Urban, "Salt Lake City Metro"),
2723 PopulationRegion::new(39.7684, -86.1581, 2_111_000.0, 9_885.0, AreaType::Urban, "Indianapolis Metro"),
2724 PopulationRegion::new(39.1031, -84.5120, 2_256_000.0, 12_072.0, AreaType::Urban, "Cincinnati Metro"),
2725 PopulationRegion::new(41.4993, -81.6944, 2_048_000.0, 10_895.0, AreaType::Urban, "Cleveland Metro"),
2726 PopulationRegion::new(36.1627, -86.7816, 2_011_000.0, 13_310.0, AreaType::Urban, "Nashville Metro"),
2727 PopulationRegion::new(30.2672, -97.7431, 2_295_000.0, 11_100.0, AreaType::Urban, "Austin Metro"),
2728 PopulationRegion::new(29.4241, -98.4936, 2_588_000.0, 20_824.0, AreaType::Urban, "San Antonio Metro"),
2729 PopulationRegion::new(36.1540, -95.9928, 1_044_000.0, 9_305.0, AreaType::Urban, "Tulsa Metro"),
2730 PopulationRegion::new(38.0, -97.0, 40_000_000.0, 9_600_000.0, AreaType::Rural, "Rural USA"),
2731 ], 9_833_520.0)
2732 },
2733
2734 Self::Uruguay => {
2735 // Uruguay: 3.5M population, 181,034 km² area, ~95% urban.
2736 CountryPopulationData::from_regions(vec![
2737 PopulationRegion::new(-34.9011, -56.1645, 1_381_000.0, 200.0, AreaType::Urban, "Montevideo"),
2738 PopulationRegion::new(-31.3833, -57.9667, 113_000.0, 25.0, AreaType::Urban, "Salto"),
2739 PopulationRegion::new(-32.3333, -58.0833, 87_000.0, 20.0, AreaType::Urban, "Paysandú"),
2740 PopulationRegion::new(-33.2524, -58.0265, 78_000.0, 17.0, AreaType::Urban, "Mercedes"),
2741 PopulationRegion::new(-34.3375, -56.7139, 58_000.0, 13.0, AreaType::Urban, "Las Piedras"),
2742 PopulationRegion::new(-33.0, -56.0, 50_000.0, 180_759.0, AreaType::Rural, "Rural Uruguay"),
2743 ], 181_034.0)
2744 },
2745
2746 Self::Uzbekistan => {
2747 // Uzbekistan: 34.9M population, 448,978 km² area, ~50% urban.
2748 CountryPopulationData::from_regions(vec![
2749 PopulationRegion::new(41.2995, 69.2401, 2_571_000.0, 335.0, AreaType::Urban, "Tashkent"),
2750 PopulationRegion::new(39.6530, 66.9597, 546_000.0, 120.0, AreaType::Urban, "Samarkand"),
2751 PopulationRegion::new(40.3789, 71.7825, 544_000.0, 90.0, AreaType::Urban, "Namangan"),
2752 PopulationRegion::new(40.5283, 70.9429, 544_000.0, 77.0, AreaType::Urban, "Andijan"),
2753 PopulationRegion::new(39.7747, 64.4286, 279_000.0, 60.0, AreaType::Urban, "Bukhara"),
2754 PopulationRegion::new(40.8420, 69.6333, 259_000.0, 55.0, AreaType::Urban, "Qarshi"),
2755 PopulationRegion::new(42.4589, 59.6103, 232_000.0, 50.0, AreaType::Urban, "Nukus"),
2756 PopulationRegion::new(40.1167, 67.8422, 183_000.0, 40.0, AreaType::Urban, "Jizzakh"),
2757 PopulationRegion::new(41.0, 64.0, 16_500_000.0, 448_251.0, AreaType::Rural, "Rural Uzbekistan"),
2758 ], 448_978.0)
2759 },
2760
2761 Self::Vanuatu => {
2762 // Vanuatu: 315k population, 12,189 km² area, ~25% urban.
2763 CountryPopulationData::from_regions(vec![
2764 PopulationRegion::new(-17.7333, 168.3273, 66_000.0, 23.0, AreaType::Urban, "Port Vila"),
2765 PopulationRegion::new(-15.3767, 167.1627, 16_000.0, 10.0, AreaType::Urban, "Luganville"),
2766 PopulationRegion::new(-17.0, 168.0, 237_000.0, 12_156.0, AreaType::Rural, "Rural Vanuatu"),
2767 ], 12_189.0)
2768 },
2769
2770 Self::VaticanCity => {
2771 // Vatican City: 825 population, 0.44 km² area, ~100% urban.
2772 CountryPopulationData::from_regions(vec![
2773 PopulationRegion::new(41.9029, 12.4534, 825.0, 0.44, AreaType::Urban, "Vatican City"),
2774 ], 0.44)
2775 },
2776
2777 Self::Venezuela => {
2778 // Venezuela: 28.7M population, 916,445 km² area, ~88% urban.
2779 CountryPopulationData::from_regions(vec![
2780 PopulationRegion::new(10.4806, -66.9036, 5_285_000.0, 4_715.0, AreaType::Urban, "Caracas Metro"),
2781 PopulationRegion::new(10.6585, -71.6406, 2_458_000.0, 623.0, AreaType::Urban, "Maracaibo"),
2782 PopulationRegion::new(10.2442, -67.6066, 2_182_000.0, 2_050.0, AreaType::Urban, "Valencia"),
2783 PopulationRegion::new(10.3632, -71.6245, 1_628_000.0, 441.0, AreaType::Urban, "Maracay"),
2784 PopulationRegion::new(10.2340, -64.1934, 1_239_000.0, 192.0, AreaType::Urban, "Barcelona-Puerto La Cruz"),
2785 PopulationRegion::new(8.6196, -70.2049, 495_000.0, 30.0, AreaType::Urban, "Mérida"),
2786 PopulationRegion::new(7.8936, -72.5048, 463_000.0, 25.0, AreaType::Urban, "San Cristóbal"),
2787 PopulationRegion::new(10.0678, -69.3467, 453_000.0, 20.0, AreaType::Urban, "Barquisimeto"),
2788 PopulationRegion::new(8.0, -66.0, 2_000_000.0, 909_000.0, AreaType::Rural, "Rural Venezuela"),
2789 ], 916_445.0)
2790 },
2791
2792 Self::Vietnam => {
2793 // Vietnam: 98.2M population, 331,212 km² area, ~38% urban.
2794 CountryPopulationData::from_regions(vec![
2795 PopulationRegion::new(10.8231, 106.6297, 8_993_000.0, 2_061.0, AreaType::Urban, "Ho Chi Minh City"),
2796 PopulationRegion::new(21.0285, 105.8542, 8_054_000.0, 3_359.0, AreaType::Urban, "Hanoi"),
2797 PopulationRegion::new(20.8449, 106.6881, 1_493_000.0, 1_495.0, AreaType::Urban, "Haiphong"),
2798 PopulationRegion::new(16.0544, 108.2022, 1_231_000.0, 1_285.0, AreaType::Urban, "Da Nang"),
2799 PopulationRegion::new(10.2539, 105.9721, 1_200_000.0, 1_440.0, AreaType::Urban, "Can Tho"),
2800 PopulationRegion::new(11.9404, 108.4583, 640_000.0, 3_568.0, AreaType::Urban, "Dalat"),
2801 PopulationRegion::new(10.9642, 106.8251, 532_000.0, 209.0, AreaType::Urban, "Bien Hoa"),
2802 PopulationRegion::new(12.2388, 109.1888, 527_000.0, 209.0, AreaType::Urban, "Nha Trang"),
2803 PopulationRegion::new(16.4498, 107.5623, 519_000.0, 117.0, AreaType::Urban, "Hue"),
2804 PopulationRegion::new(10.5417, 106.4142, 513_000.0, 650.0, AreaType::Urban, "Vung Tau"),
2805 PopulationRegion::new(16.0, 107.0, 57_300_000.0, 322_600.0, AreaType::Rural, "Rural Vietnam"),
2806 ], 331_212.0)
2807 },
2808
2809 Self::Yemen => {
2810 // Yemen: 30.5M population, 527,968 km² area, ~38% urban.
2811 CountryPopulationData::from_regions(vec![
2812 PopulationRegion::new(15.3547, 44.2067, 3_075_000.0, 200.0, AreaType::Urban, "Sana'a"),
2813 PopulationRegion::new(12.7794, 45.0187, 1_079_000.0, 75.0, AreaType::Urban, "Aden"),
2814 PopulationRegion::new(14.5434, 49.1241, 738_000.0, 60.0, AreaType::Urban, "Al Mukalla"),
2815 PopulationRegion::new(13.5766, 44.0177, 724_000.0, 50.0, AreaType::Urban, "Ta'izz"),
2816 PopulationRegion::new(15.0, 48.0, 18_900_000.0, 527_600.0, AreaType::Rural, "Rural Yemen"),
2817 ], 527_968.0)
2818 },
2819
2820 Self::Zambia => {
2821 // Zambia: 19.0M population, 752,618 km² area, ~45% urban.
2822 CountryPopulationData::from_regions(vec![
2823 PopulationRegion::new(-15.4067, 28.2871, 2_906_000.0, 375.0, AreaType::Urban, "Lusaka"),
2824 PopulationRegion::new(-12.9658, 28.6286, 765_000.0, 85.0, AreaType::Urban, "Ndola"),
2825 PopulationRegion::new(-12.8097, 28.2133, 678_000.0, 52.0, AreaType::Urban, "Kitwe"),
2826 PopulationRegion::new(-15.8562, 27.8523, 293_000.0, 30.0, AreaType::Urban, "Kabwe"),
2827 PopulationRegion::new(-13.0, 28.0, 10_400_000.0, 752_100.0, AreaType::Rural, "Rural Zambia"),
2828 ], 752_618.0)
2829 },
2830
2831 Self::Zimbabwe => {
2832 // Zimbabwe: 15.1M population, 390,757 km² area, ~32% urban.
2833 CountryPopulationData::from_regions(vec![
2834 PopulationRegion::new(-17.8252, 31.0335, 2_331_000.0, 872.0, AreaType::Urban, "Harare Metro"),
2835 PopulationRegion::new(-20.1530, 28.5766, 741_000.0, 479.0, AreaType::Urban, "Bulawayo"),
2836 PopulationRegion::new(-18.0208, 31.0719, 200_000.0, 30.0, AreaType::Urban, "Chitungwiza"),
2837 PopulationRegion::new(-19.4500, 29.8167, 155_000.0, 25.0, AreaType::Urban, "Gweru"),
2838 PopulationRegion::new(-19.0, 30.0, 10_300_000.0, 389_400.0, AreaType::Rural, "Rural Zimbabwe"),
2839 ], 390_757.0)
2840 },
2841 }
2842 }
2843
2844}
2845
2846/// Classification of a population centre as urban or rural.
2847#[derive(Clone, Debug)]
2848pub struct LocationPopulationRegion {
2849 /// Latitude of a location in the region in decimal degrees.
2850 pub latitude: f64,
2851 /// Longitude of a location in the region in decimal degrees.
2852 pub longitude: f64,
2853 /// Region with population data.
2854 pub region: PopulationRegion,
2855}
2856
2857/// Classification of a population centre as urban or rural.
2858#[derive(Clone, Copy, Debug, Eq, PartialEq)]
2859pub enum AreaType {
2860 /// Urban area - typically cities and towns with >50k population.
2861 Urban,
2862 /// Rural area - countryside, villages, and small towns.
2863 Rural,
2864}
2865
2866/// Represents a geographical region with population data.
2867///
2868/// Each region is non-overlapping and represents either an urban centre
2869/// or a rural district within a country.
2870#[derive(Clone, Debug)]
2871pub struct PopulationRegion {
2872 /// Central latitude of the region in decimal degrees.
2873 pub latitude: f64,
2874 /// Central longitude of the region in decimal degrees.
2875 pub longitude: f64,
2876 /// Total population of the region.
2877 pub population: f64,
2878 /// Area of the region in square kilometres.
2879 pub area_km2: f64,
2880 /// Whether this is an urban or rural region.
2881 pub area_type: AreaType,
2882 /// Name of the region (city name or district description).
2883 pub name: &'static str,
2884}
2885
2886impl PopulationRegion {
2887 /// Creates a new population region.
2888 pub fn new(
2889 latitude: f64,
2890 longitude: f64,
2891 population: f64,
2892 area_km2: f64,
2893 area_type: AreaType,
2894 name: &'static str,
2895 )
2896 -> Self
2897 {
2898 Self {
2899 latitude,
2900 longitude,
2901 population,
2902 area_km2,
2903 area_type,
2904 name,
2905 }
2906 }
2907
2908 /// Calculates the population density (people per km²).
2909 pub fn density(&self) -> f64 {
2910 self.population / self.area_km2
2911 }
2912
2913 /// Generates a random point within this region.
2914 ///
2915 /// For urban areas, uses a concentrated distribution near the centre.
2916 /// For rural areas, uses a more spread out distribution.
2917 fn random_point_in_region(&self) -> (f64, f64) {
2918 // Calculate approximate radius from area (assuming roughly circular regions).
2919 let radius_km = (self.area_km2 / std::f64::consts::PI).sqrt();
2920
2921 // Convert to degrees (rough approximation).
2922 // 1 degree latitude ≈ 111km.
2923 let radius_lat = radius_km / 111.0;
2924 let radius_lon = radius_km / (111.0 * self.latitude.to_radians().cos());
2925
2926 // Generate point distribution based on area type.
2927 let (r, theta) = match self.area_type {
2928 AreaType::Urban => {
2929 // Urban: concentrated near centre (exponential decay).
2930 let r = -Rand::value::<f64>().ln() * 0.3; // Most within 30% of radius.
2931 let theta = Rand::value::<f64>() * 2.0 * std::f64::consts::PI;
2932 (r.min(1.0), theta)
2933 },
2934 AreaType::Rural => {
2935 // Rural: more uniform distribution.
2936 let r = Rand::value::<f64>().sqrt(); // Uniform in circle.
2937 let theta = Rand::value::<f64>() * 2.0 * std::f64::consts::PI;
2938 (r, theta)
2939 },
2940 };
2941
2942 let lat_offset = r * radius_lat * theta.sin();
2943 let lon_offset = r * radius_lon * theta.cos();
2944
2945 (self.latitude + lat_offset, self.longitude + lon_offset)
2946 }
2947}
2948
2949/// Country population data including total statistics.
2950#[derive(Clone, Debug)]
2951pub struct CountryPopulationData {
2952 /// All regions in the country.
2953 pub regions: Vec<PopulationRegion>,
2954 /// Total country population (sum of all regions).
2955 pub total_population: f64,
2956 /// Total country area in km².
2957 pub total_area_km2: f64,
2958}
2959
2960impl CountryPopulationData {
2961 /// Creates country data from a list of regions.
2962 pub fn from_regions(regions: Vec<PopulationRegion>, total_area_km2: f64) -> Self {
2963 let total_population = regions.iter().map(|r| r.population).sum();
2964 Self {
2965 regions,
2966 total_population,
2967 total_area_km2,
2968 }
2969 }
2970
2971 /// Returns the percentage of population in urban areas.
2972 pub fn urban_population_percentage(&self) -> f64 {
2973 let urban_pop: f64 = self.regions
2974 .iter()
2975 .filter(|r| r.area_type == AreaType::Urban)
2976 .map(|r| r.population)
2977 .sum();
2978 (urban_pop / self.total_population) * 100.0
2979 }
2980}
2981
2982#[derive(Debug, Display)]
2983pub enum CelestialBodies {
2984 Earth,
2985 Jupiter,
2986 Luna,
2987 Mars,
2988 Mercury,
2989 Saturn,
2990}