From 77227932edd5539178410cf82b8f70f08d59ca58 Mon Sep 17 00:00:00 2001 From: Sara <sarasdj@stud.ntnu.no> Date: Tue, 14 May 2024 14:10:34 +0200 Subject: [PATCH] update: try to read ice stats from json file, index error --- .../plots/skumsj\303\270en_sub_div.json" | 0 server/__pycache__/consts.cpython-311.pyc | Bin 445 -> 510 bytes server/__pycache__/scheduler.cpython-311.pyc | Bin 2110 -> 2110 bytes server/consts.py | 1 + server/main.py | 4 +- .../update_measurements.cpython-311.pyc | Bin 12093 -> 12373 bytes server/map_handler/update_measurements.py | 53 ++++++++++-------- server/scheduler.py | 2 +- 8 files changed, 33 insertions(+), 27 deletions(-) rename server/ModelFromNVE/output/plots/skumsjoen_sub_div.json => "server/ModelFromNVE/output/plots/skumsj\303\270en_sub_div.json" (100%) diff --git a/server/ModelFromNVE/output/plots/skumsjoen_sub_div.json "b/server/ModelFromNVE/output/plots/skumsj\303\270en_sub_div.json" similarity index 100% rename from server/ModelFromNVE/output/plots/skumsjoen_sub_div.json rename to "server/ModelFromNVE/output/plots/skumsj\303\270en_sub_div.json" diff --git a/server/__pycache__/consts.cpython-311.pyc b/server/__pycache__/consts.cpython-311.pyc index bb38aa0189f45c62dc5b19e249a301babbd4ce76..eb4afa133d16daaf3ab0bd3a76b2116f6953d098 100644 GIT binary patch delta 133 zcmdnX{EwM;IWI340}x31Ij1#D<dtN!n5b^b5yhUu5zL^;IWZwsy-KM#wWut$NZ&U< zB{j#bC_mRP%vC?Xw4|W4q*%WoCm%@qX>v?F5yf{)FgV09BsktbG$bH2WU?%y2Ny5U aY(^k1_L-c|=qz|c#Nq;jAOsb01H}R5>?H;O delta 72 zcmeyzyqB4GIWI340}xygv`urH$ScWcGEv=>C73~zV`54wv!5pW#1B!EV;P;fcz}u+ Vfw<Uh@+wAW?h6dUKvV?M3jlPU5KRC8 diff --git a/server/__pycache__/scheduler.cpython-311.pyc b/server/__pycache__/scheduler.cpython-311.pyc index 5dfa13e3a8023a5fbb246518a9a4001310b685d7..13179f2c3d337e9604693b9203e3b97a55f38fbb 100644 GIT binary patch delta 22 ccmdlduup(@IWI340}xCPaZa<_$ZN;}06>)mJ^%m! delta 22 ccmdlduup(@IWI340}v?NJEt*j<Tc~~06M4ycmMzZ diff --git a/server/consts.py b/server/consts.py index a667ac84..ec6507e5 100644 --- a/server/consts.py +++ b/server/consts.py @@ -12,3 +12,4 @@ SSL_CERT_PATH = CERT_DIR + "testCert.crt" # File paths MAP_HANDLER_PATH = "server/map_handler/" LAKE_RELATIONS_PATH = MAP_HANDLER_PATH + "lake_relations/" +STATS_OUTPUT_PATH = "server/ModelFromNVE/outputs/plots/" diff --git a/server/main.py b/server/main.py index 0bbb4ff8..5971cecf 100644 --- a/server/main.py +++ b/server/main.py @@ -11,7 +11,7 @@ from server.scheduler import update_scheduler from server.consts import LAKE_RELATIONS_PATH from map_handler.get_lake_relation import get_map_data_handler from map_handler.input_new_data import input_new_Lidar_data -from map_handler.update_measurements import update_measurements_handler, addTestData +from map_handler.update_measurements import update_measurements_handler, add_test_data app = Flask(__name__) terminate_server = 0 @@ -124,7 +124,7 @@ class IceHTTP(BaseHTTPRequestHandler): lake_name_param = query_params.get('lake', [''])[0] lake_name = unquote(lake_name_param) # Decode url param - addTestData(self, lake_name) + add_test_data(self, lake_name) elif self.path.startswith('/new_lidar_data'): parsed_path = urlparse(self.path) diff --git a/server/map_handler/__pycache__/update_measurements.cpython-311.pyc b/server/map_handler/__pycache__/update_measurements.cpython-311.pyc index 41296d85fecc3924b3c0adf40fb30f6899f92868..801383752939945e212637b04e598c1ae5883cd2 100644 GIT binary patch delta 4174 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 delta 3977 zcma)9eQX=$8Nc)S+dh9gcI$lD`DkJ{bxT76w4otw5*q4+j09LKAh^DBYU0?{dzXer z=LStkLmJvrUL-13q-a7cj38y}grZ5H6$BciNOt6k?)K0A7#q<x=87S8{cF#2iR+|7 z+g|&A_dL)0-1FYO@ALkiyX()s|BU13Ja1*7{j={_`uu^5jv)Kvi|t(tEF&<2K5LvY zoifdsPnkhCh?cZYFutfiWkp#qi8i#P^@15}cFkrHdC;w(I|Q5P1b;iouB~f%klg}1 z&O{v>IOb@SRn0<D7Uj&02(mZPe`0X*vB5<D6BEOaj*d@`^-mm+>QsJ8lqX4YZW4VZ zwJwtqC(n}nR4y-Nq-sY}wPcgi;$$v4Bc^m1eybVa%)#-Ej-@>Nd)<<eM%w)>N26^` z1_o|MPyfM2EVm7_a(dtWQ4@9P5+2nk=2Ce<jOtarBxcjZMAJHI4L}^6E~!8{F4gdb zzjNK+x%_0w-(B{1m-IbleNVCar?Xs(?oH#B*SQeOv7|)T^w0Mwh5=@gefna-IK>o9 zicv7{f^eHn_Esf^k^MFKIUDVd)Y1Fe9EacnOYH*CtUEMYO%v=j8T@Q?(HK~ObImF^ zw#m-RoL~}MmyHE8c)M#o+U=SO7R4fXYSw~Pt|<)kd26cRdkd!jojXfVuvL9e;WL4= z|Gzlfp}(%yU*P3XZ6@S~nygqAn_^!Hyaj9f4oCO5)#(ckxrtsj@2(eu(|YtI56Mm2 zu5bv!T?~45-f?Ibb`_j*WSbMOXl_-Du$vw-Hw=cRH3QKJzJfEy3owNCYY;YnjhD>@ zhtO1TDpnz=@H-y@Z&Y#0EwmEcZH4gR%NCeW9cA0=Ua@#|iU}opzs1j66q8~W+`TZE z!lCss#rzfv4+zI*V<CNBrgD2#2S-NH-8JJbA@aYIiLP2q7MHf>?#;n;iksfB>}7ql zw5Pdo9)=K_HEh`#zndv|=#n*PR6K%jrIntxo_M&fdP53_ww)Igyh5AeP3y*)7DkR& zJsGBzA*}_Uut#WDd_QI0&@BbEt=U22wm`sl!8gtbrUIPj*g58T?j$qEMx$4rvV~dt zBm3ylW(Y)D5LyA=Hj+j-srCsVlMyi~%@R={xcnrHfNQMU$7fFqnR6K_lg~+{gNFFS z3vY9(Rhm6L3HHg1pt8@a?0JIOyMe56o1e(b$!r)nC)_a;odOfIN}sA5?f>hh0%Mz1 z{Qz*&JU^bDmCjV1Z}Ug9$<%aJC0*b@?-<YJ=fZ+`Rz8CP=jm5`Hyfpmj*x91^phAu zCmnDMa~uDH2X(ZXhz)GfUG#lNPgvz7nGn1)m4iU4f#hd%0zr}^MgZz?KI0)CyueRP z=w?Z0vLgMVvx|P}e2?|h7hJ&xg3CqhRq%lz39w~eU@8uYzUNAW{DD^=el77z;(FxX z)lBi|M5$+@<a@mAd;BE}ZEy!8(UPsTY-_#ABv?!Lmu~-JX31M}x0T&(6^7;aE&J#b z?x%P&6OL7wA(rpH$qdoco)?YxxDVfC?xBD8JhbqwgNeki#|MgICyP%{6{ly5@pGm4 zxiVmQt{k3Q9RAkG1Vfh|xOm~!3(M?!AX*GW-%YJX*ZP0mS&H|S<9)x4tjCWP<Hv5a zv|ciUcYV{P!t(hw_lmOiXnB94)RZWNM#`a);@J3lXuKF2ztP@t>G-XRk!g$4kG;P! zmKw&&4P*2r-`9~pIX#ObMQ5aFj@<gv=7YyDoM5*jUG?`YaA>`C>y|VFbM}M2M1;Aj z>#v8?hmHQDecXp#c9i?{$2ikR90&48Miyn$aW^QR1%oGgxz7%u(`UW<1Y^3!pwl&u zMOlx5u0^aPPVU;?T_aZRb3F_4=T-xt%0ta-PKlBv3XrJMjv|LkiAnLzDUPnxJ-A;d zV@7PX=ded>z!W>!q`(Q<kA7|F=zxl(huy2Mv9Ct{wt_*nR09Cr7-%}s9xy6Kg+0fT z4H=Vjt3ltJfo`YiF56du?sl`xSG}ORIcqY+0nS^oZRc@|?51%G@VI%4$78a4+Z7h9 zn#kj^I}UDO+-;?Fd-W?=1#1E7Uog-OKA@QkHmGqN6c8&8t=P76<y~=Hn*(80aszAI z75$QxUS<6Y_MH={(K4^-HHN#xg&M<!poZ0^lo31%zmpwV<|HF<1^xmraKLz)G{?%j zYflV3c~_K!g7^OmbB8#6SAMaJvI|&E36{}O)tnZSGO(niS|PK}ibT$c64?)Zs-sGX zDKRIDM59Bp7kW0Z5D}zsjm^ltD0L(BAl#2|2;g?(P!ecI2+R3!I+GK^M9e1TOrCxa zx+mozC(sW|G)W+g0H|ChCzCN$?~ob!9;)LA6X@a|f|#Ruc?dagkdQnf!`OKeAnMTQ zj^xnrG##nmGlh>r1OyQQxm)$hNavII3Mrq-q^5JQpU4^PK8=98T5<q{ceG8ud>lOx zE}|FiKj6!{L-ddJKQZpLblqh3(z6Z1ap0kb*!9>$zk8&3N+_No#h6rzNoBx#xm+(V zTE6twEuO!4<kcff{p;SgqPOkcmgUSEyOJ%%4wqwx*OKe8zGAG8nj4?(g<y@H%fqY5 zmBd<8xpTPG@JPAgksIM?C14MGDh$A)y|SBeH-6!2U3axEJymiYEV~XCT?hY7UvGS= zf3TT(!+(VPl^ui+^!+;1RUHT7RRfE%aUcZB$IaHE8253fYe>g^qT@mS#OWGp<34FK z48>@w>6g8@_Cx~MFr)MUO86p74g$Q*L|LMMAYpcdHz!M5HH1IVu`p$WSN<Fhn-{b= z3t-)_0ca6bLn1SfBom|!EqkyJ3;6~XrOknmEuuyeMFYMXk$ni8g%YI)5jqg+5&991 z0*sOY6p_4$cC$9^bwEaa5MbVc`4rCO<#1Z7qO<g8(ftdLLYHdENcnW0%p^B+QZ<rf zPRP%wrrBHu?Wze4n6j9ecPI3dX!||_vL3;NBKQ=<g@9b9m1r`DQZ0pT#LF-X%vRlo zZygywd6HXua%S_TW(Kw-@IRTvYf}KK4R&kwt%gjaIg6m>GEVchRMyr;wIu~%0;0n^ zOOm_-9)E#DdIQP?B=nV1>~9?JAww8L+nz7ePvi9qYOf@cb0Ue4z;{u0h~#HRpBRk8 zMw&rAo5@W{DUvxWOL6#I8%~K6)$Nsl&oXJ-rXIz>_$5WoAz<lJ_1O%(*Wlh#4e4wi zW?jo4yf^X!LJ&DiyZhVbUKnvUD;^=QfelkmiqIqb?_1bcWOn>-FuCG){VPTjd*7<J z!ocZn@XfRA33jQg!f3+su~qN#p)KXRPxIU$%N}0tszewR*5rzI{tg_Y+<|7+OZOdU Pu~(SmESq3S5N`iJt=)`| diff --git a/server/map_handler/update_measurements.py b/server/map_handler/update_measurements.py index 7c1e0bd9..cda26653 100644 --- a/server/map_handler/update_measurements.py +++ b/server/map_handler/update_measurements.py @@ -3,8 +3,7 @@ import json import random from datetime import datetime -from server.consts import LAKE_RELATIONS_PATH -from server.ModelFromNVE.icemodellingscripts.getIceThicknessLakes import get_raw_dates, ice_prognosis_raw_data +from server.consts import LAKE_RELATIONS_PATH, STATS_OUTPUT_PATH def update_measurements_handler(self, lake_name: str): @@ -14,7 +13,7 @@ def update_measurements_handler(self, lake_name: str): self.send_header("Content-type", "application/json") self.end_headers() - self.wfile.write(measurement_data.encode('utf-8')) + self.wfile.write(measurement_data) def update_measurements(lake_name: str) -> (int, str): @@ -31,18 +30,24 @@ def update_measurements(lake_name: str) -> (int, str): return 404, f"{lake_name} does not exists in the system" # Define file path to lidar data file - file_path = os.path.join(LAKE_RELATIONS_PATH, lake_name + '_lidar_data.json') + lidar_data_path = os.path.join(LAKE_RELATIONS_PATH, lake_name + '_lidar_data.json') # Lists to store processed data sub_div_ids = [] measurements = [] # Some lakes may not have any recent lidar data, so must check if the file exists - if os.path.exists(file_path): + if os.path.exists(lidar_data_path): # Read the newest lidar data from JSON file - with open(file_path, 'r') as file: + with open(lidar_data_path, 'r') as file: lidar_data = json.load(file) + all_ice_stats = [] + if os.path.exists(STATS_OUTPUT_PATH + lake_name + "_sub_div.json"): + # Tro to read ice stats from NVE model for current lake + with open(STATS_OUTPUT_PATH + lake_name + "_sub_div.json", 'r') as file: + all_ice_stats = json.load(file) + # Iterate over all fetched rows for measurement in lidar_data: processed_subdivs = [] @@ -68,19 +73,18 @@ def update_measurements(lake_name: str) -> (int, str): center_lng = round(sub_division['CenLongitude'], 4) avg_thickness = sub_division['AvgThickness'] - # Read from json file - # lakName_sub_div.json - # Add center coord txt file - - # Retrieve ice statistics for current subdivision - ice_stats = get_raw_dates(ice_prognosis_raw_data(sub_div_id=subdiv_id, x=center_lat, y=center_lng)) + # Initialise list for the current ice stats + ice_stats = [] + print("Fails here?") # Ice statistics were retrieved successfully - if len(ice_stats) > 0 and len(ice_stats[0]) > 0: + if len(all_ice_stats) >= subdiv_id is not None or all_ice_stats[subdiv_id] != "Null": + ice_stats = all_ice_stats[subdiv_id] accuracy = 3 + print("Fails here, later?") # Increase accuracy by 1 if the LiDar data and NVE data have a minimal discrepancy - if abs(avg_thickness - ice_stats[0]['Total ice (m)']) < 1.0: + if abs(avg_thickness - all_ice_stats[subdiv_id][3]['Black ice (m)']) < 1.0: accuracy = 4 else: # Failed to retrieve ice statistics, initialise empty ice stats object ice_stats = { @@ -117,7 +121,7 @@ def update_measurements(lake_name: str) -> (int, str): measurements.append(new_measurement) # Populate remaining non-processed subdivisions and create "invalid" or "proxy" measurement to store them - remaining_sub_divs = fill_remaining_subdivisions(lake_name, sub_div_ids) + remaining_sub_divs = fill_remaining_subdivisions(lake_name, sub_div_ids, all_ice_stats) proxy = { 'MeasurementID': -1, 'TimeMeasured': str(datetime.now()), @@ -135,14 +139,16 @@ def update_measurements(lake_name: str) -> (int, str): # Convert list of dictionaries to JSON response_data = json.dumps(measurements, indent=4) - # Set headers + + # Return data return 200, response_data except Exception as e: + print(f"Error in updating measurements: {e}") return 500, f"Error in updating measurements: {e}".encode('utf-8') -def fill_remaining_subdivisions(lake_name: str, processed_ids: list): +def fill_remaining_subdivisions(lake_name: str, processed_ids: list, all_ice_stats): """ Returns a list of subdivision dictionaries for subdivisions without measurements. @@ -170,10 +176,11 @@ def fill_remaining_subdivisions(lake_name: str, processed_ids: list): center_lng = round(sub_div['properties']['sub_div_center'][1], 4) # Fetch weather data for each subdivision from the NVE model - ice_stats = get_raw_dates(ice_prognosis_raw_data(sub_div_id=sub_div_id, x=center_lat, y=center_lng)) + ice_stats = [] - if len(ice_stats) > 0 and len(ice_stats[0]) > 0: - total_ice_thickness = ice_stats[0]['Total ice (m)'] + if len(all_ice_stats) >= sub_div_id and all_ice_stats[sub_div_id] != "Null": + ice_stats = all_ice_stats[sub_div_id] + total_ice_thickness = ice_stats[0]['Black ice (m)'] accuracy = 1 else: # Initialise empty ice stats ice_stats = { @@ -199,9 +206,7 @@ def fill_remaining_subdivisions(lake_name: str, processed_ids: list): 'CenLatitude': center_lat, 'CenLongitude': center_lng, 'Accuracy': accuracy, - # Calculate ice thickness based on total ice, temporary - # 'Color': calculateColor(ice_stats[0]['Total ice (m)']), - 'Color': calculateColor(ice_stats[0]['Black ice (m)']), + 'Color': calculateColor(total_ice_thickness), 'IceStats': ice_stats, } sub_divisions.append(sub_division) @@ -227,7 +232,7 @@ def calculateColor(thickness: float): return 0 # Grey -def addTestData(self, lake_name: str): +def add_test_data(self, lake_name: str): """ Adds random test data to lake_name_lidar_data.json. This function is purly for testing, not production. The function overwrites the lidar data for the selected lake. diff --git a/server/scheduler.py b/server/scheduler.py index 91d98279..4e57e3cd 100644 --- a/server/scheduler.py +++ b/server/scheduler.py @@ -14,7 +14,7 @@ def update_all_measurements(lake_names: list): from_date = "2024-01-10" to_date = "2024-01-20" - update_data(from_date, to_date, lake_name=lake_names, + update_data(from_date, to_date, lake_name=lake_names, # NB make call every day with False, evey 4th day with true sub_divs_folder = LAKE_RELATIONS_PATH + lake_names + '_centers.txt', update_all_bboxes=True) update_measurements_handler(None, lake) -- GitLab