Files
tile-server/context/2026-09-20_20-30-00_tile-server.md
T
2026-09-21 03:53:15 +03:00

1.9 KiB
Raw Blame History

2026-09-20 — Тайловый сервер на C#

Собрано с нуля: ASP.NET Core 8, Clean Architecture.

Что сделано

  • Воркер MapSyncHostedService: cron раз в сутки (0 3 * * * UTC) + прогон при старте.
  • Для каждого extract из TileServer:Extractsdata/extracts.json): скачивание .osm.pbf с Geofabrik (If-None-Match / 304), сборка OpenMapTiles MBTiles через planetiler-openmaptiles (Java 21+).
  • По умолчанию один источник: central-fed-district. Можно добавлять сколько угодно регионов — воркер проходит все по очереди.
  • GET /api/v1/tiles/{source}/{z}/{x}/{y}.pbf — MapLibre XYZ, TMS Y-flip, gzip как в MBTiles.
  • GET /api/v1/styles/{name}?source=... — стили по имени; PUT и файлы data/styles/*.json.
  • Демо: GET / MapLibre GL, выбор источника/стиля, статус воркера.
  • Сборка тайлов не на чистом C#: генерация схемы OpenMapTiles — Planetiler. C# оркестрирует download/build/serve.

Как проверялось

  • dotnet build / 9 unit-тестов — ок.
  • Локальный прогон API: демо 200, стили osm-bright/dark/positron, TileJSON, 204 на отсутствующий тайл, PUT второго extract, 404 на неизвестный стиль.
  • Браузерных MCP в сессии не было — проверка через HTTP.

Важно для следующего запуска

  • Без Java 21 воркер скачает PBF, но не соберёт тайлы.
  • Первая сборка ЦФО — часы и много диска/RAM (TileServer:JvmMaxHeap).
  • TileServer:Sync:RunOnStartup по умолчанию true.