MAPBOX_ACCESS_TOKEN = "your_mapbox_access_token"
USERNAME = "your_username"
SOURCE_NAME = "source_name"
TILESET_ID = f"{USERNAME}.tileset_id"
INPUT_FILE = "input.grib"
COG_FILE = "output_cog.tif"
RECIPE_FILE = "recipe.json"
# Step 1: Convert .grib to Cloud-Optimized GeoTIFF
subprocess.run(["gdal_translate", "-of", "COG", INPUT_FILE, COG_FILE])
# Step 2: Upload to Mapbox
subprocess.run(["mapbox", "upload", f"{USERNAME}.{SOURCE_NAME}", COG_FILE])
# Step 3: Create a RasterArray recipe file
"uri": f"mapbox://tileset-source/{USERNAME}/{SOURCE_NAME}"
"resampling": "bilinear",
["==", ["get", "NETCDF_VARNAME"], "Temperature_height_above_ground"],
["==", ["get", "NETCDF_DIM_height_above_ground3"], "2"]
"name": ["to-number", ["get", "NETCDF_DIM_time"]],
with open(RECIPE_FILE, "w") as f:
json.dump(recipe, f, indent=4)
# Step 4: Create the tileset
subprocess.run(["mapbox", "tilesets", "create", TILESET_ID, "--recipe", RECIPE_FILE, "--name", "My RasterArray GRIB"])
# Step 5: Publish the tileset
subprocess.run(["mapbox", "tilesets", "publish", TILESET_ID])
print("RasterArray tileset successfully uploaded and processed!")