[Python] Issue running HydroMT Hydrological Plugin for Wflow model execution during Docker...

Discussão em 'Python' iniciado por Stack, Março 25, 2025.

  1. Stack

    Stack Membro Participativo

    I want to run a docker container of my Flask App. I am running an open-source hydrological model called 'Wflow' (see GitHub) inside my Flask app. Moreover, to run this model I am also using a plug-in called 'Hydromt-Wflow' (see GitHub). This plug-in simplifies file setup for the Wflow model and generates a TOML file for model input. The Wflow model runs with a Julia command but the Hydromt plugin executes in Python and takes two config files: 'wflow_build.ini' & 'data_catalog.yml'.

    Running Hydromt Inside Flask:

    command = (
    f"hydromt build wflow {self.hydromt_output_path}/ "
    f"-r \"{{'subbasin': {self.subbasin_point}, 'strord': 7, 'bounds': {bounds_float}}}\" "
    f"-i {self.request_path}/wflow_build.ini "
    f"-d {data_catalog_path} -vv"
    )
    subprocess.run(command, shell=True, capture_output=True)


    Wflow_build_ini file:

    [global]
    data_libs = [] # add optional paths to data yml files

    [setup_config]
    starttime = 2022-01-02T00:00:00
    endtime = 2022-01-30T00:00:00
    timestepsecs = 86400
    input.path_forcing = inmaps.nc

    [setup_basemaps]
    hydrography_fn = merit_hydro_1k # source hydrography data {merit_hydro, merit_hydro_1k}
    basin_index_fn = merit_hydro_index # source of basin index corresponding to hydrography_fn
    upscale_method = ihu # upscaling method for flow direction data, by default 'ihu'

    [setup_rivers]
    hydrography_fn = merit_hydro_1k # source hydrography data, should correspond to hydrography_fn in setup_basemaps
    river_geom_fn = rivers_lin2019_v1 # river source data with river width and bankfull discharge
    river_upa = 30 # minimum upstream area threshold for the river map [km2]
    rivdph_method = powlaw # method to estimate depth {'powlaw', 'manning', 'gvf'}
    min_rivdph = 1 # minimum river depth [m]
    min_rivwth = 30 # minimum river width [m]
    slope_len = 2000 # length over which tp calculate river slope [m]
    smooth_len = 5000 # length over which to smooth river depth and river width [m]

    [setup_reservoirs]
    reservoirs_fn = hydro_reservoirs # source for reservoirs based on GRAND: {hydro_reservoirs}
    min_area = 0 # minimum lake area to consider [km2]
    priority_jrc = True # if True then JRC data from hydroengine is used to calculate some reservoir attributes instead of the GRanD and HydroLAKES db.

    [setup_lakes]
    lakes_fn = hydro_lakes # source for lakes based on hydroLAKES: {hydro_lakes}; None to skip
    min_area = 0 # minimum reservoir area to consider [km2]

    [setup_glaciers]
    glaciers_fn = rgi # source for glaciers based on Randolph Glacier Inventory {rgi}; None to skip
    min_area = 1.0 # minimum glacier area to consider [km2]

    [setup_riverwidth]
    precip_fn = chelsa # source for precip climatology used to estimate discharge: {chelsa}
    climate_fn = koppen_geiger # source for climate classification used to estimate discharge: {koppen_geiger}
    predictor = discharge # predictor used in power-law w=a*predictor^b {'discharge'; 'uparea', other staticmaps}; a and b can also be set here.
    fill = False # if False all river width values are set based on predictor, if True only data gaps and lakes/reservoirs in observed width are filled (works only with MERIT hydro)
    min_wth = 1 # global minimum width

    [setup_lulcmaps]
    lulc_fn = globcover # source for lulc maps: {globcover, vito, corine}

    [setup_soilmaps]
    soil_fn = soilgrids # source for soilmaps: {soilgrids}
    ptf_ksatver = brakensiek # pedotransfer function to calculate hydraulic conductivity: {brakensiek, cosby}

    [setup_gauges]
    gauges_fn = grdc # if not None add gaugemap. Either a path or known gauges_fn: {grdc}
    snap_to_river = True # if True snaps gauges from source to river
    derive_subcatch = False # if True derive subcatch map based on gauges.

    [setup_precip_forcing]
    precip_fn = era5 # source for precipitation.
    precip_clim_fn = None # source for high resolution climatology to correct precipitation.

    [setup_temp_pet_forcing]
    temp_pet_fn = era5 # source for temperature and potential evapotranspiration.
    press_correction = True # if True temperature is corrected with elevation lapse rate.
    temp_correction = False # if True pressure is corrected with elevation lapse rate.
    dem_forcing_fn = era5_orography # source of elevation grid corresponding to temp_pet_fn. Used for lapse rate correction.
    pet_method = debruin # method to compute PET: {debruin, makkink}
    skip_pet = False # if True, only temperature is prepared.

    [setup_constant_pars]
    ksathorfrac = 25
    cfmax = 3.75653
    cf_soil = 0.038
    eoverr = 0.05
    infiltcappath = 5
    infiltcapsoil = 600
    maxleakage = 0
    rootdistpar = -500
    tt = 0
    tti = 2
    ttm = 0
    whc = 0.1
    g_cfmax = 5.3
    g_sifrac = 0.002
    g_tt = 1.3


    Data Catalog Yml file:

    chelsa:
    crs: 4326
    data_type: RasterDataset
    driver: raster
    meta:
    category: meteo
    paper_doi: 10.1038/sdata.2017.122
    paper_ref: Karger et al. (2017)
    source_license: CC BY 4.0
    source_url: http://chelsa-climate.org/downloads/
    source_version: 1.2
    path: chelsa.tif
    chirps_global:
    crs: 4326
    data_type: RasterDataset
    driver: netcdf
    meta:
    category: meteo
    paper_doi: 10.3133/ds832
    paper_ref: Funk et al (2014)
    source_license: CC
    source_url: https://www.chc.ucsb.edu/data/chirps
    source_version: v2.0
    path: chirps_global.nc
    unit_add:
    time: 86400
    corine:
    data_type: RasterDataset
    driver: raster
    meta:
    category: landuse & landcover
    source_author: European Environment Agency
    source_license: https://land.copernicus.eu/pan-european/corine-land-cover/clc2018?tab=metadata
    source_url: https://land.copernicus.eu/pan-european/corine-land-cover/clc2018
    source_version: v.2020_20u1
    path: corine.tif
    dtu10mdt:
    crs: 4326
    data_type: RasterDataset
    driver: raster
    meta:
    category: topography
    paper_doi: 10.1029/2008JC005179
    paper_ref: Andersen and Knudsen (2009)
    source_url: https://www.space.dtu.dk/english/research/scientific_data_and_models/global_mean_dynamic_topography
    source_version: 2010
    unit: m+EGM2008
    path: dtu10mdt.tif
    dtu10mdt_egm96:
    crs: 4326
    data_type: RasterDataset
    driver: raster
    meta:
    category: topography
    paper_doi: 10.1029/2008JC005179
    paper_ref: Andersen and Knudsen (2009)
    source_url: https://www.space.dtu.dk/english/research/scientific_data_and_models/global_mean_dynamic_topography
    source_version: 2010
    unit: m+EGM96
    path: dtu10mdt_egm96.tif
    eobs:
    crs: 4326
    data_type: RasterDataset
    driver: netcdf
    meta:
    category: meteo
    paper_doi: 10.1029/2017JD028200
    paper_ref: Cornes et al (2018)
    source_license: https://surfobs.climate.copernicus.eu/dataaccess/access_eobs.php#datafiles
    source_url: https://surfobs.climate.copernicus.eu/dataaccess/access_eobs.php#datafiles
    source_version: 22.0e
    path: eobs.nc
    unit_add:
    time: 86400
    eobs_orography:
    crs: 4326
    data_type: RasterDataset
    driver: netcdf
    meta:
    category: meteo
    paper_doi: 10.1029/2017JD028200
    paper_ref: Cornes et al (2018)
    source_license: https://surfobs.climate.copernicus.eu/dataaccess/access_eobs.php#datafiles
    source_url: https://surfobs.climate.copernicus.eu/dataaccess/access_eobs.php#datafiles
    source_version: 22.0e
    path: eobs_orography.nc
    era5:
    crs: 4326
    data_type: RasterDataset
    driver: netcdf
    meta:
    category: meteo
    history: Extracted from Copernicus Climate Data Store; resampled by Deltares to
    daily frequency
    paper_doi: 10.1002/qj.3803
    paper_ref: Hersbach et al. (2019)
    source_license: https://cds.climate.copernicus.eu/cdsapp/#!/terms/licence-to-use-copernicus-products
    source_url: https://doi.org/10.24381/cds.bd0915c6
    source_version: ERA5 daily data on pressure levels
    path: era5.nc
    unit_add:
    temp: -273.15
    temp_max: -273.15
    temp_min: -273.15
    time: 86400
    unit_mult:
    kout: 0.000277778
    precip: 1000
    press_msl: 0.01

    future_data:
    crs: 4326
    data_type: RasterDataset
    driver: netcdf
    meta:
    category: meteo
    history: Extracted from Copernicus Climate Data Store; resampled by Deltares to
    daily frequency
    paper_doi: 10.1002/qj.3803
    paper_ref: Hersbach et al. (2019)
    source_license: https://cds.climate.copernicus.eu/cdsapp/#!/terms/licence-to-use-copernicus-products
    source_url: https://doi.org/10.24381/cds.bd0915c6
    source_version: ERA5 daily data on pressure levels
    path: future_data.nc
    unit_add:
    time: 86400
    unit_mult:
    kout: 0.000277778
    press_msl: 0.01

    future_ppt:
    crs: 4326
    data_type: RasterDataset
    driver: netcdf
    meta:
    category: meteo
    history: Extracted from Copernicus Climate Data Store; resampled by Deltares to
    daily frequency
    paper_doi: 10.1002/qj.3803
    paper_ref: Hersbach et al. (2019)
    source_license: https://cds.climate.copernicus.eu/cdsapp/#!/terms/licence-to-use-copernicus-products
    source_url: https://doi.org/10.24381/cds.bd0915c6
    source_version: ERA5 daily data on pressure levels
    path: future_ppt.nc
    unit_add:
    time: 86400

    era5_land:
    crs: 4326
    data_type: RasterDataset
    driver: netcdf
    meta:
    category: meteo
    history: Extracted from Copernicus Climate Data Store; resampled by Deltares to
    daily frequency
    paper_doi: 10.1002/qj.3803
    paper_ref: Hersbach et al. (2019)
    source_license: https://cds.climate.copernicus.eu/cdsapp/#!/terms/licence-to-use-copernicus-products
    source_url: https://doi.org/10.24381/cds.bd0915c6
    source_version: ERA5 daily data on pressure levels
    path: era5_land.nc
    unit_add:
    time: 86400
    unit_mult:
    precip: 1000
    era5_hourly:
    crs: 4326
    data_type: RasterDataset
    driver: netcdf
    meta:
    category: meteo
    history: Extracted from Copernicus Climate Data Store
    paper_doi: 10.1002/qj.3803
    paper_ref: Hersbach et al. (2019)
    source_license: https://cds.climate.copernicus.eu/cdsapp/#!/terms/licence-to-use-copernicus-products
    source_url: https://doi.org/10.24381/cds.bd0915c6
    source_version: ERA5 hourly data on pressure levels
    path: era5_hourly.nc
    unit_add:
    temp: -273.15
    unit_mult:
    kin: 0.000277778
    kout: 0.000277778
    precip: 1000
    press_msl: 0.01
    era5_daily_zarr:
    crs: 4326
    data_type: RasterDataset
    driver: zarr
    meta:
    category: meteo
    history: Extracted from Copernicus Climate Data Store; resampled by Deltares to
    daily frequency
    paper_doi: 10.1002/qj.3803
    paper_ref: Hersbach et al. (2019)
    source_license: https://cds.climate.copernicus.eu/cdsapp/#!/terms/licence-to-use-copernicus-products
    source_url: https://doi.org/10.24381/cds.bd0915c6
    source_version: ERA5 daily data on pressure levels
    path: era5_daily_zarr.zarr
    rename:
    d2m: temp_dew
    u10: wind10_u
    v10: wind10_v
    unit_add:
    temp_dew: -273.15
    unit_mult:
    ssr: 0.000277778
    era5_hourly_zarr:
    crs: 4326
    data_type: RasterDataset
    driver: zarr
    meta:
    category: meteo
    history: Extracted from Copernicus Climate Data Store
    paper_doi: 10.1002/qj.3803
    paper_ref: Hersbach et al. (2019)
    source_license: https://cds.climate.copernicus.eu/cdsapp/#!/terms/licence-to-use-copernicus-products
    source_url: https://doi.org/10.24381/cds.bd0915c6
    source_version: ERA5 hourly data on pressure levels
    path: era5_hourly_zarr.zarr
    rename:
    d2m: temp_dew
    u10: wind10_u
    v10: wind10_v
    unit_add:
    temp_dew: -273.15
    unit_mult:
    ssr: 0.000277778
    era5_orography:
    crs: 4326
    data_type: RasterDataset
    driver: netcdf
    meta:
    category: meteo
    history: Extracted from Copernicus Climate Data Store
    paper_doi: 10.1002/qj.3803
    paper_ref: Hersbach et al. (2019)
    source_license: https://cds.climate.copernicus.eu/cdsapp/#!/terms/licence-to-use-copernicus-products
    source_url: https://doi.org/10.24381/cds.bd0915c6
    source_version: ERA5 hourly data on pressure levels
    path: era5_orography.nc
    gadm_level1:
    crs: 4326
    data_type: GeoDataFrame
    driver: vector
    meta:
    category: geography
    notes: last downloaded 2020-10-19; license required for commercial use
    source_author: gadm
    source_license: https://gadm.org/license.html
    source_url: https://gadm.org/download_world.html
    source_version: 1.0
    path: gadm_level1.gpkg
    gadm_level2:
    crs: 4326
    data_type: GeoDataFrame
    driver: vector
    meta:
    category: geography
    notes: last downloaded 2020-10-19; license required for commercial use
    source_author: gadm
    source_license: https://gadm.org/license.html
    source_url: https://gadm.org/download_world.html
    source_version: 1.0
    path: gadm_level2.gpkg
    gadm_level3:
    crs: 4326
    data_type: GeoDataFrame
    driver: vector
    meta:
    category: geography
    notes: last downloaded 2020-10-19; license required for commercial use
    source_author: gadm
    source_license: https://gadm.org/license.html
    source_url: https://gadm.org/download_world.html
    source_version: 1.0
    path: gadm_level3.gpkg
    gcn250:
    data_type: RasterDataset
    driver: raster
    meta:
    category: soil
    paper_doi: 10.1038/s41597-019-0155-x
    paper_ref: Jaafar et al. (2019)
    source_license: CC BY 4.0
    source_url: https://doi.org/10.6084/m9.figshare.7756202.v1
    source_version: v1
    nodata: 255
    path: gcn250/{variable}.tif
    gdp_world:
    crs: 4326
    data_type: GeoDataFrame
    driver: vector
    meta:
    category: socio economic
    source_author: Wilfred Altena
    source_info: data combined from World Bank (https://data.worldbank.org/indicator/NY.GDP.MKTP.CD)
    and CIA World Factbook (https://www.cia.gov/the-world-factbook/field/real-gdp-per-capita/country-comparison)
    source_license: CC BY-4.0
    source_version: 1.0
    path: gdp_world.gpkg
    gebco:
    crs: 4326
    data_type: RasterDataset
    driver: raster
    meta:
    category: topography
    paper_doi: 10.5285/a29c5465-b138-234d-e053-6c86abc040b9
    paper_ref: Weatherall et al (2020)
    source_license: https://www.gebco.net/data_and_products/gridded_bathymetry_data/#a1
    source_url: https://www.bodc.ac.uk/data/open_download/gebco/gebco_2020/geotiff/
    source_version: 2020
    unit: m+MSL
    path: gebco.tif
    ghs-smod_2015_v2:
    crs: 54009
    data_type: RasterDataset
    driver: raster
    meta:
    category: socio economic
    paper_doi: 10.2905/42E8BE89-54FF-464E-BE7B-BF9E64DA5218
    paper_ref: Pesaresi et al (2019)
    source_author: JRC-ISPRA EC
    source_license: https://data.jrc.ec.europa.eu/licence/com_reuse
    source_url: https://data.jrc.ec.europa.eu/dataset/42e8be89-54ff-464e-be7b-bf9e64da5218
    source_version: R2019A_v2.0
    path: ghs-smod_2015_v2.tif
    ghs_pop_2015:
    crs: 4326
    data_type: RasterDataset
    driver: raster
    meta:
    category: socio economic
    paper_doi: 10.2905/0C6B9751-A71F-4062-830B-43C9F432370F
    paper_ref: Schiavina et al (2019)
    source_author: JRC-ISPRA EC
    source_license: https://data.jrc.ec.europa.eu/licence/com_reuse
    source_url: https://data.jrc.ec.europa.eu/dataset/0c6b9751-a71f-4062-830b-43c9f432370f
    source_version: R2019A_v1.0
    path: ghs_pop_2015.tif
    ghs_pop_2015_54009:
    crs: 54009
    data_type: RasterDataset
    driver: raster
    meta:
    category: socio economic
    paper_doi: 10.2760/062975
    paper_ref: Florczyk et al (2019)
    source_license: CC BY 4.0
    source_url: https://ghsl.jrc.ec.europa.eu/download.php?ds=pop
    path: ghs_pop_2015_54009.tif
    ghs_smod_2015:
    crs: 54009
    data_type: RasterDataset
    driver: raster
    meta:
    category: socio economic
    paper_ref: Pesaresi and Freire (2016)
    source_author: JRC-ISPRA EC
    source_license: https://data.jrc.ec.europa.eu/licence/com_reuse
    source_url: https://data.jrc.ec.europa.eu/dataset/jrc-ghsl-ghs_smod_pop_globe_r2016a
    source_version: R2016A_v1.0
    path: ghs_smod_2015.tif
    globcover:
    crs: 4326
    data_type: RasterDataset
    driver: raster
    meta:
    category: landuse & landcover
    paper_doi: 10.1594/PANGAEA.787668
    paper_ref: Arino et al (2012)
    source_license: CC-BY-3.0
    source_url: http://due.esrin.esa.int/page_globcover.php
    path: globcover.tif
    glw_buffaloes:
    crs: 4326
    data_type: RasterDataset
    driver: raster
    meta:
    category: socio economic
    paper_doi: 10.7910/DVN/5U8MWI
    paper_ref: Gilbert at al (2018)
    source_author: glw (Gridded Livestock of World 3 Dataverse)
    source_license: CC 4.0
    source_url: https://dataverse.harvard.edu/dataverse/glw_3
    source_version: GLW 3, last downloaded 2020-06-11
    path: glw_buffaloes.tif
    glw_cattle:
    crs: 4326
    data_type: RasterDataset
    driver: raster
    meta:
    category: socio economic
    paper_doi: 10.7910/DVN/GIVQ75
    paper_ref: Gilbert at al (2018)
    source_author: glw (Gridded Livestock of World 3 Dataverse)
    source_license: CC 4.0
    source_url: https://dataverse.harvard.edu/dataverse/glw_3
    source_version: GLW 3, last downloaded 2020-06-11
    path: glw_cattle.tif
    glw_chicken:
    crs: 4326
    data_type: RasterDataset
    driver: raster
    meta:
    category: socio economic
    paper_doi: 10.7910/DVN/SUFASB
    paper_ref: Gilbert at al (2018)
    source_author: glw (Gridded Livestock of World 3 Dataverse)
    source_license: CC 4.0
    source_url: https://dataverse.harvard.edu/dataverse/glw_3
    source_version: GLW 3, last downloaded 2020-06-11
    path: glw_chicken.tif
    glw_ducks:
    crs: 4326
    data_type: RasterDataset
    driver: raster
    meta:
    category: socio economic
    paper_doi: 10.7910/DVN/ICHCBH
    paper_ref: Gilbert at al (2018)
    source_author: glw (Gridded Livestock of World 3 Dataverse)
    source_license: CC 4.0
    source_url: https://dataverse.harvard.edu/dataverse/glw_3
    source_version: GLW 3, last downloaded 2020-06-11
    path: glw_ducks.tif
    glw_goats:
    crs: 4326
    data_type: RasterDataset
    driver: raster
    meta:
    category: socio economic
    paper_doi: 10.7910/DVN/OCPH42
    paper_ref: Gilbert at al (2018)
    source_author: glw (Gridded Livestock of World 3 Dataverse)
    source_license: CC 4.0
    source_url: https://dataverse.harvard.edu/dataverse/glw_3
    source_version: GLW 3, last downloaded 2020-06-11
    path: glw_goats.tif
    glw_horses:
    crs: 4326
    data_type: RasterDataset
    driver: raster
    meta:
    category: socio economic
    paper_doi: 10.7910/DVN/7Q52MV
    paper_ref: Gilbert at al (2018)
    source_author: glw (Gridded Livestock of World 3 Dataverse)
    source_license: CC 4.0
    source_url: https://dataverse.harvard.edu/dataverse/glw_3
    source_version: GLW 3, last downloaded 2020-06-11
    path: glw_horses.tif
    glw_pigs:
    crs: 4326
    data_type: RasterDataset
    driver: raster
    meta:
    category: socio economic
    paper_doi: 10.7910/DVN/33N0JG
    paper_ref: Gilbert at al (2018)
    source_author: glw (Gridded Livestock of World 3 Dataverse)
    source_license: CC 4.0
    source_url: https://dataverse.harvard.edu/dataverse/glw_3
    source_version: GLW 3, last downloaded 2020-06-11
    path: glw_pigs.tif
    glw_sheep:
    crs: 4326
    data_type: RasterDataset
    driver: raster
    meta:
    category: socio economic
    paper_doi: 10.7910/DVN/BLWPZN
    paper_ref: Gilbert at al (2018)
    source_author: glw (Gridded Livestock of World 3 Dataverse)
    source_license: CC 4.0
    source_url: https://dataverse.harvard.edu/dataverse/glw_3
    source_version: GLW 3, last downloaded 2020-06-11
    path: glw_sheep.tif
    grdc:
    crs: 4326
    data_type: GeoDataFrame
    driver: csv
    meta:
    category: observed data
    source_info: GRDC-Station Catalogue, last downloaded 2020-07-16
    source_license: https://www.bafg.de/GRDC/EN/02_srvcs/21_tmsrs/210_prtl/tou.html;jsessionid=A56D50D4A36D3D8707CBF00CBD71F106.live11291?nn=2862854
    source_url: https://portal.grdc.bafg.de/applications/public.html?publicuser=PublicUser#dataDownload/StationCatalogue
    path: grdc.csv
    grip_roads:
    crs: 4326
    data_type: GeoDataFrame
    driver: vector
    meta:
    category: road
    paper_doi: 10.1088/1748-9326/aabd42
    paper_ref: Meijer et al, 2018
    source_license: CC0-1.0
    source_url: https://www.globio.info/download-grip-dataset
    source_version: v4
    path: grip_roads.gpkg
    grwl:
    data_type: GeoDataFrame
    driver: vector
    meta:
    category: surface water
    paper_doi: 10.1126/science.aat0636
    paper_ref: Allen and Pavelsky (2018)
    source_license: CC BY 4.0
    source_url: https://doi.org/10.5281/zenodo.1297434
    source_version: 1.01
    path: grwl.gpkg
    grwl_mask:
    data_type: RasterDataset
    driver: raster_tindex
    kwargs:
    chunks:
    x: 3000
    y: 3000
    mosaic_kwargs:
    method: nearest
    tileindex: location
    meta:
    paper_doi: 10.1126/science.aat0636
    paper_ref: Allen and Pavelsky (2018)
    source_license: CC BY 4.0
    source_url: https://doi.org/10.5281/zenodo.1297434
    source_version: 1.01
    nodata: 0
    path: grwl_tindex.gpkg
    gswo:
    data_type: RasterDataset
    driver: raster
    meta:
    category: surface water
    paper_doi: 10.1038/nature20584
    paper_ref: Pekel et al. (2016)
    source_url: https://global-surface-water.appspot.com/download
    source_version: v1_1_2019
    nodata: 255
    path: gswo.tif
    gtsmv3_eu_era5:
    crs: 4326
    data_type: GeoDataset
    driver: netcdf
    meta:
    category: ocean
    paper_doi: 10.24381/cds.8c59054f
    paper_ref: Copernicus Climate Change Service 2019
    source_license: https://cds.climate.copernicus.eu/cdsapp/#!/terms/licence-to-use-copernicus-products
    source_url: https://cds.climate.copernicus.eu/cdsapp#!/dataset/10.24381/cds.8c59054f?tab=overview
    source_version: GTSM v3.0
    path: gtsmv3_eu_era5.nc
    guf_bld_2012:
    crs: 4326
    data_type: RasterDataset
    driver: raster
    meta:
    category: socio economic
    paper_doi: 10.1016/j.isprsjprs.2017.10.012
    paper_ref: Esch et al (2017)
    source_license: https://www.dlr.de/eoc/en/PortalData/60/Resources/dokumente/guf/DLR-GUF_LicenseAgreement-and-OrderForm.pdf
    source_url: http://www.dlr.de/guf
    path: guf_bld_2012.tif
    hydro_lakes:
    crs: 4326
    data_type: GeoDataFrame
    driver: vector
    meta:
    category: surface water
    source_author: Arjen Haag
    source_info: HydroLAKES.v10_extract
    source_version: 1.0
    path: hydro_lakes.gpkg
    unit_mult:
    Area_avg: 1000000.0
    hydro_reservoirs:
    crs: 4326
    data_type: GeoDataFrame
    driver: vector
    meta:
    category: surface water
    source_author: Alessia Matano
    source_info: GRanD.v1.1_HydroLAKES.v10_JRC.2016
    source_version: 1.0
    nodata: -99
    path: hydro_reservoirs.gpkg
    unit_mult:
    Area_avg: 1000000.0
    Capacity_max: 1000000.0
    Capacity_min: 1000000.0
    Capacity_norm: 1000000.0
    Vol_avg: 1000000.0

    .....Continued.....





    Dockerfile:

    # syntax=docker/dockerfile:1

    # Use Mambaforge as the base image for Conda support
    FROM condaforge/mambaforge:latest

    # Set maintainer info
    LABEL maintainer="Maarten Pronk <maarten.pronk@deltares.nl>"

    # Copy .cdsapirc to root directory for configuration
    COPY .cdsapirc /root/.cdsapirc

    # Set environment to avoid interactive prompts
    ENV DEBIAN_FRONTEND=noninteractive

    # Install system dependencies
    RUN apt-get update && apt-get install -y \
    g++ git gcc curl tar unzip libcurl4-openssl-dev \
    && rm -rf /var/lib/apt/lists/*

    # Manually install Julia (x86-64)
    RUN curl -fsSL https://julialang-s3.julialang.org/bin/linux/x64/1.10/julia-1.10.1-linux-x86_64.tar.gz | tar -xz -C /opt/
    ENV PATH="/opt/julia-1.10.1/bin:$PATH"
    ENV JULIA_DEPOT_PATH="/opt/julia"

    # Install Julia package Wflow
    RUN julia -e 'println("Starting Wflow installation..."); \
    using Pkg; Pkg.update(); println("Registry updated"); \
    Pkg.add(name="Wflow"); println("Wflow installed successfully"); \
    using Wflow; println("Wflow loaded and verified")'

    # Create and activate a new conda environment
    RUN mamba create -n hydromt-wflow -c conda-forge \
    python=3.11 gunicorn flask -y

    # Activate the environment by updating PATH
    ENV CONDA_DEFAULT_ENV=hydromt-wflow
    ENV PATH=/opt/conda/envs/hydromt-wflow/bin:$PATH

    # Install Python dependencies with pip (optional)
    COPY requirements.txt .
    RUN test -f requirements.txt && \
    conda run -n hydromt-wflow pip install --no-cache-dir -r requirements.txt || \
    echo "No requirements.txt found"

    # Copy app and Julia bridge script
    # COPY app.py julia_bridge.jl ./
    COPY . .
    # Expose port for web app
    EXPOSE 5010

    # Entrypoint: run Flask app via gunicorn using Conda environment
    ENTRYPOINT ["conda", "run", "--no-capture-output", "-n", "hydromt-wflow"]
    CMD ["gunicorn", "--bind", "0.0.0.0:5010", "--workers", "5","--timeout", "5000", "app:app"]


    The issue:

    • The App with Julia command for wflow and python cmd command for hydromt runs perfectly on local.
    • But when I make its docker container, somehow the Hydromt command doesn't execute and the TOML file is not generated
    • Ive tried sending multiple Post requests to my app and it fails everytime.

    Continue reading...

Compartilhe esta Página