diff --git a/server/map/get_lake.py b/server/map/get_lake.py
index f25054f1fe8685e44b0b0411c8bcfc54c74b7b06..e9f9ce76ec363944a9537282811870fe331852f6 100644
--- a/server/map/get_lake.py
+++ b/server/map/get_lake.py
@@ -1,5 +1,5 @@
 import geopandas as gpd
-from shapely.geometry import Polygon, LineString, MultiLineString
+from shapely.geometry import Polygon, MultiPolygon
 from shapely.ops import linemerge, unary_union, polygonize
 import json
 from server.map.add_new_lake import write_json_to_file
@@ -19,6 +19,7 @@ def fetch_divided_map(self, file_name):
     self.wfile.write(data.encode('utf-8'))
 
 
+# Create groups creates polygons which consist of groupings of related subdivisions
 def create_groups(relation_file: str, data: list):
     # Read lake relation from json file
     geo_data = gpd.read_file("server/lake_relations/" + relation_file + "_div.json")
@@ -40,29 +41,44 @@ def create_groups(relation_file: str, data: list):
                 if feature['sub_div_id'] == subDivID:
                     subdiv_list.append((group_id, Polygon([feature['coordinates']])))
 
-        # Sort subdiv_list in ascending order of group_ids
-        # While group_id is same -> merge all polygons and give each a group id
-        # new_polygons.append((group_id, new_shape))
-
-
-    # Put the coordinates and group id of each new polygon in the expected structure
-    for polygon in new_polygons:
-
-        '''
-        Expected structure:
-        {
-            "type": "Feature",
-            "properties": {
-                "group_id": "0",
-            },
-            "geometry": {
-                "type": "Polygon",
-                "coordinates": [
-                    [
-                        [
-                            10.4304,...
-        '''
+        # Sort subdiv_list based on group_ids
+        sorted_list = sorted(subdiv_list, key=lambda x: x[0])
 
+        current_group = -1  # Current group_id
+        # 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:
+                merged_polygon = MultiPolygon(new_shape).buffer(0)
+
+                # Convert MultiPolygon to Polygon
+                if isinstance(merged_polygon, MultiPolygon):
+                    merged_polygon = merged_polygon.convex_hull
+
+                # Add following structure to new polygon
+                '''
+                Expected structure:
+                {
+                    "type": "Feature",
+                    "properties": {
+                        "group_id": "0",
+                    },
+                    "geometry": {
+                        "type": "Polygon",
+                        "coordinates": [
+                            [
+                                [
+                                    10.4304,...
+                '''
+
+                # Append to new_polygons
+
+                current_group = element[0]  # Update current group to new group_id
+            else:
+                current_group = element[0]
 
 
     # Convert GeoDataFrame to JSON