Files
Photovoltaic_Fault_Detector/GPS_Panel/Enumeration_KML.ipynb
Daniel Saavedra f3cc29234e Change Enumeration
2020-12-17 18:46:01 -03:00

424 lines
66 KiB
Plaintext

{
"cells": [
{
"cell_type": "code",
"execution_count": 159,
"metadata": {},
"outputs": [],
"source": [
"import numpy as np\n",
"import matplotlib.pyplot as plt\n",
"import pandas as pd\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 simplekml\n",
"\n",
"def order_rect(List_P_strings, top_bottom = False):\n",
" #If top_bottom is false then sort right left\n",
" if not top_bottom:\n",
" List_P_strings = [[(List_P[0][1],List_P[0][0]),\n",
" (List_P[1][1],List_P[1][0]),\n",
" (List_P[2][1],List_P[2][0]),\n",
" (List_P[3][1],List_P[3][0])] for List_P in List_P_strings]\n",
" \n",
" bboxes=sorted(List_P_strings, key=lambda x: x[0][0])\n",
" bboxes = [(P[0][0], P[0][1], P[2][0]-P[0][0], P[2][1]-P[0][1]) for P in bboxes]\n",
" df=pd.DataFrame(bboxes, columns=['x','y','w', 'h'], dtype=int)\n",
" \n",
"\n",
" df[\"x2\"] = df[\"x\"]+df[\"w\"] # adding column for x on the right side\n",
" df = df.sort_values([\"x\",\"y\", \"x2\"]) # sorting\n",
"\n",
"\n",
" for i in range(2): # change rows between each other by their coordinates several times \n",
" # to sort them completely \n",
" for ind in range(len(df)-1):\n",
" # print(ind, df.iloc[ind][4] > df.iloc[ind+1][0])\n",
" if df.iloc[ind][4] > df.iloc[ind+1][0] and df.iloc[ind][1]> df.iloc[ind+1][1]:\n",
" df.iloc[ind], df.iloc[ind+1] = df.iloc[ind+1].copy(), df.iloc[ind].copy()\n",
" \n",
" L_F = [np.array([[box[0], box[1]], \n",
" [box[0] + box[2], box[1]], \n",
" [box[0] + box[2], box[1] + box[3]], \n",
" [box[0], box[1] + box[3]]]) for box in df.values.tolist()]\n",
" \n",
" if not top_bottom:\n",
" L_F = [[(List_P[0][1],List_P[0][0]),\n",
" (List_P[1][1],List_P[1][0]),\n",
" (List_P[2][1],List_P[2][0]),\n",
" (List_P[3][1],List_P[3][0])] for List_P in L_F]\n",
" return np.array(L_F) "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Parameters"
]
},
{
"cell_type": "code",
"execution_count": 221,
"metadata": {},
"outputs": [],
"source": [
"#path_T = \"Thermo.tif\"\n",
"#path_String = \"Thermo_String_PV01.tif\"\n",
"\n",
"path_T = \"Los_Loros/TH_02_index_thermal_ir.tif\"\n",
"path_String = \"Los_Loros/Raster_Test.tif\"\n",
"ZonaPV = 'Test'\n",
"path_kml_panel = 'Los_Loros/KML/Paneles_' + ZonaPV +'.kml'\n",
"path_kml_mesa ='Los_Loros/KML/Mesa_' + ZonaPV +'.kml'\n",
"path_dict = 'Los_Loros/KML/Mesa_' + ZonaPV + '.pickle'\n",
"\n",
"#panel_size = (11 , 21)\n",
"#panel_size = (37 , 17) #weight, height size#\n",
"#panel_size = (20 , 35)\n",
"\n",
"split_Weight, split_Height = (10,2)\n",
"overlap = -0.005\n",
"order_top_bottom = False # order top bottom or right left\n",
"\n",
"\n",
"GR_String = gr.from_file(path_String)\n",
"GR_T = gr.from_file(path_T)\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Enumerate Tables and Panels"
]
},
{
"cell_type": "code",
"execution_count": 222,
"metadata": {},
"outputs": [],
"source": [
"\n",
"label_im, nb_labels = ndimage.label(GR_String.raster.data > 0)#, structure= np.ones((2,2))) ## Label each connect region\n",
"\n",
" \n",
"L_strings = {} # {name: '001', points:(top-left, top-right, bottom-right, bottom-left) (x,y), 'panels' : }\n",
"\n",
"epsilon = 0\n",
"\n",
"List_P_strings = []\n",
"for i in range(1, nb_labels + 1):\n",
" \n",
" countours, hierarchy = cv2.findContours(np.uint8(label_im == i), cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)\n",
" x_max = np.max(countours[0][:, 0, 0]) + epsilon\n",
" y_max = np.max(countours[0][:, 0, 1]) + epsilon\n",
" x_min = np.min(countours[0][:, 0, 0]) - epsilon\n",
" y_min = np.min(countours[0][:, 0, 1]) - epsilon\n",
" \n",
" List_P_strings.append([(x_min, y_min), (x_max, y_min), (x_max, y_max), (x_min, y_max)])\n",
"\n",
" \n",
"for i,List_P in enumerate(order_rect(List_P_strings, top_bottom=order_top_bottom), 1):\n",
" \n",
" L_strings[str(i)] = {'id': i, \n",
" 'points' : List_P, \n",
" 'panels' : {}, \n",
" 'status': 'default', \n",
" 'T': np.mean(GR_T.raster.data[List_P[0][1]:List_P[2][1],List_P[0][0]:List_P[2][0]])}\n",
"\n",
"for string_key in L_strings.keys():\n",
" \n",
" string = L_strings[string_key]\n",
" string['panels'] = {}\n",
" Points = Utils.order_points_rect(string['points']).astype(np.int)\n",
" \n",
" ## If strings is vertical or horizontal\n",
" #if (Points[2][0] - Points[0][0]) > (Points[2][1] - Points[0][1]):\n",
" # split_Weight, split_Height = np.int((Points[2][0] - Points[0][0]) / panel_size[0]) , np.int((Points[2][1] - Points[0][1]) / panel_size[1])\n",
" #else:\n",
" # split_Weight, split_Height = np.int((Points[2][0] - Points[0][0]) / panel_size[1]) , np.int((Points[2][1] - Points[0][1]) / panel_size[0])\n",
"\n",
" #split_Weight = max(split_Weight, 1)\n",
" #split_Height = max(split_Height, 1)\n",
" M, maxWidth, maxHeight = Utils.perspectiveTransform(Points)\n",
" sub_division = Utils.subdivision_rect([split_Weight, split_Height], maxWidth, maxHeight, overlap)\n",
" sub_division_origin = np.uint(cv2.perspectiveTransform(np.array(sub_division), np.linalg.inv(M)))\n",
" \n",
" for i,panels_coord in enumerate(order_rect(sub_division_origin, order_top_bottom),1):\n",
" string['panels'][str(i)] = {'id' : i,\n",
" 'points' : panels_coord,\n",
" 'status': 'default', \n",
" 'T' : np.mean(GR_T.raster.data[panels_coord[0][1]:panels_coord[2][1], panels_coord[0][0]:panels_coord[2][0]]),\n",
" 'severidad': 'default'} \n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Save dictionary with gps data"
]
},
{
"cell_type": "code",
"execution_count": 223,
"metadata": {},
"outputs": [],
"source": [
"## Save List in coordinate latitud and longitude ###\n",
"geot = GR_String.geot\n",
"L_strings_coord = {}\n",
" \n",
"for string_key in L_strings.keys():\n",
" \n",
" string = L_strings[string_key]\n",
" points = string['points']\n",
" string_coord = {'id': 'Mesa_' + str(string['id']).zfill(3), \n",
" 'points': Utils.pixel2gps(points, geot), \n",
" 'panels': {}, \n",
" 'status': string['status'], \n",
" 'T' : string['T']}\n",
" \n",
" for panel_key in string['panels'].keys():\n",
" \n",
" panel = string['panels'][panel_key]\n",
" points = panel['points']\n",
" panel_coord = {'id': panel['id'],\n",
" 'points': Utils.pixel2gps(points, geot), \n",
" 'status': panel['status'], \n",
" 'prob': 0.0, \n",
" 'T': panel['T'], \n",
" 'severidad': 'default'}\n",
" \n",
" string_coord['panels'][panel_key] = panel_coord\n",
" \n",
" L_strings_coord[string_key] = string_coord\n",
"\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Display image"
]
},
{
"cell_type": "code",
"execution_count": 224,
"metadata": {
"scrolled": true
},
"outputs": [
{
"data": {
"text/plain": [
"<Figure size 432x288 with 0 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 1152x1152 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 1152x1152 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"## Load List in coordinate latitud and longitude to pixels ###\n",
"string = L_strings_coord['3']\n",
"panels = string['panels']\n",
"\n",
"\n",
"epsilon = 0\n",
"matrix_expand_bounds = [[-epsilon, -epsilon],[+epsilon, -epsilon], [+epsilon, +epsilon], [-epsilon, +epsilon]]\n",
"\n",
"#geot = GR_RGB.geot\n",
"geot = GR_T.geot\n",
"geot_S = GR_String.geot\n",
"\n",
"\n",
"Points = Utils.gps2pixel(string['points'], geot) + matrix_expand_bounds\n",
"\n",
"\n",
"\n",
"plt.figure(0)\n",
"plt.figure(figsize=(16, 16))\n",
"plt.imshow(GR_String.raster.data)\n",
"plt.title('Origin Image')\n",
"ax = plt.gca()\n",
"\n",
"for Poly_key in L_strings_coord.keys():\n",
" \n",
" Poly = L_strings_coord[Poly_key]\n",
" poly = patches.Polygon(Utils.gps2pixel(Poly['points'],geot_S),\n",
" linewidth=2,\n",
" edgecolor='red',\n",
" alpha=0.5,\n",
" fill = True)\n",
" plt.text(np.mean([x[0] for x in Utils.gps2pixel(Poly['points'],geot_S)]), \n",
" np.mean([y[1] for y in Utils.gps2pixel(Poly['points'],geot_S)]) , \n",
" str(Poly['id']).split('_')[-1], bbox=dict(facecolor='red', alpha=0.8), fontsize=10)\n",
"\n",
" ax.add_patch(poly)\n",
" \n",
"plt.figure(1)\n",
"plt.figure(figsize=(16, 16))\n",
"#plt.imshow(GR_T.raster[0,Points[0][1] : Points[2][1], Points[0][0]: Points[2][0]])\n",
"plt.imshow(GR_T.raster[Points[0][1] : Points[2][1], Points[0][0]: Points[2][0]])\n",
"#plt.imshow((GR_RGB.raster[:3,:,:]).transpose((1, 2, 0))[Points[0][1] : Points[2][1], Points[0][0]: Points[2][0],:])\n",
"\n",
"plt.title('Subdive Origin Image')\n",
"ax = plt.gca()\n",
"\n",
"for Poly_key in panels.keys():\n",
" \n",
" Poly = panels[Poly_key]\n",
" poly = patches.Polygon(Utils.gps2pixel(Poly['points'],geot) - (Points[0][0], Points[0][1]),\n",
" linewidth=2,\n",
" edgecolor='red',\n",
" fill = False)\n",
" plt.text(np.mean([x[0] for x in Utils.gps2pixel(Poly['points'],geot) - (Points[0][0], Points[0][1])]), np.mean([y[1] for y in Utils.gps2pixel(Poly['points'],geot) - (Points[0][0], Points[0][1])]) , \n",
" str(Poly['id']), bbox=dict(facecolor='red', alpha=0.0), fontsize=8)\n",
"\n",
" ax.add_patch(poly)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Save KML"
]
},
{
"cell_type": "code",
"execution_count": 225,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Listo\n"
]
}
],
"source": [
"\n",
"## Save List in coordinate latitud and longitude ###\n",
"with open(path_dict, 'wb') as handle:\n",
" pickle.dump(L_strings_coord, handle, protocol=pickle.HIGHEST_PROTOCOL)\n",
"\n",
"## Load List in coordinate latitud and longitude ###\n",
"with open(path_dict, \"rb\") as fp:\n",
" L_strings_coord = pickle.load(fp)\n",
"\n",
"kml=simplekml.Kml()\n",
"\n",
"\n",
"for string_key in L_strings_coord.keys():\n",
" \n",
" string = L_strings_coord[string_key]\n",
" points = string['points']\n",
" \n",
" pmt = kml.newpolygon(name= string['id'], \n",
" outerboundaryis = points)\n",
" pmt.extendeddata.newdata(name='Mesa', value=string['id'])\n",
" pmt.extendeddata.newdata(name= 'T°', value= string['T'])\n",
" \n",
"kml.save(path_kml_mesa)\n",
"\n",
"\n",
"kml=simplekml.Kml()\n",
"\n",
"\n",
"for string_key in L_strings_coord.keys():\n",
" \n",
" string = L_strings_coord[string_key]\n",
" points = string['points']\n",
" \n",
" for panel_key in string['panels'].keys():\n",
" panel = string['panels'][panel_key]\n",
" points = panel['points']\n",
" \n",
" pmt = kml.newpolygon(outerboundaryis = points)\n",
" pmt.extendeddata.newdata(name= 'Id integer', value= str(string_key).zfill(3) + '_' + str(panel['id']).zfill(3))\n",
" pmt.extendeddata.newdata(name= 'Id panel', value= str(panel['id']).zfill(3))\n",
" pmt.extendeddata.newdata(name='Zona PV', value= ZonaPV)\n",
" pmt.extendeddata.newdata(name='Cód. Fall', value= 0)\n",
" pmt.extendeddata.newdata(name= 'Tipo falla', value= panel['status'])\n",
" pmt.extendeddata.newdata(name= 'Mesa', value= string['id'])\n",
" pmt.extendeddata.newdata(name= 'T°', value= panel['T'])\n",
" \n",
"kml.save(path_kml_panel)\n",
"print('Listo')"
]
},
{
"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
}