- with conn.cursor() as cur:
- cur.drop_table("osm_views")
- cur.drop_table("osm_views_stat")
-
- # -ovr: 6 -> zoom 12, 5 -> zoom 13, 4 -> zoom 14, 3 -> zoom 15
- reproject_geotiff = f"gdalwarp -q -multi -ovr 3 -overwrite \
- -co COMPRESS=LZW -tr 0.01 0.01 -t_srs EPSG:4326 {datafile} raster2import.tiff"
- subprocess.run(["/bin/bash", "-c" , reproject_geotiff], check=True)
-
- tile_size = 256
- import_geotiff = f"raster2pgsql -I -C -Y -t {tile_size}x{tile_size} raster2import.tiff \
- public.osm_views | psql {dsn} > /dev/null"
- subprocess.run(["/bin/bash", "-c" , import_geotiff], check=True)
-
- cleanup = "rm raster2import.tiff"
- subprocess.run(["/bin/bash", "-c" , cleanup], check=True)
-
- # To normalize osm views data, the max view value is needed
- cur.execute(f"""
- CREATE TABLE osm_views_stat AS (
- SELECT MAX(ST_Value(osm_views.rast, 1, x, y)) AS max_views_count
- FROM osm_views CROSS JOIN
- generate_series(1, {tile_size}) As x
- CROSS JOIN generate_series(1, {tile_size}) As y
- WHERE x <= ST_Width(rast) AND y <= ST_Height(rast));
- """)
- conn.commit()