Files
satellite-provider/SatelliteProvider.DataAccess/Migrations/011_AddTileCoordinates.sql
T
2026-03-26 00:34:42 +02:00

19 lines
798 B
SQL

ALTER TABLE tiles RENAME COLUMN zoom_level TO tile_zoom;
ALTER TABLE tiles ADD COLUMN tile_x INT;
ALTER TABLE tiles ADD COLUMN tile_y INT;
UPDATE tiles SET
tile_x = FLOOR((longitude + 180.0) / 360.0 * POWER(2, tile_zoom))::INT,
tile_y = FLOOR((1.0 - LN(TAN(RADIANS(latitude)) + 1.0 / COS(RADIANS(latitude))) / PI()) / 2.0 * POWER(2, tile_zoom))::INT;
ALTER TABLE tiles ALTER COLUMN tile_x SET NOT NULL;
ALTER TABLE tiles ALTER COLUMN tile_y SET NOT NULL;
DROP INDEX IF EXISTS idx_tiles_zoom;
DROP INDEX IF EXISTS idx_tiles_unique_location;
CREATE INDEX idx_tiles_zoom ON tiles(tile_zoom);
CREATE UNIQUE INDEX idx_tiles_unique_location ON tiles(latitude, longitude, tile_zoom, tile_size_meters, version);
CREATE INDEX idx_tiles_coordinates ON tiles(tile_zoom, tile_x, tile_y, version);