diff --git a/server/data_processing/__pycache__/area_processing.cpython-39.pyc b/server/data_processing/__pycache__/area_processing.cpython-39.pyc index 36bd3436993a5dbf223824d0c9b30cbeb8de4ca5..e770151519aca70814292d4f5cc66264b00083d0 100644 Binary files a/server/data_processing/__pycache__/area_processing.cpython-39.pyc and b/server/data_processing/__pycache__/area_processing.cpython-39.pyc differ diff --git a/server/data_processing/__pycache__/process_lidar_data.cpython-39.pyc b/server/data_processing/__pycache__/process_lidar_data.cpython-39.pyc index 9a3706cc4096a71462648ad5967fbd3abd35f8e1..3edb3e6aec41636e85a32723ec41ee26bef38aba 100644 Binary files a/server/data_processing/__pycache__/process_lidar_data.cpython-39.pyc and b/server/data_processing/__pycache__/process_lidar_data.cpython-39.pyc differ diff --git a/server/data_processing/area_processing.py b/server/data_processing/area_processing.py index 43e289ee01d5794c6af26982fcee4c20a1308448..81446eda9a0e8829cb02e33a87476e9bb51ae3d5 100644 --- a/server/data_processing/area_processing.py +++ b/server/data_processing/area_processing.py @@ -1,4 +1,8 @@ from math import pi, cos +import pandas as pd +import numpy as np +import matplotlib.pyplot as plt +import seaborn as sns EARTH = 6378.137 # Radius of the earth in kilometer METER = (1 / ((2 * pi / 360) * EARTH)) / 1000 # 1 meter in degree @@ -34,6 +38,7 @@ def define_gridareas(lat, lng, area_offset, grid_size): #a = dimension + subId + groupId soon to be implemented #print(a) grided_area = [] # container for an area turned into a grid of areas + #points = [] # find the main area's corner positions main_area = calculate_corners(lat, lng, area_offset) @@ -47,8 +52,6 @@ def define_gridareas(lat, lng, area_offset, grid_size): group_id = 0 i=0 - j=0 - # find the center coordinates of each area in grid to find the corner areas for y in (range(grid_size)): relative_size_lng = y / grid_size @@ -68,8 +71,20 @@ def define_gridareas(lat, lng, area_offset, grid_size): # use the center of sub areas to find the corner of each subarea corners = calculate_corners(lat_pos, lng_pos, subarea_offset) grided_area.append((sub_id, group_id + i%2, corners)) + #points.append(corners[0]) + #points.append(corners[1]) + #points.append(corners[2]) + #points.append(corners[0]) + + #lng = [-point[0] for point in points] + #lat = [point[1] for point in points] + #plt.figure() + #plt.scatter(lng, lat, marker='D') + #plt.xlabel("Longitude") + #plt.ylabel("Latitude") + #plt.show() return grided_area -#print(define_gridareas(-60,10,1500,4)) -print(define_gridareas(3435693.5,6299200.0, 20000000000,4)) \ No newline at end of file +#print(define_gridareas(-60,10,10000,4)) +#print(define_gridareas(3435693.5,6299200.0, 400000,4)) \ No newline at end of file diff --git a/server/data_processing/process_lidar_data.py b/server/data_processing/process_lidar_data.py index 6345fe111402ee8e51229e16630a5d819f5912d7..43209e790f54433400d02ae8656e02a30f2d35d1 100644 --- a/server/data_processing/process_lidar_data.py +++ b/server/data_processing/process_lidar_data.py @@ -29,9 +29,9 @@ with laspy.open(lazData_path[0]) as fh: # check if lidar points is within range of the area selected def inArea(position, areaRange): x, y, _ = position - print(areaRange[0][0], " > ", x, " > ", areaRange[1][0], ") and (", areaRange[0][1], " < ", y, " < ", areaRange[1][1]) if (areaRange[0][0] > x > areaRange[1][0]) and (areaRange[0][1] < y < areaRange[1][1]): - print("inside area") + #print(areaRange[0][0]," > ",x," > ",areaRange[1][0],") and (",areaRange[0][1]," < ",y," < ",areaRange[1][1]) + #print("inside area", position) return True else: return False @@ -97,9 +97,10 @@ def calculate_area_data(center): #areazone = ((((-3200175 / area[0][0]) - ( - 3671212 / area[2][0]))), # ((7898422 / area[0][1]) - (area[2][1] / 4699978))) - #area = calculate_corners(center[0],center[1], 1500) + area = calculate_corners(center[0],center[1], 1500) + print("area", area) - areazone = calculate_corners(3435693.5,7550000.0, 20000000000) + #areazone = calculate_corners(3496480.06669129,7681517.961979784, 400000) #print(area[0]," area ", area[2]) #start_point = areazone[0] @@ -117,14 +118,27 @@ def calculate_area_data(center): # add two files together temporary test data(soon to be removed) ice_points = list(zip(iceOver.X,iceOver.Y,iceOver.Z)) + list(zip(iceUnder.X,iceUnder.Y,iceUnder.Z)) + max_point = max(ice_points) + min_point = min(ice_points) # area height in all the subsections #grid_area_heights = define_gridareas(-3435693.5,6299200.0, 20000000000,4) - grid_area_heights = define_gridareas(3435693.5,7550000.0, 20000000000,4) - - print("",grid_area_heights) + #grid_area_heights = define_gridareas(3496480.06669129,7681517.961979784, 400000,4) + grid_area_heights = define_gridareas(60,10, 1500,4) # find the heights of each sub-area => area-heights for sub_area in grid_area_heights: + start = min(sub_area[2]) + end = max(sub_area[2]) + + #test data + areazone = [(((min_point[0] - max_point[0]) * ((start[0]-center[0])/(area[1][0]-area[3][0]))) + (min_point[0] - max_point[0])/2 + max_point[0], + (((min_point[1] - max_point[1]) * ((start[1]-center[1])/(area[1][1]-area[3][1]))) + (min_point[1] - max_point[1])/2 + min_point[1])), + ((((min_point[0] - max_point[0]) * ((end[0]-center[0])/(area[1][0]-area[3][0]))) + (min_point[0] - max_point[0])/2 + max_point[0], + (((min_point[1] - max_point[1]) * ((end[1]-center[1])/(area[1][1]-area[3][1])))) + (min_point[1] - max_point[1])/2 + min_point[1]))] + #print("areazone", areazone) + + points_in_area = list(filter(lambda point_position: inArea(point_position, areazone), ice_points)) + area_heights.append((sub_area[0],sub_area[1],find_height(points_in_area))) #main_vector = tuple(x - y for x, y in zip(area[2], area[0])) #sub_vector = tuple(x - y for x, y in zip(sub_area[2][2], sub_area[2][0])) @@ -148,17 +162,15 @@ def calculate_area_data(center): # tuple(x + y for x, y in zip(zone_limit[1], start_point))) #print("zone_limit",zone_limit) - print(type(ice_points[0])) - ice_points = list(filter(lambda point_position: inArea(point_position, ((int(-sub_area[2][0][0]),int(sub_area[2][0][1])),(int(-sub_area[2][2][0]),int(sub_area[2][2][1])))), ice_points)) + #ice_points = list(filter(lambda point_position: inArea((float(point_position[0]),float(point_position[1]),(float(point_position[2]))), (((-sub_area[2][0][0]), (sub_area[2][0][1])), ((-sub_area[2][2][0]), (sub_area[2][2][1])))), ice_points)) #ice_points = list(filter(lambda point_position: inArea(point_position, (((-areazone[0][0]),areazone[0][1]),(-areazone[2][0],areazone[2][1]))), ice_points)) #ice_points = list(filter(lambda point_position: inArea(point_position, (((-3200000,7400000),(-3671212,7898422)))), ice_points)) - print("ice",ice_points) - area_heights.append((sub_area[0],sub_area[1],find_height(ice_points))) - return area_heights + #print("ice",ice_points) + #area_heights.append((sub_area[0],sub_area[1],find_height(ice_points))) -print(-3>-4) -print(calculate_area_data((60.0,10.0))) + return area_heights +#print(calculate_area_data((60.0,10.0))) diff --git a/server/map/__pycache__/input_new_data.cpython-39.pyc b/server/map/__pycache__/input_new_data.cpython-39.pyc index 4881eedf5ef43ca958dd3f3bc08a3990387c89ae..895a95e645fe34909fee7a3eabf48363211cab2d 100644 Binary files a/server/map/__pycache__/input_new_data.cpython-39.pyc and b/server/map/__pycache__/input_new_data.cpython-39.pyc differ diff --git a/server/map/input_new_data.py b/server/map/input_new_data.py index d52d93bac86442ecd7831831b234a271f7782a7f..600cd974cfc058863b1f418d7f12c3346f32c8b6 100644 --- a/server/map/input_new_data.py +++ b/server/map/input_new_data.py @@ -38,28 +38,31 @@ def input_new_Lidar_data(self, cursor, sensorId, bodyOfWater): print("area") print(areas_data) if(areas_data): + print("areas data",areas_data) for area in areas_data: - #if(len(area[2]) != 0): - average = sum(area[2])/len(area[2]) - #else: - #average = 0 - + if(len(area[2]) != 0): + average = sum(area[2])/len(area[2]) + minimum_thickness = min(area[2]) + else: + average = 0 + minimum_thickness = 0 total_measurement_average += average cursor.execute(''' INSERT INTO SubDivision(MeasurementID, SubDivisionID, GroupID, MinimumThickness, AverageThickness, CenterLatitude, CenterLongitude, Accuracy) VALUES (?,?,?,?,?,?,?,?); - ''',(measurement_id, area[0], area[1], float(min(area[2])), float(average), float(latitude), float(longitude), float(1))) + ''',(measurement_id, area[0], area[1], float(minimum_thickness), float(average), float(latitude), float(longitude), float(1))) total_measurement_average = total_measurement_average / len(areas_data) + + print("meas id ", measurement_id) # input the newly generated measurement_id and whole average thickness (soon to be implemented) cursor.execute(''' UPDATE Measurement - SET measurementID = ? AND WholeAverageThickness = ? + SET measurementID = ?, WholeAverageThickness = ? WHERE MeasurementID IS NULL AND WholeAverageThickness = 0; - ''', (int(measurement_id), total_measurement_average),) + ''', (int(measurement_id), total_measurement_average), ) else: print('No data found') - print("uwu3") # send the changes to the database cursor.connection.commit() @@ -70,4 +73,4 @@ def input_new_Lidar_data(self, cursor, sensorId, bodyOfWater): except Exception as e: print("An error occurred", e) # rollback in case of error - cursor.connection.rollback() \ No newline at end of file + cursor.connection.rollback() diff --git a/server/sql_db/icedb b/server/sql_db/icedb index 2b47b60d052434b9a32c5fa7d5bb044f59cf1974..e322b979e3371bb38f7a256e1b9416ae3b4a7659 100644 Binary files a/server/sql_db/icedb and b/server/sql_db/icedb differ