PEM-Humboldt / biotablero-search-backend

Backend for the search module of BioTablero
MIT License
1 stars 0 forks source link

[POC] Primera versión de *POST /{metric_id}/layer* #7

Closed erikasv closed 1 month ago

erikasv commented 1 month ago

Descripción

Implementar la lógica para retornar el raster de una métrica. El alcance de esta tarea va a ser retornar el raster cortado por el polígono para 1 periodo de pérdida y persistencia, cualquiera. También se deben hacer las siguientes cosas:

Consideraciones

erikasv commented 1 month ago

Hey team! Please add your planning poker estimate with Zenhub @cazapatamar @ManuelStardust

cazapatamar commented 1 month ago

Este es al avance de esta tarea:

Se logra implementar la logica del corte en la capa ´services´ el cual se llama desde la definicion de la ruta. Asi mismo se està recibiendo el poligono como parametro de la peticion post y esta se està leyendo, transformando para poder pasarselo al servicio, realizar el corte y, configurar colores y demas parametros y retornar el binario en formato PNG.

La ruta lo recibe y lo retorna como un response de content_type:png.

image.png

Hay algo que no me gusta del todo de esta implementacion y es que la logica del corte tiene unas dependencias de matplotlib y algo me dice que no es necesario y que quiza se puede hacer de otra forma mas directa y quizà encontrando una mejora en desempeño, aunque asi como esta funciona.

Creo que hay que continuar trabajando en el punto anterior, en la organicacion del servicio, y en revisar a profundidad los otros tipos de response (si es que los hay) asi como lo hablamos en la reunion de seguimiento del spike.

cazapatamar commented 1 month ago

Se cumple con el objetivo de la tarea ya que se generó toda la logica para que el endpoint recibiera el geojson en el body de la peticion post, se creo la capa servicios la cual procesa los datos y retorna la respuesta, se crean utilitarios para manejo de raster (corte y generar png), se agrega logica para leer las variables del archivo .env.

Si bien se implementó una funcion de corte y generar png, se recomienda revisarla ya que no parece ser lo mas optimo. Evaluar si se puede quitar dependencias matplotlib y buscar otras librerias para realizar este proceso y que sea mas optimo. Se puede revisar:

Pillow Rasteroi Windowed. Este ejemplo puede servir tambien.