Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[GOES16] Sending images to Rionowcast API #628

Open
wants to merge 53 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from 1 commit
Commits
Show all changes
53 commits
Select commit Hold shift + click to select a range
95604e1
changing max retries for precipitacao_alertario
patriciacatandi Feb 3, 2024
0c98555
Merge branch 'master' into staging/cor_satelite
mergify[bot] Feb 5, 2024
b8c6a2f
Merge branch 'master' into staging/cor_satelite
mergify[bot] Feb 6, 2024
a9b0889
Merge branch 'master' into staging/cor_satelite
mergify[bot] Feb 6, 2024
2b84dab
Merge branch 'master' into staging/cor_satelite
mergify[bot] Feb 7, 2024
948d312
Merge branch 'master' into staging/cor_satelite
mergify[bot] Feb 7, 2024
fabb1cc
Merge branch 'master' into staging/cor_satelite
mergify[bot] Feb 7, 2024
de5e78a
Merge branch 'master' into staging/cor_satelite
mergify[bot] Feb 8, 2024
605e192
Merge branch 'master' into staging/cor_satelite
mergify[bot] Feb 8, 2024
557c2d1
Merge branch 'master' into staging/cor_satelite
mergify[bot] Feb 26, 2024
b2842b3
Merge branch 'master' into staging/cor_satelite
mergify[bot] Feb 26, 2024
9d2dd17
Merge branch 'master' into staging/cor_satelite
mergify[bot] Feb 28, 2024
cdefab9
Merge branch 'master' into staging/cor_satelite
mergify[bot] Feb 28, 2024
9b2cbad
Merge branch 'master' into staging/cor_satelite
mergify[bot] Mar 1, 2024
a482ba6
Merge branch 'master' into staging/cor_satelite
mergify[bot] Mar 1, 2024
8939418
Merge branch 'master' into staging/cor_satelite
mergify[bot] Mar 4, 2024
508bcbe
Merge branch 'master' into staging/cor_satelite
mergify[bot] Mar 4, 2024
5c1be58
Merge branch 'master' into staging/cor_satelite
mergify[bot] Mar 15, 2024
5c7f0ab
Merge branch 'master' into staging/cor_satelite
mergify[bot] Mar 22, 2024
1dbb34a
Merge branch 'master' into staging/cor_satelite
mergify[bot] Mar 30, 2024
1b057e2
Merge branch 'master' into staging/cor_satelite
mergify[bot] Apr 1, 2024
7f555c4
Merge branch 'master' into staging/cor_satelite
mergify[bot] Apr 2, 2024
27233c7
Merge branch 'master' into staging/cor_satelite
mergify[bot] Apr 3, 2024
ddf664c
Merge branch 'master' into staging/cor_satelite
mergify[bot] Apr 3, 2024
7483638
Merge branch 'master' into staging/cor_satelite
mergify[bot] Apr 4, 2024
30b2e5e
Merge branch 'master' into staging/cor_satelite
mergify[bot] Apr 8, 2024
ab026d2
Merge branch 'master' into staging/cor_satelite
mergify[bot] Apr 11, 2024
cfea3b7
Merge branch 'master' into staging/cor_satelite
mergify[bot] Apr 15, 2024
f364e47
Merge branch 'master' into staging/cor_satelite
mergify[bot] Apr 18, 2024
647faa5
Merge branch 'master' into staging/cor_satelite
mergify[bot] Apr 18, 2024
463c3bc
Merge branch 'master' into staging/cor_satelite
mergify[bot] Apr 18, 2024
22dccf9
Merge branch 'master' into staging/cor_satelite
mergify[bot] Apr 19, 2024
917ad69
Merge branch 'master' into staging/cor_satelite
mergify[bot] Apr 19, 2024
3928c51
Merge branch 'master' into staging/cor_satelite
mergify[bot] Apr 26, 2024
48e02b4
Merge branch 'master' into staging/cor_satelite
mergify[bot] Apr 30, 2024
c39208e
Merge branch 'master' into staging/cor_satelite
mergify[bot] Apr 30, 2024
b824b87
Merge branch 'master' into staging/cor_satelite
mergify[bot] Apr 30, 2024
b42576a
Merge branch 'master' into staging/cor_satelite
mergify[bot] May 3, 2024
b63078c
Merge branch 'master' into staging/cor_satelite
mergify[bot] May 10, 2024
127638a
Merge branch 'master' into staging/cor_satelite
mergify[bot] May 14, 2024
d96aaee
Merge branch 'master' into staging/cor_satelite
mergify[bot] May 17, 2024
76548d9
Merge branch 'master' into staging/cor_satelite
mergify[bot] May 17, 2024
f163d89
Merge branch 'master' into staging/cor_satelite
mergify[bot] May 17, 2024
62b6cc1
testing send image to api
patriciacatandi Jun 15, 2024
493fb38
Merge branch 'master' into staging/cor_satelite
mergify[bot] Jun 15, 2024
ab94bcd
changin dpi to 80
patriciacatandi Jun 15, 2024
553d5f6
Merge branch 'staging/cor_satelite' of github.com:prefeitura-rio/pipe…
patriciacatandi Jun 15, 2024
9507761
changing max and min value, ignoring nans
patriciacatandi Jun 16, 2024
569a3ed
Changing graph range for DSI products based on Eduardo values
patriciacatandi Jun 18, 2024
b198999
remove vmin from array min value and same from max
patriciacatandi Jun 18, 2024
387b90c
Merge branch 'master' into staging/cor_satelite
mergify[bot] Jun 19, 2024
ce20de1
Merge branch 'master' into staging/cor_satelite
mergify[bot] Feb 5, 2025
4942e3c
Merge branch 'master' into staging/cor_satelite
mergify[bot] Feb 6, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@

@task(
nout=2,
max_retries=constants.TASK_MAX_RETRIES.value,
max_retries=10, # constants.TASK_MAX_RETRIES.value,
retry_delay=timedelta(seconds=constants.TASK_RETRY_DELAY.value),
)
def tratar_dados(
Expand Down
87 changes: 68 additions & 19 deletions pipelines/rj_cor/meteorologia/satelite/satellite_utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,6 @@
# Required Libraries
# ====================================================================

import base64
import datetime
import os
import shutil
Expand All @@ -69,7 +68,12 @@
import xarray as xr

from pipelines.rj_cor.meteorologia.satelite.remap import remap
from pipelines.utils.utils import get_credentials_from_env, list_blobs_with_prefix, log
from pipelines.utils.utils import (
get_credentials_from_env,
get_vault_secret,
list_blobs_with_prefix,
log,
)


def get_blob_with_prefix(bucket_name: str, prefix: str, mode: str = "prod") -> str:
Expand Down Expand Up @@ -589,14 +593,37 @@
longitudes = list(matrix_temp.columns)
latitudes = list(matrix_temp.index)

log("Convert to xr dataarray")
log("Convert df to xr data array")
data_array = xr.DataArray(
matrix, dims=("lat", "lon"), coords={"lon": longitudes, "lat": latitudes}
)
log("end")
log("Finished converting df to data array")

return data_array


# pylint: disable=dangerous-default-value
def get_point_value(
data_array: xr.DataArray, selected_point: list = [-22.89980, -43.35546]
) -> float:
"""
Find the nearest point on data_array from the selected_point and return its value
"""

# Find the nearest index of latitude and longitude from selected_point
lat_idx = (data_array["lat"] - selected_point[0]).argmin().values
lon_idx = (data_array["lon"] - selected_point[1]).argmin().values

# Get the correspondent value of this point
point_value = data_array.isel(lat=lat_idx, lon=lon_idx).values
log(
"\nThe value of the selected point is {point_value}. It will be replace by 0 if is nan.\n"
)
point_value = 0 if np.isnan(point_value) else float(point_value)

return point_value


# pylint: disable=unused-variable
def create_and_save_image(data: xr.DataArray, info: dict, variable) -> Path:
"""
Expand All @@ -616,13 +643,21 @@
# colormap = "gray_r" # White to black for IR channels

# Plot the image
img = axis.imshow(data, origin="upper", extent=img_extent, cmap=colormap, alpha=0.8)
img = axis.imshow(
data,
origin="upper",
extent=img_extent,
cmap=colormap,
alpha=0.8,
vmin=info["vmin"],
vmax=info["vmax"],
)

# # Find shapefile file "Limite_Bairros_RJ.shp" across the entire file system
# for root, dirs, files in os.walk(os.sep):
# if "Limite_Bairros_RJ.shp" in files:
# log(f"[DEBUG] ROOT {root}")
# shapefile_dir = root
# shapefile_dir = Path(root)
# break
# else:
# print("File not found.")
Expand Down Expand Up @@ -684,26 +719,40 @@
output_image_path.mkdir(parents=True, exist_ok=True)

plt.savefig(save_image_path, bbox_inches="tight", pad_inches=0, dpi=300)
log("\n Ended saving image")
log(f"\n Ended saving image on {save_image_path}")
return save_image_path


def upload_image_to_api(info: dict, save_image_path: Path):
# def upload_image_to_api(info: dict, save_image_path: Path):
def upload_image_to_api(var: str, save_image_path: Path, point_value: float):
"""
Upload image to api
Upload image and point value to API.
"""
username = "your-username"
password = "your-password"
# We need to change this variable so it can be posted on API
var = "cp" if var == "cape" else var

log("Getting API url")
url_secret = get_vault_secret("rionowcast")["data"]
log(f"urlsecret1 {url_secret}")
url_secret = url_secret["url_api_satellite_products"]
log(f"urlsecret2 {url_secret}")
api_url = f"{url_secret}/{var.lower()}"
# api_url = f"http://127.0.0.1:5000/upload/{var.lower()}"
log(
f"\n Sending image {save_image_path} to API: {api_url} with value {point_value}\n"
)

image = base64.b64encode(open(save_image_path, "rb").read()).decode()
payload = {"value": point_value}

response = requests.post(
"https://api.example.com/upload-image",
data={"image": image, "timestamp": info["datetime_save"]},
auth=(username, password),
)
# Convert from Path to string
save_image_path = str(save_image_path)

with open(save_image_path, "rb") as image_file:
files = {"image": (save_image_path, image_file, "image/jpeg")}
response = requests.post(api_url, data=payload, files=files)

if response.status_code == 200:
print("Image sent to API")
print("Finished the request successful!")
print(response.json())
Fixed Show fixed Hide fixed
else:
print("Problem senting imagem to API")
print(f"Error: {response.status_code}, {response.text}")
Fixed Show fixed Hide fixed
11 changes: 8 additions & 3 deletions pipelines/rj_cor/meteorologia/satelite/tasks.py
Original file line number Diff line number Diff line change
Expand Up @@ -24,9 +24,11 @@
get_files_from_aws,
get_files_from_gcp,
get_info,
get_point_value,
get_variable_values,
remap_g16,
save_data_in_file,
upload_image_to_api,
)
from pipelines.utils.utils import log

Expand Down Expand Up @@ -225,7 +227,7 @@ def save_data(info: dict, mode_redis: str = "prod") -> Union[str, Path]:
@task
def create_image_and_upload_to_api(info: dict, output_filepath: Path):
"""
Create image from dataframe and send it to API
Create image from dataframe, get the value of a point on the image and send these to API.
"""

dfr = pd.read_csv(output_filepath)
Expand All @@ -237,12 +239,15 @@ def create_image_and_upload_to_api(info: dict, output_filepath: Path):

var = var.lower()
data_array = get_variable_values(dfr, var)
point_value = get_point_value(data_array)

# Get the pixel values
data = data_array.data[:]
log(f"\n[DEBUG] data {data}")
log(f"\n[DEBUG] {var} data \n{data}")
log(f"\nmax value: {data.max()} min value: {data.min()}")
save_image_path = create_and_save_image(data, info, var)

log(f"\nStart uploading image for variable {var} on API\n")
# upload_image_to_api(info, save_image_path)
upload_image_to_api(var, save_image_path, point_value)
log(save_image_path)
log(f"\nEnd uploading image for variable {var} on API\n")
Loading