Skip to content
Snippets Groups Projects
Commit a323d232 authored by Hoa Ben The Nguyen's avatar Hoa Ben The Nguyen
Browse files

fix: structure for x and y and lat and long

parent ae76be83
No related branches found
No related tags found
No related merge requests found
......@@ -44,9 +44,9 @@ def define_gridareas(lat, lng, area_offset, grid_size):
i=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
relative_size_lat = y / grid_size
for x in (range(grid_size)):
relative_size_lat = x / grid_size
relative_size_lng = x / grid_size
lat_pos = main_area[3][0] + relative_size_lat * area_size[0] + dist_to_subcenter[0]
lng_pos = main_area[3][1] + relative_size_lng * area_size[1] + dist_to_subcenter[1]
# id of each subarea
......@@ -64,5 +64,5 @@ def define_gridareas(lat, lng, area_offset, grid_size):
return grided_area
#[1,2,2,3,4,5,6,3,4,6,8,9,5,3,5.7,8,5,3]
#print(define_gridareas(-60,10,10000,4))
#print(define_gridareas(60,10,1500,4))
#print(define_gridareas(3435693.5,6299200.0, 400000,4))
\ No newline at end of file
......@@ -32,25 +32,27 @@ def about_laz_file():
# check if lidar points is within range of the area selected
def inArea(position, areaRange):
x, y, _ = position
if (areaRange[0][0] > x > areaRange[1][0]) and (abs(areaRange[0][1]) > abs(y) > abs(areaRange[1][1])):
y, x, _ = position
if (abs(areaRange[0][0]) > x > abs(areaRange[1][0])) and (abs(areaRange[0][1]) > abs(y) > abs(areaRange[1][1])):
return True
else:
return False
# find distance between two points
def distance(point1, point2):
x1, y1 = point1
x2, y2 = point2
return math.sqrt(abs(x2 - x1)**2 + abs(y2 - y1)**2)
y1, x1 = point1
y2, x2 = point2
print(y1," 2 ",x1)
print(y2," 3 ",x2)
return math.sqrt(abs(y2 - y1)**2 + abs(x2 - x1)**2)
# find the closest point in json list
def closest_points(point, list, coords_taken):
print(point, " 4 ")
closest_point = None
closest_dist = float('inf')
for current_point in list:
lng, lat = current_point['properties']['sub_div_center'][0]
dist = distance(point, (lat, lng))
dist = distance(point, current_point['properties']['sub_div_center'][0])
if dist < closest_dist and current_point not in coords_taken:
closest_dist = dist
closest_point = current_point
......@@ -58,6 +60,7 @@ def closest_points(point, list, coords_taken):
# Calculation of height in an area from las files
def find_height(points):
print(points, " 5 ")
height_differences = [] # final container for height data
# sort the points
......@@ -102,13 +105,13 @@ def calculate_area_data(center, cell_size, body_of_water):
map_data = json.load(data)
map_data = map_data['features']
print(map_data[0]['properties']['sub_div_center'][0])
print(map_data[0]['properties']['sub_div_center'])
map_zones = [area_limit[1],area_limit[3]]
print(map_zones)
map_data = list(filter(lambda point_position: inArea((point_position['properties']['sub_div_center'][0][1], point_position['properties']['sub_div_center'][0][0],0.0), map_zones), map_data))
map_data = list(filter(lambda point_position: inArea((point_position['properties']['sub_div_center'][0], point_position['properties']['sub_div_center'][1],0.0), map_zones), map_data))
print(len(map_data))
......@@ -126,8 +129,9 @@ def calculate_area_data(center, cell_size, body_of_water):
# 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])
print(sub_area)
start = min(sub_area[1])
end = max(sub_area[1])
#test data
# zone coordinates sett to be relative to the lidar data
......@@ -137,12 +141,12 @@ def calculate_area_data(center, cell_size, body_of_water):
(((min_point[1] - max_point[1]) * ((end[1]-center[1])/(area_limit[1][1]-area_limit[3][1])))) + (min_point[1] - max_point[1])/2 + min_point[1]))]
# calculate map zones height
xs, ys = start
xe, ye = end
ys, xs = start
ye, xe = end
sub_center = ((xs + xe)/2, (ys + ye)/2)
if len(map_data) > 0:
current_map_zone = closest_points(sub_center, map_data, taken_coords)
taken_coords.append((current_map_zone['properties']['sub_div_center'][0][1], current_map_zone['properties']['sub_div_center'][0][0]))
taken_coords.append((current_map_zone['properties']['sub_div_center'][0][0], current_map_zone['properties']['sub_div_center'][0][1]))
else:
return [0]
......@@ -155,4 +159,5 @@ def calculate_area_data(center, cell_size, body_of_water):
return area_heights
# print(calculate_area_data((61,11), 0.04,'mjosa'))
\ No newline at end of file
#print(calculate_area_data((61,11), 0.04,'mjosa'))
......@@ -37,7 +37,7 @@ def input_new_Lidar_data(self, cursor, bodyOfWater):
# calculate data for each zone within the area
for area in areas_data:
# lng and lat relative to map
map_lng, map_lat = area[2]
map_lat, map_lng = area[2]
if(len(area[2]) != 0):
average = sum(area[2])/len(area[2])
......@@ -101,4 +101,4 @@ def input_new_Lidar_data(self, cursor, 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()
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment