730 lines
1.7 MiB
Plaintext
730 lines
1.7 MiB
Plaintext
|
|
{
|
||
|
|
"cells": [
|
||
|
|
{
|
||
|
|
"cell_type": "code",
|
||
|
|
"execution_count": 22,
|
||
|
|
"metadata": {},
|
||
|
|
"outputs": [],
|
||
|
|
"source": [
|
||
|
|
"import numpy as np\n",
|
||
|
|
"import matplotlib.pyplot as plt\n",
|
||
|
|
"\n",
|
||
|
|
"from matplotlib import path\n",
|
||
|
|
"import matplotlib.patches as patches\n",
|
||
|
|
"from skimage import draw\n",
|
||
|
|
"import scipy.ndimage as ndimage\n",
|
||
|
|
"import Utils\n",
|
||
|
|
"import georasters as gr\n",
|
||
|
|
"import cv2\n",
|
||
|
|
"from Utils import doubleMADsfromMedian\n",
|
||
|
|
"from skimage.transform import resize\n",
|
||
|
|
"import pickle\n",
|
||
|
|
"import os\n",
|
||
|
|
"from fpdf import FPDF\n",
|
||
|
|
"import datetime\n",
|
||
|
|
"\n",
|
||
|
|
"\n",
|
||
|
|
"def create_indvPage(pdf, folder_img, GR_RGB, GR_T, GR_PV, string, panel, PLANTA, ZONA_PV):\n",
|
||
|
|
" \n",
|
||
|
|
" path_img = folder_img + str(ZONA_PV) + '_' + str(string['id']) + '_' + str(panel['id'])\n",
|
||
|
|
" path = [path_img + '_IR.png',path_img +'_RGB.png', \n",
|
||
|
|
" path_img + '_mesa_IR.png', path_img +'_mesa_RGB.png',\n",
|
||
|
|
" folder_img + str(ZONA_PV) + '_' + str(string['id']) + '_mesa_PV.png']\n",
|
||
|
|
" \n",
|
||
|
|
" if not(all([os.path.isfile(p) for p in path])):\n",
|
||
|
|
" create_indvImg(path_img, GR_RGB, GR_T, GR_PV, string, panel)\n",
|
||
|
|
" \n",
|
||
|
|
" datetime_object = datetime.date.today() \n",
|
||
|
|
" \n",
|
||
|
|
" \n",
|
||
|
|
" pdf.add_page()\n",
|
||
|
|
" pdf.set_font('Arial', 'B', 16)\n",
|
||
|
|
"\n",
|
||
|
|
" pdf.image('rentadrone-logo.png', x = 10, y = 10, w = 60, h = 10)\n",
|
||
|
|
" pdf.cell(220, 10, '')\n",
|
||
|
|
" pdf.set_font('Arial', '', 12)\n",
|
||
|
|
" pdf.cell(40, 10, 'Fecha: ' + str(datetime_object))\n",
|
||
|
|
"\n",
|
||
|
|
" pdf.ln(10)\n",
|
||
|
|
"\n",
|
||
|
|
" pdf.cell(80, 10, 'Foto IR',0,0, '') \n",
|
||
|
|
" pdf.cell(100, 10, 'Foto RGB',0,0, '')\n",
|
||
|
|
" pdf.cell(120, 10, 'Sector ' + ZONA_PV,0,0, 'C')\n",
|
||
|
|
"\n",
|
||
|
|
" ### Put image ####\n",
|
||
|
|
" pdf.image(path_img + '_IR.png', x = 10, y = 30, w = 60, h = 30)\n",
|
||
|
|
" pdf.image(path_img +'_RGB.png', x = 90, y = 30, w = 60, h = 30)\n",
|
||
|
|
" pdf.ln(40)\n",
|
||
|
|
" ### Put image ####\n",
|
||
|
|
" pdf.cell(200, 10, 'ID Mesa Foto RGB',0,0, '')\n",
|
||
|
|
" ### Put image ####\n",
|
||
|
|
" pdf.image(path_img +'_mesa_RGB.png', x = 10, y = 70, w = 190, h = 30)\n",
|
||
|
|
" pdf.ln(40)\n",
|
||
|
|
" ### Put image ####\n",
|
||
|
|
" pdf.cell(200, 10, 'ID Mesa Foto Térmica Del mosaico',0,0, '')\n",
|
||
|
|
" ### Put image ####\n",
|
||
|
|
" pdf.image(path_img + '_mesa_IR.png', x = 10, y = 110, w = 190, h = 30)\n",
|
||
|
|
" pdf.ln(40)\n",
|
||
|
|
" ### Put image ####\n",
|
||
|
|
" ## Put image ###\n",
|
||
|
|
" pdf.image(folder_img + str(ZONA_PV) + '_' + str(string['id']) + '_mesa_PV.png', x= 200, y =30, w = 110, h = 160)\n",
|
||
|
|
" ## Put image ###\n",
|
||
|
|
"\n",
|
||
|
|
" pdf.cell(0, 10, 'Datos de la falla:')\n",
|
||
|
|
" pdf.ln(10)\n",
|
||
|
|
" pdf.cell(75, 10, 'Planta: ' + PLANTA)\n",
|
||
|
|
" pdf.cell(40, 10, 'ZONA PV: ' + ZONA_PV)\n",
|
||
|
|
"\n",
|
||
|
|
" pdf.ln(10)\n",
|
||
|
|
" pdf.cell(75, 10, 'ID PANEL: ' + str(string['id']) + '_' + str(panel['id']))\n",
|
||
|
|
" pdf.cell(60, 10, 'Tipo: '+ panel['status'])\n",
|
||
|
|
" pdf.cell(40, 10, 'Severidad: ' + panel['severidad'])\n",
|
||
|
|
"\n",
|
||
|
|
"\n",
|
||
|
|
"def create_indvImg(path_img, GR_RGB, GR_T, GR_PV, string, panel, epsilon = 20, dpi = 100):\n",
|
||
|
|
" \n",
|
||
|
|
" geot_T = GR_T.geot\n",
|
||
|
|
" geot_RGB = GR_RGB.geot\n",
|
||
|
|
" geot_PV = GR_PV.geot\n",
|
||
|
|
" \n",
|
||
|
|
" matrix_expand_bounds = [[-epsilon, -epsilon],\n",
|
||
|
|
" [+epsilon, -epsilon], \n",
|
||
|
|
" [+epsilon, +epsilon], \n",
|
||
|
|
" [-epsilon, +epsilon]]\n",
|
||
|
|
" \n",
|
||
|
|
" \n",
|
||
|
|
" ############ Image IR ############\n",
|
||
|
|
" Points = Utils.gps2pixel(panel['points'], geot_T) + matrix_expand_bounds\n",
|
||
|
|
" plt.figure(0)\n",
|
||
|
|
" plt.figure(figsize=(8, 8))\n",
|
||
|
|
" plt.imsave(path_img +'_IR.png',GR_T.raster.data[0,Points[0][1] : Points[2][1], Points[0][0]: Points[2][0]],\n",
|
||
|
|
" cmap = 'gray', dpi=dpi)\n",
|
||
|
|
"\n",
|
||
|
|
" ############ Image RGB ############\n",
|
||
|
|
" Points = Utils.gps2pixel(panel['points'], geot_RGB) + matrix_expand_bounds\n",
|
||
|
|
" plt.figure(1)\n",
|
||
|
|
" plt.figure(figsize=(8, 8))\n",
|
||
|
|
" plt.imsave(path_img + '_RGB.png',GR_RGB.raster.data[:3,:,:].transpose(1, 2, 0)[Points[0][1] : Points[2][1], Points[0][0]: Points[2][0],:],\n",
|
||
|
|
" dpi=dpi)\n",
|
||
|
|
"\n",
|
||
|
|
"\n",
|
||
|
|
" ############ Image IR mesa ############\n",
|
||
|
|
" Points = Utils.gps2pixel(string['points'], geot_T) + matrix_expand_bounds\n",
|
||
|
|
" plt.figure(2)\n",
|
||
|
|
" plt.figure(figsize=(16, 16))\n",
|
||
|
|
"\n",
|
||
|
|
" ax = plt.axes(frameon=False, xticks=[],yticks=[])\n",
|
||
|
|
" ax.imshow(GR_T.raster.data[0,Points[0][1] : Points[2][1], Points[0][0]: Points[2][0]])\n",
|
||
|
|
"\n",
|
||
|
|
"\n",
|
||
|
|
" Points = Utils.gps2pixel(panel['points'], geot_T) - (Points[0][0], Points[0][1])\n",
|
||
|
|
" poly = patches.Polygon(Points,\n",
|
||
|
|
" linewidth=2,\n",
|
||
|
|
" edgecolor='red',\n",
|
||
|
|
" alpha=.5,\n",
|
||
|
|
" fill = False)\n",
|
||
|
|
"\n",
|
||
|
|
" ax.add_patch(poly)\n",
|
||
|
|
"\n",
|
||
|
|
" plt.savefig(path_img + '_mesa_IR.png', bbox_inches='tight', pad_inches=0, dpi = dpi)\n",
|
||
|
|
" plt.close()\n",
|
||
|
|
"\n",
|
||
|
|
" ############ Image RGB mesa ############\n",
|
||
|
|
"\n",
|
||
|
|
" Points = Utils.gps2pixel(string['points'], geot_RGB) + matrix_expand_bounds\n",
|
||
|
|
" plt.figure(3)\n",
|
||
|
|
" plt.figure(figsize=(16, 16))\n",
|
||
|
|
"\n",
|
||
|
|
" ax = plt.axes(frameon=False, xticks=[],yticks=[])\n",
|
||
|
|
" ax.imshow(GR_RGB.raster.data[:3,:,:].transpose(1, 2, 0)[Points[0][1] : Points[2][1], Points[0][0]: Points[2][0],:])\n",
|
||
|
|
"\n",
|
||
|
|
" Points = Utils.gps2pixel(panel['points'], geot_RGB) - (Points[0][0], Points[0][1])\n",
|
||
|
|
"\n",
|
||
|
|
" poly = patches.Polygon(Points,\n",
|
||
|
|
" linewidth=2,\n",
|
||
|
|
" edgecolor='red',\n",
|
||
|
|
" alpha=.5,\n",
|
||
|
|
" fill = False)\n",
|
||
|
|
"\n",
|
||
|
|
" ax.add_patch(poly)\n",
|
||
|
|
"\n",
|
||
|
|
" plt.savefig(path_img + '_mesa_RGB.png', bbox_inches='tight', pad_inches=0, dpi = dpi) \n",
|
||
|
|
" plt.close() \n",
|
||
|
|
"\n",
|
||
|
|
"\n",
|
||
|
|
" plt.figure(4)\n",
|
||
|
|
" plt.figure(figsize=(16, 16))\n",
|
||
|
|
"\n",
|
||
|
|
" ax = plt.axes(frameon=False, xticks=[],yticks=[])\n",
|
||
|
|
" A = GR_PV.raster.data\n",
|
||
|
|
" A[0,0] = 2\n",
|
||
|
|
" ax.imshow(-A,cmap = 'gray')\n",
|
||
|
|
"\n",
|
||
|
|
" Points = Utils.gps2pixel(string['points'], geot_PV)\n",
|
||
|
|
" poly = patches.Polygon(Points,\n",
|
||
|
|
" linewidth=2,\n",
|
||
|
|
" edgecolor='red',\n",
|
||
|
|
" alpha=1,\n",
|
||
|
|
" fill = True,\n",
|
||
|
|
" color = 'red')\n",
|
||
|
|
" plt.text(np.mean([x[0] for x in Points]), np.mean([y[1] for y in Points]) , str(string['id']), bbox=dict(facecolor='red', alpha=0.8))\n",
|
||
|
|
"\n",
|
||
|
|
" ax.add_patch(poly)\n",
|
||
|
|
"\n",
|
||
|
|
" plt.savefig('_'.join(path_img.split('_')[:-1]) +'_mesa_PV.png', bbox_inches='tight', pad_inches=0, dpi = dpi)\n",
|
||
|
|
"\n",
|
||
|
|
" #I = cv2.rotate(cv2.imread('im_mesa_PV.png'), cv2.ROTATE_90_COUNTERCLOCKWISE)\n",
|
||
|
|
" #cv2.imwrite('im_mesa_PV.png', I)\n",
|
||
|
|
" plt.close()\n",
|
||
|
|
" \n",
|
||
|
|
" \n",
|
||
|
|
" \n",
|
||
|
|
"def create_multiPage(pdf, folder_img, GR_RGB, GR_T, GR_PV, string, panels, PLANTA, ZONA_PV):\n",
|
||
|
|
" \n",
|
||
|
|
" path_img = folder_img + str(ZONA_PV) + '_' + str(string['id'])\n",
|
||
|
|
" path = [path_img + '_mesa_RGB_multi.png', path_img +'_mesa_IR_multi.png',\n",
|
||
|
|
" folder_img + str(ZONA_PV) + '_' + str(string['id']) + '_mesa_PV.png']\n",
|
||
|
|
" \n",
|
||
|
|
" if not(all([os.path.isfile(p) for p in path])):\n",
|
||
|
|
" create_multiImg(path_img, GR_RGB, GR_T, GR_PV, string, panels)\n",
|
||
|
|
" \n",
|
||
|
|
" datetime_object = datetime.date.today() \n",
|
||
|
|
" \n",
|
||
|
|
" pdf.add_page()\n",
|
||
|
|
" pdf.set_font('Arial', 'B', 16)\n",
|
||
|
|
"\n",
|
||
|
|
" pdf.image('rentadrone-logo.png', x = 10, y = 10, w = 60, h = 10)\n",
|
||
|
|
" pdf.cell(220, 10, '')\n",
|
||
|
|
" pdf.set_font('Arial', '', 12)\n",
|
||
|
|
" pdf.cell(40, 10, 'Fecha: ' + str(datetime_object))\n",
|
||
|
|
"\n",
|
||
|
|
" pdf.ln(10)\n",
|
||
|
|
"\n",
|
||
|
|
" pdf.cell(180, 10, 'ID Mesa Foto RGB',0,0, '')\n",
|
||
|
|
" pdf.cell(120, 10, 'Sector ' + ZONA_PV,0,0, 'C')\n",
|
||
|
|
"\n",
|
||
|
|
"\n",
|
||
|
|
"\n",
|
||
|
|
" ### Put image ####\n",
|
||
|
|
" pdf.image(path_img +'_mesa_RGB_multi.png', x = 10, y = 30, w = 190, h = 30)\n",
|
||
|
|
" pdf.ln(40)\n",
|
||
|
|
" ### Put image ####\n",
|
||
|
|
" pdf.cell(200, 10, 'ID Mesa Foto Térmica Del mosaico',0,0, '')\n",
|
||
|
|
" ### Put image ####\n",
|
||
|
|
" pdf.image(path_img + '_mesa_IR_multi.png', x = 10, y = 70, w = 190, h = 30)\n",
|
||
|
|
" pdf.ln(40)\n",
|
||
|
|
" ### Put image ####\n",
|
||
|
|
" ## Put image ###\n",
|
||
|
|
" pdf.image(path_img + '_mesa_PV.png', x= 200, y =30, w = 110, h = 160)\n",
|
||
|
|
" ## Put image ###\n",
|
||
|
|
"\n",
|
||
|
|
" pdf.cell(0, 10, 'Datos de la falla:')\n",
|
||
|
|
" pdf.ln(10)\n",
|
||
|
|
" pdf.cell(75, 10, 'Planta: ' + PLANTA)\n",
|
||
|
|
" pdf.cell(40, 10, 'ZONA PV: ' + ZONA_PV)\n",
|
||
|
|
" pdf.ln(10)\n",
|
||
|
|
" pdf.cell(60, 10, 'Tipo: '+ list(panels.items())[0][1]['status'])\n",
|
||
|
|
" pdf.cell(40, 10, 'Severidad: ' + list(panels.items())[0][1]['severidad'])\n",
|
||
|
|
" pdf.ln(10)\n",
|
||
|
|
" pdf.multi_cell(150, 10, 'ID PANEL: ' + ', '.join([str(string['id']) + '_' + str(key) for key in panels.keys()]))\n",
|
||
|
|
" \n",
|
||
|
|
"def create_multiImg(path_img, GR_RGB, GR_T, GR_PV, string, panels, epsilon = 20, dpi = 100):\n",
|
||
|
|
" \n",
|
||
|
|
" geot_T = GR_T.geot\n",
|
||
|
|
" geot_RGB = GR_RGB.geot\n",
|
||
|
|
" geot_PV = GR_PV.geot\n",
|
||
|
|
" \n",
|
||
|
|
" matrix_expand_bounds = [[-epsilon, -epsilon],\n",
|
||
|
|
" [+epsilon, -epsilon], \n",
|
||
|
|
" [+epsilon, +epsilon], \n",
|
||
|
|
" [-epsilon, +epsilon]]\n",
|
||
|
|
" \n",
|
||
|
|
"\n",
|
||
|
|
" ############ Image IR mesa ############\n",
|
||
|
|
" Points = Utils.gps2pixel(string['points'], geot_T) + matrix_expand_bounds\n",
|
||
|
|
" plt.figure(2)\n",
|
||
|
|
" plt.figure(figsize=(16, 16))\n",
|
||
|
|
"\n",
|
||
|
|
" ax = plt.axes(frameon=False, xticks=[],yticks=[])\n",
|
||
|
|
" ax.imshow(GR_T.raster.data[0,Points[0][1] : Points[2][1], Points[0][0]: Points[2][0]])\n",
|
||
|
|
"\n",
|
||
|
|
" for panel_key in panels.keys():\n",
|
||
|
|
" \n",
|
||
|
|
" panel = panels[panel_key]\n",
|
||
|
|
" Points = Utils.gps2pixel(panel['points'], geot_T) - (Points[0][0], Points[0][1])\n",
|
||
|
|
" poly = patches.Polygon(Points,\n",
|
||
|
|
" linewidth=2,\n",
|
||
|
|
" edgecolor='red',\n",
|
||
|
|
" alpha=.5,\n",
|
||
|
|
" fill = False)\n",
|
||
|
|
"\n",
|
||
|
|
" ax.add_patch(poly)\n",
|
||
|
|
"\n",
|
||
|
|
" plt.savefig(path_img + '_mesa_IR_multi.png', bbox_inches='tight', pad_inches=0, dpi = dpi)\n",
|
||
|
|
" plt.close()\n",
|
||
|
|
"\n",
|
||
|
|
" ############ Image RGB mesa ############\n",
|
||
|
|
"\n",
|
||
|
|
" Points = Utils.gps2pixel(string['points'], geot_RGB) + matrix_expand_bounds\n",
|
||
|
|
" plt.figure(3)\n",
|
||
|
|
" plt.figure(figsize=(16, 16))\n",
|
||
|
|
"\n",
|
||
|
|
" ax = plt.axes(frameon=False, xticks=[],yticks=[])\n",
|
||
|
|
" ax.imshow(GR_RGB.raster.data[:3,:,:].transpose(1, 2, 0)[Points[0][1] : Points[2][1], Points[0][0]: Points[2][0],:])\n",
|
||
|
|
" \n",
|
||
|
|
" for panel_key in panels.keys():\n",
|
||
|
|
" \n",
|
||
|
|
" panel = panels[panel_key]\n",
|
||
|
|
" Points = Utils.gps2pixel(panel['points'], geot_RGB) - (Points[0][0], Points[0][1])\n",
|
||
|
|
"\n",
|
||
|
|
" poly = patches.Polygon(Points,\n",
|
||
|
|
" linewidth=2,\n",
|
||
|
|
" edgecolor='red',\n",
|
||
|
|
" alpha=.5,\n",
|
||
|
|
" fill = False)\n",
|
||
|
|
"\n",
|
||
|
|
" ax.add_patch(poly)\n",
|
||
|
|
"\n",
|
||
|
|
" plt.savefig(path_img + '_mesa_RGB_multi.png', bbox_inches='tight', pad_inches=0, dpi = dpi) \n",
|
||
|
|
" plt.close() \n",
|
||
|
|
"\n",
|
||
|
|
"\n",
|
||
|
|
" plt.figure(4)\n",
|
||
|
|
" plt.figure(figsize=(16, 16))\n",
|
||
|
|
"\n",
|
||
|
|
" ax = plt.axes(frameon=False, xticks=[],yticks=[])\n",
|
||
|
|
" A = GR_PV.raster.data\n",
|
||
|
|
" A[0,0] = 2\n",
|
||
|
|
" ax.imshow(-A,cmap = 'gray')\n",
|
||
|
|
"\n",
|
||
|
|
" Points = Utils.gps2pixel(string['points'], geot_PV)\n",
|
||
|
|
" poly = patches.Polygon(Points,\n",
|
||
|
|
" linewidth=2,\n",
|
||
|
|
" edgecolor='red',\n",
|
||
|
|
" alpha=1,\n",
|
||
|
|
" fill = True,\n",
|
||
|
|
" color = 'red')\n",
|
||
|
|
" plt.text(np.mean([x[0] for x in Points]), np.mean([y[1] for y in Points]) , str(string['id']), bbox=dict(facecolor='red', alpha=0.8))\n",
|
||
|
|
"\n",
|
||
|
|
" ax.add_patch(poly)\n",
|
||
|
|
"\n",
|
||
|
|
" plt.savefig(path_img +'_mesa_PV.png', bbox_inches='tight', pad_inches=0, dpi = dpi)\n",
|
||
|
|
"\n",
|
||
|
|
" #I = cv2.rotate(cv2.imread('im_mesa_PV.png'), cv2.ROTATE_90_COUNTERCLOCKWISE)\n",
|
||
|
|
" #cv2.imwrite('im_mesa_PV.png', I)\n",
|
||
|
|
" plt.close()"
|
||
|
|
]
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"cell_type": "code",
|
||
|
|
"execution_count": 13,
|
||
|
|
"metadata": {},
|
||
|
|
"outputs": [],
|
||
|
|
"source": [
|
||
|
|
"path_folder = \"El_Aguila_2020/\"\n",
|
||
|
|
"folder_img = \"El_Aguila_2020/img/\"\n",
|
||
|
|
"path_T = \"El_Aguila_2020/Thermo.tif\"\n",
|
||
|
|
"path_RGB = \"El_Aguila_2020/RGB.tif\"\n",
|
||
|
|
"path_PV = \"El_Aguila_2020/Thermo_String_PV01.tif\"\n",
|
||
|
|
"path_save_list = \"El_Aguila_2020/List_strings_panels_PV01.txt\"\n",
|
||
|
|
"path_save_list_print = \"El_Aguila_2020/List_strings_panels_print_PV01.txt\"\n",
|
||
|
|
"PLANTA = 'El Aguila'\n",
|
||
|
|
"ZONA_PV = 'PV01'\n",
|
||
|
|
"pdf_name = 'Informe PV01.pdf'\n",
|
||
|
|
"\n",
|
||
|
|
"GR_T = gr.from_file(path_T)\n",
|
||
|
|
"GR_RGB = gr.from_file(path_RGB)\n",
|
||
|
|
"GR_PV = gr.from_file(path_PV)\n",
|
||
|
|
"\n",
|
||
|
|
"## Load List in coordinate latitud and longitude to pixels ###\n",
|
||
|
|
"with open(path_save_list, \"rb\") as fp:\n",
|
||
|
|
" L_strings_coord_load = pickle.load(fp)\n"
|
||
|
|
]
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"cell_type": "code",
|
||
|
|
"execution_count": null,
|
||
|
|
"metadata": {},
|
||
|
|
"outputs": [],
|
||
|
|
"source": []
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"cell_type": "code",
|
||
|
|
"execution_count": 14,
|
||
|
|
"metadata": {},
|
||
|
|
"outputs": [],
|
||
|
|
"source": [
|
||
|
|
"List_panel_affected_indv = {}\n",
|
||
|
|
"List_panel_affected_multi = {}\n",
|
||
|
|
"for string_key in L_strings_coord_load.keys():\n",
|
||
|
|
" string = L_strings_coord_load[string_key]\n",
|
||
|
|
" List_panel_affected_indv[string_key] = string.copy()\n",
|
||
|
|
" List_panel_affected_indv[string_key]['panels'] = {}\n",
|
||
|
|
" List_panel_affected_multi[string_key] = string.copy()\n",
|
||
|
|
" List_panel_affected_multi[string_key]['panels'] = {}\n",
|
||
|
|
" for panel_key in string['panels'].keys():\n",
|
||
|
|
" panel = string['panels'][panel_key]\n",
|
||
|
|
" if panel['status'] != 'default':\n",
|
||
|
|
" if panel['status'] == '5.Panel Desconect' or panel['status'] == '8.Tracker dañado':\n",
|
||
|
|
" List_panel_affected_multi[string_key]['panels'][panel_key] = panel\n",
|
||
|
|
" else:\n",
|
||
|
|
" List_panel_affected_indv[string_key]['panels'][panel_key] = panel\n",
|
||
|
|
" \n",
|
||
|
|
"for string_key in list(List_panel_affected_indv.keys()):\n",
|
||
|
|
" string = List_panel_affected_indv[string_key]\n",
|
||
|
|
" if string['panels'] == {}:\n",
|
||
|
|
" del List_panel_affected_indv[string_key]\n",
|
||
|
|
"\n",
|
||
|
|
"for string_key in list(List_panel_affected_multi.keys()):\n",
|
||
|
|
" string = List_panel_affected_multi[string_key]\n",
|
||
|
|
" if string['panels'] == {}:\n",
|
||
|
|
" del List_panel_affected_multi[string_key]"
|
||
|
|
]
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"cell_type": "code",
|
||
|
|
"execution_count": 27,
|
||
|
|
"metadata": {},
|
||
|
|
"outputs": [
|
||
|
|
{
|
||
|
|
"data": {
|
||
|
|
"text/plain": [
|
||
|
|
"''"
|
||
|
|
]
|
||
|
|
},
|
||
|
|
"execution_count": 27,
|
||
|
|
"metadata": {},
|
||
|
|
"output_type": "execute_result"
|
||
|
|
}
|
||
|
|
],
|
||
|
|
"source": [
|
||
|
|
"pdf = FPDF('L', 'mm', 'A4')\n",
|
||
|
|
"\n",
|
||
|
|
"for string_key in List_panel_affected_indv.keys():\n",
|
||
|
|
" \n",
|
||
|
|
" string = List_panel_affected_indv[string_key]\n",
|
||
|
|
" \n",
|
||
|
|
" for panel_key in string['panels'].keys():\n",
|
||
|
|
" \n",
|
||
|
|
" panel = string['panels'][panel_key]\n",
|
||
|
|
" create_indvPage(pdf, folder_img, GR_RGB, GR_T, GR_PV, string, panel, PLANTA, ZONA_PV)\n",
|
||
|
|
"\n",
|
||
|
|
"for string_key in List_panel_affected_multi.keys():\n",
|
||
|
|
" \n",
|
||
|
|
" string = List_panel_affected_multi[string_key]\n",
|
||
|
|
" aux = [{panel_key: string['panels'][panel_key] for panel_key in string['panels'].keys() if string['panels'][panel_key]['status'] == '5.Panel Desconect'}, \n",
|
||
|
|
" {panel_key: string['panels'][panel_key] for panel_key in string['panels'].keys() if string['panels'][panel_key]['status'] == '8.Tracker dañado'}] \n",
|
||
|
|
" \n",
|
||
|
|
" for panels in aux:\n",
|
||
|
|
" \n",
|
||
|
|
" if panels != {}:\n",
|
||
|
|
" create_multiPage(pdf, folder_img, GR_RGB, GR_T, GR_PV, string, panels, PLANTA, ZONA_PV)\n",
|
||
|
|
" \n",
|
||
|
|
"pdf.output(pdf_name, 'F')"
|
||
|
|
]
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"cell_type": "code",
|
||
|
|
"execution_count": 23,
|
||
|
|
"metadata": {},
|
||
|
|
"outputs": [
|
||
|
|
{
|
||
|
|
"data": {
|
||
|
|
"text/plain": [
|
||
|
|
"''"
|
||
|
|
]
|
||
|
|
},
|
||
|
|
"execution_count": 23,
|
||
|
|
"metadata": {},
|
||
|
|
"output_type": "execute_result"
|
||
|
|
}
|
||
|
|
],
|
||
|
|
"source": []
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"cell_type": "code",
|
||
|
|
"execution_count": 26,
|
||
|
|
"metadata": {},
|
||
|
|
"outputs": [
|
||
|
|
{
|
||
|
|
"data": {
|
||
|
|
"text/plain": [
|
||
|
|
"{'id': 51,\n",
|
||
|
|
" 'points': array([[-69.88693964, -18.44558698],\n",
|
||
|
|
" [-69.88692081, -18.44558698],\n",
|
||
|
|
" [-69.88692081, -18.4455967 ],\n",
|
||
|
|
" [-69.88693964, -18.4455967 ]]),\n",
|
||
|
|
" 'status': '4.Falla diodo(s)',\n",
|
||
|
|
" 'prob': 0.0,\n",
|
||
|
|
" 'T': 26.106624271330155,\n",
|
||
|
|
" 'severidad': 'High'}"
|
||
|
|
]
|
||
|
|
},
|
||
|
|
"execution_count": 26,
|
||
|
|
"metadata": {},
|
||
|
|
"output_type": "execute_result"
|
||
|
|
}
|
||
|
|
],
|
||
|
|
"source": []
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"cell_type": "code",
|
||
|
|
"execution_count": null,
|
||
|
|
"metadata": {},
|
||
|
|
"outputs": [],
|
||
|
|
"source": []
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"cell_type": "code",
|
||
|
|
"execution_count": 10,
|
||
|
|
"metadata": {},
|
||
|
|
"outputs": [],
|
||
|
|
"source": []
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"cell_type": "code",
|
||
|
|
"execution_count": 32,
|
||
|
|
"metadata": {},
|
||
|
|
"outputs": [
|
||
|
|
{
|
||
|
|
"data": {
|
||
|
|
"text/plain": [
|
||
|
|
"'Media'"
|
||
|
|
]
|
||
|
|
},
|
||
|
|
"execution_count": 32,
|
||
|
|
"metadata": {},
|
||
|
|
"output_type": "execute_result"
|
||
|
|
}
|
||
|
|
],
|
||
|
|
"source": []
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"cell_type": "code",
|
||
|
|
"execution_count": 17,
|
||
|
|
"metadata": {},
|
||
|
|
"outputs": [],
|
||
|
|
"source": []
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"cell_type": "code",
|
||
|
|
"execution_count": 19,
|
||
|
|
"metadata": {},
|
||
|
|
"outputs": [
|
||
|
|
{
|
||
|
|
"data": {
|
||
|
|
"text/plain": [
|
||
|
|
"'16_1, 16_2, 16_3, 16_4, 16_5, 16_6, 16_7, 16_8, 16_9, 16_10, 16_11, 16_12, 16_13, 16_14, 16_15, 16_16, 16_17, 16_18, 16_19, 16_20'"
|
||
|
|
]
|
||
|
|
},
|
||
|
|
"execution_count": 19,
|
||
|
|
"metadata": {},
|
||
|
|
"output_type": "execute_result"
|
||
|
|
}
|
||
|
|
],
|
||
|
|
"source": []
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"cell_type": "code",
|
||
|
|
"execution_count": 56,
|
||
|
|
"metadata": {},
|
||
|
|
"outputs": [
|
||
|
|
{
|
||
|
|
"name": "stderr",
|
||
|
|
"output_type": "stream",
|
||
|
|
"text": [
|
||
|
|
"/home/dlsaavedra/anaconda3/envs/new/lib/python3.7/site-packages/ipykernel_launcher.py:24: UserWarning: Setting the 'color' property will override the edgecolor or facecolor properties.\n"
|
||
|
|
]
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"data": {
|
||
|
|
"text/plain": [
|
||
|
|
"<Figure size 432x288 with 0 Axes>"
|
||
|
|
]
|
||
|
|
},
|
||
|
|
"metadata": {},
|
||
|
|
"output_type": "display_data"
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"data": {
|
||
|
|
"image/png": "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
|
||
|
|
"text/plain": [
|
||
|
|
"<Figure size 2304x2304 with 1 Axes>"
|
||
|
|
]
|
||
|
|
},
|
||
|
|
"metadata": {},
|
||
|
|
"output_type": "display_data"
|
||
|
|
}
|
||
|
|
],
|
||
|
|
"source": [
|
||
|
|
" \n",
|
||
|
|
"plt.figure(4)\n",
|
||
|
|
"plt.figure(figsize=(32, 32))\n",
|
||
|
|
"ax = plt.axes(frameon=False, xticks=[],yticks=[])\n",
|
||
|
|
"\n",
|
||
|
|
"ax.imshow(GR_T.raster.data[0, :, :],cmap = 'gray')\n",
|
||
|
|
"\n",
|
||
|
|
"#ax.imshow(GR_RGB.raster.data[:3,:,:].transpose(1, 2, 0))\n",
|
||
|
|
"color_dict = {'High': 'red', 'Media' : 'yellow', 'Low' : 'limegreen'}\n",
|
||
|
|
"\n",
|
||
|
|
"for string_key in List_panel_affected_indv.keys():\n",
|
||
|
|
" \n",
|
||
|
|
" string = List_panel_affected_indv[string_key]\n",
|
||
|
|
" \n",
|
||
|
|
" for panel_key in string['panels'].keys():\n",
|
||
|
|
" \n",
|
||
|
|
" panel = string['panels'][panel_key]\n",
|
||
|
|
"\n",
|
||
|
|
" Points = Utils.gps2pixel(panel['points'], GR_T.geot)\n",
|
||
|
|
" poly = patches.Polygon(Points,\n",
|
||
|
|
" linewidth=2,\n",
|
||
|
|
" edgecolor=color_dict[panel['severidad']],\n",
|
||
|
|
" alpha=1,\n",
|
||
|
|
" fill = True,\n",
|
||
|
|
" color = color_dict[panel['severidad']])\n",
|
||
|
|
" plt.text(np.mean([x[0] for x in Points]), np.mean([y[1] for y in Points]) , str(panel['status'].split('.')[0]), \n",
|
||
|
|
" bbox=dict(facecolor='red', alpha=0), fontsize=6)\n",
|
||
|
|
"\n",
|
||
|
|
" ax.add_patch(poly)"
|
||
|
|
]
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"cell_type": "code",
|
||
|
|
"execution_count": 30,
|
||
|
|
"metadata": {},
|
||
|
|
"outputs": [
|
||
|
|
{
|
||
|
|
"data": {
|
||
|
|
"text/plain": [
|
||
|
|
"'2'"
|
||
|
|
]
|
||
|
|
},
|
||
|
|
"execution_count": 30,
|
||
|
|
"metadata": {},
|
||
|
|
"output_type": "execute_result"
|
||
|
|
}
|
||
|
|
],
|
||
|
|
"source": []
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"cell_type": "code",
|
||
|
|
"execution_count": 77,
|
||
|
|
"metadata": {},
|
||
|
|
"outputs": [
|
||
|
|
{
|
||
|
|
"data": {
|
||
|
|
"text/plain": [
|
||
|
|
"24.76920930974016"
|
||
|
|
]
|
||
|
|
},
|
||
|
|
"execution_count": 77,
|
||
|
|
"metadata": {},
|
||
|
|
"output_type": "execute_result"
|
||
|
|
}
|
||
|
|
],
|
||
|
|
"source": [
|
||
|
|
"epsilon = 1\n",
|
||
|
|
"matrix_expand_bounds = [[-epsilon, -epsilon],[+epsilon, -epsilon], [+epsilon, +epsilon], [-epsilon, +epsilon]]\n",
|
||
|
|
"t_min = np.min(GR_T.raster.data)\n",
|
||
|
|
"t_max = np.max(GR_T.raster.data)\n",
|
||
|
|
"t_new_min = 0\n",
|
||
|
|
"t_new_max = 70\n",
|
||
|
|
"\n",
|
||
|
|
"geot = GR_T.geot\n",
|
||
|
|
"\n",
|
||
|
|
"panel = L_strings_coord_load['54']['panels']['51']\n",
|
||
|
|
"Points = Utils.gps2pixel(panel['points'], geot) + matrix_expand_bounds\n",
|
||
|
|
"t_new_min + (t_new_max - t_new_min) * np.mean(GR_T.raster.data[0,Points[0][1]-epsilon : Points[2][1] + epsilon, Points[0][0]- epsilon: Points[2][0] + epsilon]) / (t_max - t_min)\n"
|
||
|
|
]
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"cell_type": "code",
|
||
|
|
"execution_count": 75,
|
||
|
|
"metadata": {},
|
||
|
|
"outputs": [
|
||
|
|
{
|
||
|
|
"data": {
|
||
|
|
"text/plain": [
|
||
|
|
"<matplotlib.image.AxesImage at 0x7f95f4c83e10>"
|
||
|
|
]
|
||
|
|
},
|
||
|
|
"execution_count": 75,
|
||
|
|
"metadata": {},
|
||
|
|
"output_type": "execute_result"
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"data": {
|
||
|
|
"image/png": "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
|
||
|
|
"text/plain": [
|
||
|
|
"<Figure size 432x288 with 1 Axes>"
|
||
|
|
]
|
||
|
|
},
|
||
|
|
"metadata": {
|
||
|
|
"needs_background": "light"
|
||
|
|
},
|
||
|
|
"output_type": "display_data"
|
||
|
|
}
|
||
|
|
],
|
||
|
|
"source": [
|
||
|
|
"plt.imshow(GR_T.raster.data[0,Points[0][1]-epsilon : Points[2][1] + epsilon, Points[0][0]- epsilon: Points[2][0] + epsilon], cmap = 'gray')"
|
||
|
|
]
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"cell_type": "code",
|
||
|
|
"execution_count": null,
|
||
|
|
"metadata": {},
|
||
|
|
"outputs": [],
|
||
|
|
"source": []
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"cell_type": "code",
|
||
|
|
"execution_count": null,
|
||
|
|
"metadata": {},
|
||
|
|
"outputs": [],
|
||
|
|
"source": []
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"cell_type": "code",
|
||
|
|
"execution_count": null,
|
||
|
|
"metadata": {},
|
||
|
|
"outputs": [],
|
||
|
|
"source": []
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"cell_type": "code",
|
||
|
|
"execution_count": null,
|
||
|
|
"metadata": {},
|
||
|
|
"outputs": [],
|
||
|
|
"source": []
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"cell_type": "code",
|
||
|
|
"execution_count": null,
|
||
|
|
"metadata": {},
|
||
|
|
"outputs": [],
|
||
|
|
"source": []
|
||
|
|
}
|
||
|
|
],
|
||
|
|
"metadata": {
|
||
|
|
"kernelspec": {
|
||
|
|
"display_name": "Python 3",
|
||
|
|
"language": "python",
|
||
|
|
"name": "python3"
|
||
|
|
},
|
||
|
|
"language_info": {
|
||
|
|
"codemirror_mode": {
|
||
|
|
"name": "ipython",
|
||
|
|
"version": 3
|
||
|
|
},
|
||
|
|
"file_extension": ".py",
|
||
|
|
"mimetype": "text/x-python",
|
||
|
|
"name": "python",
|
||
|
|
"nbconvert_exporter": "python",
|
||
|
|
"pygments_lexer": "ipython3",
|
||
|
|
"version": "3.7.7"
|
||
|
|
}
|
||
|
|
},
|
||
|
|
"nbformat": 4,
|
||
|
|
"nbformat_minor": 4
|
||
|
|
}
|