diff --git a/server/main.py b/server/main.py index 8b53d98dd8e2ffad1fd6648fdd7adcc9c1b69132..30d4bc7f927c440ee8281a328287975d32de42e5 100644 --- a/server/main.py +++ b/server/main.py @@ -41,7 +41,7 @@ class IceHTTP(BaseHTTPRequestHandler): get_all_markers(self, self.cursor, 'mjosa') # Get all markers # NB: temporary hardcoded waterBodyName elif self.path == '/get_relation': - cut_map(self, 'mjosa') # NB temp hardcoded value + fetch_divided_map(self, 'mjosa') # NB temp hardcoded value def do_POST(self): if self.path == '/get_weather_data': diff --git a/server/map/get_lake.py b/server/map/get_lake.py index e9f9ce76ec363944a9537282811870fe331852f6..0fd3b9ffabace7add5fccf5aca58ec2b0ed62671 100644 --- a/server/map/get_lake.py +++ b/server/map/get_lake.py @@ -26,7 +26,7 @@ def create_groups(relation_file: str, data: list): relation_data = geo_data[geo_data['geometry'].geom_type == 'Polygon'] new_polygons = [] - + # Add group IDs to lake relation for measurement in data: subdiv_list = [] @@ -45,13 +45,14 @@ def create_groups(relation_file: str, data: list): sorted_list = sorted(subdiv_list, key=lambda x: x[0]) current_group = -1 # Current group_id + new_shape = [] + # While group_id is same -> merge all polygons and give each a group id for element in sorted_list: - new_shape = [] if element[0] == current_group: new_shape.append(element[1]) - elif current_group > -1: + elif len(new_shape) > 1: merged_polygon = MultiPolygon(new_shape).buffer(0) # Convert MultiPolygon to Polygon @@ -59,33 +60,31 @@ def create_groups(relation_file: str, data: list): merged_polygon = merged_polygon.convex_hull # Add following structure to new polygon - ''' - Expected structure: - { + merged_polygon_structure = { "type": "Feature", "properties": { - "group_id": "0", + "group_id": current_group, }, "geometry": { "type": "Polygon", - "coordinates": [ - [ - [ - 10.4304,... - ''' + "coordinates": [list(merged_polygon.exterior.coords)] + } + } - # Append to new_polygons + # Append new polygon to new_polygons + new_polygons.append(merged_polygon_structure) - current_group = element[0] # Update current group to new group_id - else: + # Update current group to new group_id and reset new_shapes for next group current_group = element[0] + new_shape = [] + # Append all new shapes + relation_data = relation_data.append(new_polygons, ignore_index=True) # Convert GeoDataFrame to JSON relation_data_json = json.loads(relation_data.to_json()) - # Append the new data to the end of features of mjosa_div.json - + # Write relation with group shapes to file write_json_to_file("server/lake_relations", "mjosa", relation_data_json)