Yugoslavia map -- data sources and attribution ============================================== Built by mapgen.py from configs/yugoslavia.json on 2026-09-28. Every input is public and needs no account or key. Datasets used ------------- Borders Natural Earth 1:10m Cultural Vectors, version 5.1.1. PUBLIC DOMAIN (https://www.naturalearthdata.com, 'Made with Natural Earth'; no permission needed, attribution appreciated). Downloaded from https://naciscdn.org/naturalearth/10m/cultural/.zip ne_10m_admin_0_countries: SVN, HRV, BIH, SRB, KOS, MNE, MKD is the land (31 polygon parts); the neighbours (Albania, Austria, Bulgaria, Greece, Hungary, Italy, Romania) are sea, and split the sea with it for islands. ne_10m_admin_1_states_provinces: the nations' regions. ne_10m_populated_places: the nations' spawn points. Lakes Natural Earth 1:10m Physical Vectors (ne_10m_lakes, ne_10m_lakes_europe), public domain, https://naciscdn.org/naturalearth/10m/physical/.zip Elevation AWS Open Data Terrain Tiles (Mapzen/Tilezen 'terrarium' PNG tiles), zoom 10 (560 tiles) for the relief and zoom 12 (554 tiles) along the coast for the coastline, https://s3.amazonaws.com/elevation-tiles-prod/terrarium/{z}/{x}/{y}.png (registry: https://registry.opendata.aws/terrain-tiles/). A compilation of public DEMs; the ones covering this area and their required credit: * SRTM and GMTED2010 terrain data courtesy of the U.S. Geological Survey (NASA/USGS, public domain); * Global ETOPO1 terrain data U.S. National Oceanic and Atmospheric Administration (public domain; the sea floor, used only to tell sea from land); * Europe terrain data produced using Copernicus data and information funded by the European Union - EU-DEM layers. Full attribution list: https://github.com/tilezen/joerd/blob/master/docs/attribution.md Geometry -------- Projection EPSG:32634 (pyproj 3.8.0); conformal and metric, so no aspect correction is used. Grid 2000 x 1808 tiles at 392.6 m/tile (785.2 x 709.8 km) Origin tile (x,y) covers E = -103012.9 + 392.6*x, N = 5216734.9 - 392.6*y (bounding box of the land plus 15 km of sea). Latitude row 0 = 47.1 N, last row = 40.7 N (crates/of_app/src/view.rs latitude_range: "yugoslavia" => (47.1, 40.7)), measured at the centre column. Coastline the Natural Earth outline refined by the DEM: a tile is land when at least half of it is DEM land (terrarium elevation > 0 m; zoom 12 pixels of ~28 m, because at zoom 11 and below the tiles fill the sea near the coast from ETOPO1's 1.8 km cells and close narrow straits such as Salamis), restricted to the sea nearer to Yugoslavia than to any neighbour and within 40 km of its coast (this adds the small islands Natural Earth 1:10m leaves out); more than 3 km inside the Natural Earth outline a tile is always land. Land borders are exactly Natural Earth's. Everything outside the border is water (the Switzerland rule). Elevation curve magnitude = round(curve(u)), clamped 0..31, where e is the tile's mean elevation (zoom 10 tiles, averaged into the tile) and u = e + 1.5*(e - gaussian(e, sigma = 2 tiles)), the blur taken over land only so the sea does not drag the coast down. The curve is the auto_bands fit (--tune) at this mask: half the land below 422 m is Plains (the Pannonian plain, Slavonia, the Morava and Vardar valleys), 17% above 1010 m is Mountain (the Dinaric Alps, the Julian Alps, Sar and Prokletije), and the top segment runs to the highest ground so peaks are not clamped. The mask sharpens (+1.5, sigma 2 tiles) as Switzerland's +2 does, a little less because these tiles are 2.2x wider (393 m vs 175 m). Measured alternatives: Switzerland's own recipe (120 m per step, +2) makes Yugoslavia 87% Plains with a slope of 0.36; a linear 60 m step gives about 60/28/12 and a slope of 0.39 to 0.91; on this curve +1.0 gives 0.54 / 8.0% rock, +2.0 gives 0.64 / 12.1%, sigma 3 adds 0.05-0.08. curve: piecewise-linear [[0.0, 0.0], [422.0, 9.5], [1010.0, 19.5], [2763.0, 31.0]]. Result: mean slope 0.588 magnitude steps/tile, 10.03% rock, bands 50.0% Plains / 33.0% Highland / 17.0% Mountain, mean magnitude 10.4 (Switzerland 0.62 / 8.8% / 51-34-15 / 11.10, Britannia 0.67 / 12.4% / 39-53-9 / 10.12, measured the same way by validate_map.py). map4x / map16x: slope 0.668 / 0.826, rock 12.06% / 16.74% (a coarser tile spans more ground; Switzerland 0.81 / 1.02, Britannia 0.93 / 1.25, Europe 1.18 / 1.53). Water magnitude OpenFront's convention: min(ceil(d/2), 31), d = Manhattan distance from the shoreline water. Lake policy Natural Earth lakes inside the land are lakes; a lake that reaches the border joins the sea outside it and is ocean. A lake under 40 tiles at full res (6.2 km2), 10 at 4x or 3 at 16x is filled back to land at the ground height. River policy none: rivers are not carved (at this scale they are narrower than a tile). Island policy land bodies under 2 tiles at full resolution are dropped; every island that survives the downsample is kept at 4x and 16x. Downsampling map4x / map16x: plurality vote of each 2x2 block (a 2-2 tie goes to the side with the larger sub-tile land fraction); sea cut off by the vote is reconnected along its real channel; then the small-body cleanup above. 16x is built from 4x. Carved channel tiles: 4x 7, 16x 5. Water features (mapgen_water.py) ------------------------------- Kept lakes these stay lakes at every resolution: where one touches the outside of the country, a river or the sea, its edge tiles there become land (a one-tile rim or dam), re-applied after the plurality vote at map4x and map16x. Lake Skadar, 1159116675, 1159118183, Dojran Lake (Natural Earth ne_10m_lakes): 4,492 tiles Cut-off water (mapgen_coast.py) after the lakes are cut in, each water body at full resolution that does not reach the ocean and holds no Natural Earth lake tile is either sea the DEM cut off at a strait narrower than a tile (at least 50% of it Natural Earth sea: reconnected to the ocean along Natural Earth's channel, its sea grown by one tile to bridge rasterising gaps) or ground the DEM puts at or below sea level inside Natural Earth's land (levee-protected delta islands, marsh: filled back to land). Sea bodies under 8 tiles are left to the small-lake filter. Reconnected 7 of 7 sea bodies (20 channel tiles carved); filled 60 bodies (279 tiles). Sea inlets (mapgen_inlets.py) bays Natural Earth 1:10m fills with land, taken from the zoom-12 terrain tiles: the sea pixels (<= 0 m) joined to a seed, a tile being water when at least half of it is that sea; a bay still cut off by a strait narrower than a tile is joined to the ocean by the cheapest channel through the strait (one tile wide). Bay of Kotor: 71 tiles (10.9 km2) opened, 4 channel tiles, joined: yes. Novigrad and Karin Seas: 162 tiles (25.0 km2) opened, 8 channel tiles, joined: yes. Climate (climate.bin) --------------------- Source Beck, H.E., N.E. Zimmermann, T.R. McVicar, N. Vergopolan, A. Berg, E.F. Wood: Present and future Koppen-Geiger climate classification maps at 1-km resolution, Scientific Data 5, 180214 (2018), doi:10.1038/sdata.2018.214. Data: figshare, doi:10.6084/m9.figshare.6396959 (Beck_KG_V1.zip, no login), Beck_KG_V1_present_0p0083.tif (present day, 1980-2016, ~1 km). Licence CC BY 4.0 (https://creativecommons.org/licenses/by/4.0/): attribution required; the classes were turned into moisture values and reprojected (changes made). Grid the map16x grid, 500 x 452: one byte per 16x tile, 0 = driest, 255 = wettest, on the terrain shader's own moisture scale (x 255). Method each Koppen class -> a moisture (table below); reprojected with the map's projection, each 16x tile the area average of the 1 km cells in it; the sea and the neighbours (water on this map) take the nearest own land's value; Gaussian smoothing, sigma 8 km (5.1 tiles of 1.57 km). Classes BWh, BWk 0.06; BSh, BSk 0.28; Csa 0.34; Dsa 0.40; Csb, Csc, Dsb 0.46; Dsc, Dsd 0.48; Aw, ET, EF 0.50; Cwa, Cwb, Cwc, Dwa, Dfa 0.52; Cfb, Cfc, Dwb, Dwc, Dwd, Dfb 0.53; Dfc, Dfd 0.58; Cfa 0.60; Am 0.66; Af 0.76. The shader's temperate ladder: desert under 0.22, steppe to 0.33, grass to 0.56, forest above; in hot country savanna from 0.24, grass from 0.45, jungle above 0.56. Tundra and snow come from the temperature. Land the largest classes by 16x land tile: Dfb 66%, Cfa 16%, Cfb 4%, Csa 4%, Dfa 4%, BSk 3%, Dfc 2%. As the temperate ladder reads it: desert 0.0%, steppe 1.6%, grass 83.8%, forest 14.6% (before the shader's noise, heat and altitude). Nations ------- 39 nations, each a group of Natural Earth admin-1 regions (how they were grouped is in the note below). The spawn is the group's largest Natural Earth populated place; Natural Earth has only 32 in these countries, so 13 groups spawn at the label point of their seat region (the county, district or municipality of the regional centre: Koper, Varazdin, Bijeljina, Trebinje, Bor, Stip, ...). Snapped to the nearest tile that is land at all three resolutions, in the same group and on the same landmass (coast at 16x avoided). Belgrade rs-00 (1428, 645) Belgrade (largest Natural Earth populated place, pop 1,099,000) Zagreb hr-21 ( 546, 338) Zagreb (largest Natural Earth populated place, pop 722,526) Sarajevo ba-09 (1000, 912) Sarajevo (largest Natural Earth populated place, pop 696,731) Skopje mk-85 (1627, 1443) Skopje (largest Natural Earth populated place, pop 494,087) Kosovo xk (1570, 1255) Pristina (largest Natural Earth populated place, pop 465,186) Carniola si-061 ( 258, 244) Ljubljana (largest Natural Earth populated place, pop 314,807) Niš rs-20 (1721, 1066) Niš (largest Natural Earth populated place, pop 250,000) Bačka rs-06 (1306, 522) Novi Sad (largest Natural Earth populated place, pop 225,457) Banja Luka ba-srp ( 766, 639) Banja Luka (largest Natural Earth populated place, pop 221,738) Southern Dalmatia hr-17 ( 603, 988) Split (largest Natural Earth populated place, pop 214,741) Šumadija and Pomoravlje rs-12 (1519, 872) Kragujevac (largest Natural Earth populated place, pop 171,197) Kvarner and Lika hr-08 ( 228, 447) Rijeka (largest Natural Earth populated place, pop 170,992) Zlatibor and Moravica rs-17 (1398, 909) Čačak (largest Natural Earth populated place, pop 170,000) Central Bosnia ba-04 ( 909, 804) Zenica (largest Natural Earth populated place, pop 164,423) Herzegovina ba-07 ( 879, 1049) Mostar (largest Natural Earth populated place, pop 163,067) Southern Montenegro me-16 (1172, 1308) Podgorica (largest Natural Earth populated place, pop 145,850) Tuzla ba-03 (1066, 715) Tuzla (largest Natural Earth populated place, pop 144,334) Polog and Ohrid mk-76 (1529, 1441) Tetovo (largest Natural Earth populated place, pop 119,132) Slovene Styria si-070 ( 491, 124) Maribor (largest Natural Earth populated place, pop 114,228) Western Slavonia hr-12 ( 938, 539) Slavonski Brod (largest Natural Earth populated place, pop 97,718) Eastern Slavonia hr-14 (1074, 433) Osijek (largest Natural Earth populated place, pop 95,077) Pelagonia and Vardar mk-04 (1608, 1715) Bitola (largest Natural Earth populated place, pop 86,528) Northern Dalmatia hr-13 ( 366, 803) Zadar (largest Natural Earth populated place, pop 71,258) Banat rs-02 (1416, 487) Zrenjanin (largest Natural Earth populated place, pop 64,053) Istria hr-18 ( 96, 570) Pula (largest Natural Earth populated place, pop 61,599) Central Croatia hr-04 ( 450, 420) Karlovac (largest Natural Earth populated place, pop 55,063) Slovene Littoral si-050 ( 108, 387) admin-1 label point of Koper (no Natural Earth populated place in the region) Northern Croatia hr-05 ( 617, 231) admin-1 label point of Varaždin (no Natural Earth populated place in the region) Una-Sana ba-01 ( 586, 669) admin-1 label point of Una-Sana Canton (no Natural Earth populated place in the region) Doboj and Bijeljina ba-srp (1162, 661) admin-1 label point of Bijeljina (no Natural Earth populated place in the region) Eastern Bosnia ba-srp (1144, 818) admin-1 label point of Vlasenica (no Natural Earth populated place in the region) East Herzegovina ba-srp ( 984, 1123) admin-1 label point of Trebinje (no Natural Earth populated place in the region) Syrmia rs-07 (1269, 582) admin-1 label point of Srem (no Natural Earth populated place in the region) Mačva and Kolubara rs-08 (1231, 706) admin-1 label point of Mačva (no Natural Earth populated place in the region) Eastern Serbia rs-14 (1793, 768) admin-1 label point of Bor (no Natural Earth populated place in the region) Raška and Rasina rs-18 (1448, 1053) admin-1 label point of Raška (no Natural Earth populated place in the region) Southern Serbia rs-23 (1735, 1170) admin-1 label point of Jablanica (no Natural Earth populated place in the region) Northern Montenegro me-04 (1278, 1154) admin-1 label point of Bijelo Polje (no Natural Earth populated place in the region) Eastern Macedonia mk-83 (1783, 1532) admin-1 label point of Štip (no Natural Earth populated place in the region) Nations: 39 groups of Natural Earth admin-1 regions, never across a republic's border. Slovenia and North Macedonia by statistical regions (Natural Earth's municipalities, grouped by their 'region' field; the 15 North Macedonian municipalities with no region there were assigned by ISO code: Tetovo, Jegunovce, Tearce, Vrapciste to Polog; Oslomej, Drugovo, Plasnica to Southwestern; Mogila to Pelagonia; Rosoman to Vardar; Zrnovci to Eastern; Strumica, Gevgelija, Bosilovo to Southeastern; Staro Nagoricane to Northeastern; MK-85 (Petrovec area) to Skopje). Croatia by counties, Bosnia and Herzegovina by the Federation's cantons and Republika Srpska's regions (never mixed; the Brcko District goes with Doboj and Bijeljina, which it joins), Serbia by districts (Vojvodina's seven as Backa, Banat and Syrmia), Kosovo as one nation, Montenegro as a southern (coast and centre) and a northern half. Flags are ISO 3166-2 codes of each group's seat region (ba-srp for Republika Srpska's regions, which have none; xk for Kosovo); the repo has no flag images for them, as for Switzerland's ch-*. Lakes: Natural Earth leaves Lake Ohrid and Great Prespa unnamed, so lakes.keep names them by ne_id (1159116675 Ohrid, 1159118183 Great Prespa); with Lake Skadar and Dojran they straddle the border and are kept as lakes behind a one-tile shore along the border. The inland lakes are Natural Earth's: Vransko jezero, Prokljan (the Krka estuary above Sibenik), Busko Blato and Bileca; Natural Earth 1:10m has no other reservoir here, so Perucac, Gazivoda, Mavrovo, Tikves and the rest are land.