Browse Source

added files

bscheibel 4 years ago
parent
commit
44eb0f54a8

+ 84 - 0
clustering_precomputed_dbscan.py

@@ -0,0 +1,84 @@
+import numpy as np
+import pandas
+import csv
+from math import sqrt
+
+def get_average_xy(list_input):
+    csv_name = "temporary/list_to_csv_with_corner_points.csv"
+    new_list = []
+    resultFile = open(csv_name, 'w')
+    wr = csv.writer(resultFile, delimiter=";")
+    wr.writerow(["element", "xmin","ymin","xmax","ymax", "ausrichtung","point_xmi_ymi","point_xma_ymi","point_xmi_yma","point_xma_yma"])
+    for element in list_input:
+        xavg_elem = 0
+        yavg_elem = 0
+        ymin = 100000000
+        ymax = 0
+        xmin = 100000000
+        xmax = 0
+        for blub in element: #get the smallest and largest x and y value for whole block
+            xavg_elem += (float(blub[0]) + float(blub[2]))/2
+            yavg_elem += (float(blub[1]) + float(blub[3]))/2
+            if float(blub[1]) < ymin:
+                ymin = float(blub[1])
+                #print("y_min:",y_min)
+            if float(blub[0]) < xmin:
+                xmin = float(blub[0])
+            if float(blub[3]) > ymax:
+                ymax = float(blub[3])
+            if float(blub[2]) > xmax:
+                xmax = float(blub[2])
+        if xmax-xmin > ymax-ymin:
+            ausrichtung = 0 #horizontal
+        else:
+            ausrichtung = 1 #vertikal
+        xavg_elem = xavg_elem/len(element)
+        #print(xavg_elem)
+        yavg_elem = yavg_elem/len(element)
+        #element.extend([xavg_elem, yavg_elem])
+        #print(element)
+        #new_list.append(element)
+        ##### GET CORNER POINTS
+        point_xmi_ymi = [xmin,ymin]
+        point_xma_ymi = [xmax,ymin]
+        point_xmi_yma = [xmin,ymax]
+        point_xma_yma = [xmax,ymax]
+        wr.writerow([element,xmin,ymin,xmax,ymax, ausrichtung,point_xmi_ymi,point_xma_ymi,point_xmi_yma,point_xma_yma])
+
+    resultFile.close()
+    #print(new_list)
+    return csv_name
+
+def dist(rectangle1, rectangle2):
+ #get minimal distance between two rectangles
+    distance = 100000000
+
+
+    print(rectangle1)
+    for point1 in rectangle1:
+        #print(point1)
+        for point2 in rectangle2:
+            #print(point2)
+            dist = sqrt((float(point2[0]) - float(point1[0]))**2 + (float(point2[1]) - float(point1[1]))**2)
+            if dist < distance:
+                distance = dist
+
+    return distance
+
+
+
+file = "/home/bscheibel/PycharmProjects/dxf_reader/drawings/5129275_Rev01-GV12.html"
+#result = order_bounding_boxes_in_each_block.get_bound_box(file)
+#print(result)
+#get_average_xy(result)
+#rectangle1 = [[0,0],[2,0],[0,2],[2,2]]
+#rectangle2 = [[3,3],[4,3],[3,4],[4,4]]
+#print(compute_distance(rectangle1,rectangle2))
+data = pandas.read_csv("/home/bscheibel/PycharmProjects/dxf_reader/temporary/list_to_csv_with_corner_points.csv", sep=";")
+data = data[["point_xmi_ymi","point_xma_ymi","point_xmi_yma","point_xma_yma"]]
+data.to_csv("blub.csv", sep=",", index=False, header=None)
+data_new = pandas.read_csv("blub.csv", sep=";",header=None)
+data_new = data_new.to_numpy()
+#print(data_new.to_string())
+#print(data.loc[:])
+dm = np.asarray([[dist(p1, p2) for p2 in data_new] for p1 in data_new])

+ 12 - 7
dbscan_clustering.py

@@ -8,19 +8,24 @@ from sklearn import metrics
 from sklearn.datasets.samples_generator import make_blobs
 from sklearn.preprocessing import StandardScaler
 
+def my_distance(x,y):
+    blub = "ddd"
+    return blub
+
+
 def cluster(file_in, file_out):
     # #############################################################################
     data_df = pandas.read_csv("/home/bscheibel/PycharmProjects/dxf_reader/temporary/list_to_csv_with_avg_points.csv", sep=";")
     data_df.head(3)
     data = data_df[["xavg_elem","yavg_elem","ausrichtung"]]
-    print(data)
+    #print(data)
     data = StandardScaler().fit_transform(data)
 
     # #############################################################################
     # Compute DBSCAN
-    db = DBSCAN(eps=0.06, min_samples=1).fit(data)
-    core_samples_mask = np.zeros_like(db.labels_, dtype=bool)
-    core_samples_mask[db.core_sample_indices_] = True
+    db = DBSCAN(eps=0.075, min_samples=1, metric="euclidean").fit(data)
+    #core_samples_mask = np.zeros_like(db.labels_, dtype=bool)
+    #core_samples_mask[db.core_sample_indices_] = True
     labels = db.labels_
     print(data[labels == 0])
     data_df["cluster"] = labels
@@ -83,7 +88,7 @@ def get_average_xy(list_input):
             yavg_elem += (float(blub[1]) + float(blub[3]))/2
             if float(blub[1]) < y_min:
                 y_min = float(blub[1])
-                print("y_min:",y_min)
+                #print("y_min:",y_min)
             if float(blub[0]) < x_min:
                 x_min = float(blub[0])
             if float(blub[3]) > y_max:
@@ -110,6 +115,6 @@ def get_average_xy(list_input):
 #cluster(33,33)
 file = "/home/bscheibel/PycharmProjects/dxf_reader/drawings/5152166_Rev04.html"
 #file = "/home/bscheibel/PycharmProjects/dxf_reader/drawings/5129275_Rev01-GV12.html"
-result = order_bounding_boxes_in_each_block.get_bound_box(file)
-get_average_xy(result)
+#result = order_bounding_boxes_in_each_block.get_bound_box(file)
+#get_average_xy(result)
 cluster(33,33)

+ 6 - 3
read_from_clustered_merged.py

@@ -1,10 +1,13 @@
 import csv
-import ast
 import re
 
 with open("/home/bscheibel/PycharmProjects/dxf_reader/values_clusteredfromHTML_layout_LH.csv", "r") as f:
     reader = csv.reader(f, delimiter=";")
+    reg_search = []
     for row in reader:
         reg = r",\s*'(\w*\W*.\d*)']"
-        reg_search = re.findall(reg, row[2])
-        print(reg_search)
+        reg_search.append(re.findall(reg, row[2]))
+        #for reg in reg_search:
+    for reg in reg_search:
+            reg_new = reg
+            print(reg_new)

File diff suppressed because it is too large
+ 189 - 188
values_clusteredfromHTML_layout_LH.csv