Added initial version of KML to Tiles converter

This commit is contained in:
2026-07-24 00:06:24 -03:00
commit f2d0917b92
11 changed files with 790 additions and 0 deletions
+37
View File
@@ -0,0 +1,37 @@
#!/usr/bin/env python3
import importlib.util
import json
import tempfile
import unittest
from pathlib import Path
MODULE = Path(__file__).resolve().parents[1] / "scripts" / "build-tiles.py"
SPEC = importlib.util.spec_from_file_location("build_tiles", MODULE)
build_tiles = importlib.util.module_from_spec(SPEC)
assert SPEC.loader is not None
SPEC.loader.exec_module(build_tiles)
class BuildTilesTests(unittest.TestCase):
def test_rotation_changes_extent_and_keeps_area(self):
plain = {"north": 40.1, "south": 39.7, "east": 25.5, "west": 25.0, "rotation": 0.0}
rotated = {**plain, "rotation": 10.0}
plain_corners = build_tiles.rotated_corners(plain)
rotated_corners = build_tiles.rotated_corners(rotated)
self.assertNotEqual(plain_corners, rotated_corners)
self.assertAlmostEqual(build_tiles.polygon_area(plain_corners), build_tiles.polygon_area(rotated_corners), places=2)
def test_source_override_precedes_global(self):
config = {"global": {"minzoom": 7, "maxzoom": 12}, "sources": {"Altis.kmz": {"minzoom": 9, "maxzoom": 14}}}
self.assertEqual(build_tiles.effective_zooms(11, "Altis.kmz", config), (9, 14, True))
def test_config_normalizes_source_key(self):
with tempfile.TemporaryDirectory() as directory:
path = Path(directory) / "maps.json"
path.write_text(json.dumps({"global": {}, "sources": {"nested\\map.kmz": {"minzoom": 8}}}))
self.assertIn("nested/map.kmz", build_tiles.read_config(path)["sources"])
if __name__ == "__main__":
unittest.main()