def test_lib_floatcanvas_fc_polygon(self):
        fccanvas = fc.FloatCanvas(self.frame)

        obj = fc.Polygon((2, 2))

        fccanvas.AddObject(obj)
        fccanvas.Destroy()
Exemple #2
0
    def __init__(self,parent, id,title,position,size):
        wx.Frame.__init__(self,parent, id,title,position, size)

        self.CreateStatusBar()
        # Add the Canvas
        NC = NavCanvas.NavCanvas(self,
                                 size= (500,500),
                                 ProjectionFun = None,
                                 Debug = 0,
                                 )

        self.Canvas = NC.Canvas


        self.Show(True)


        # --- draw link between centroids ---

        # build link
        link_pts = get_line_pts([-100,-170],[500,301],order=4, num=100)

        # construct arrow in center of line
        arrow_coords = build_arrow(link_pts, arrow_length=3)

        # plot the link and arrowhead
        self.Canvas.AddObject(FloatCanvas.Polygon(arrow_coords,FillColor='Blue',InForeground=True))
        #self.Canvas.AddObject(FloatCanvas.Line(link_pts,LineWidth=2,InForeground=False))


        cmap = plt.cm.Blues
        num_colors = len(link_pts)
        colors = [cmap(1.*i/num_colors) for i in range(num_colors)]

        # import random
        # r = lambda: random.randint(0,255)
        for i in range(0,len(link_pts)-1):
            #color = '#%02X%02X%02X' % (r(),r(),r())
            color = mcolors.rgb2hex(colors[i])
            #color = colors[i][:-1]
            self.Canvas.AddObject(FloatCanvas.Line((link_pts[i],link_pts[i+1]),LineColor=color,LineWidth=2,InForeground=False))



        # --- draw rounded rectangle objects ---
        # draw some boxes
        draw_rounded_rectangle(self.Canvas,(-100,-170),width=200, height=100)
        draw_rounded_rectangle(self.Canvas,(500,301), width=250, height=150)






        # zoom to bounding box
        self.Canvas.ZoomToBB()

        return None
Exemple #3
0
    def OnClickLeft(self, event):
        with open('testjson.json', 'r') as file1:
            T = json.load(file1)
        for room, dim in T.items():
            for par, dim1 in dim.items():
                if par == "topright_pos_y":
                    xx = int(T[room]["topright_pos_x"])
                    y1 = int(T[room]["topright_pos_y"])
                    yy = 0 - y1  # changing the +Y-axis to -Y-axis
                    ll = int(T[room]["length"])
                    bb = int(T[room]["breadth"])

                    drline1 = FloatCanvas.Line([(xx, yy), (xx + ll, yy)],
                                               LineWidth=4,
                                               LineColor='black')
                    self.Canvas.AddObject(drline1)
                    drline2 = FloatCanvas.Line([(xx, yy), (xx, yy - bb)],
                                               LineWidth=4,
                                               LineColor='black')
                    self.Canvas.AddObject(drline2)
                    drline3 = FloatCanvas.Line([(xx + ll, yy),
                                                (xx + ll, yy - bb)],
                                               LineWidth=4,
                                               LineColor='black')
                    self.Canvas.AddObject(drline3)
                    drline4 = FloatCanvas.Line([(xx, yy - bb),
                                                (xx + ll, yy - bb)],
                                               LineWidth=4,
                                               LineColor='black')
                    self.Canvas.AddObject(drline4)
                self.Canvas.Draw()
                if par == "nodes":
                    for i in range(len(T[room]["nodes"])):
                        N.append(int(T[room][par][i]["node_id"]))
                        X.append(int(T[room][par][i]["node_pos_x"]))
                        Y.append(int(T[room][par][i]["node_pos_y"]))

                        for node_par, node_val in T[room][par][i].items():
                            if T[room][par][i]["type"] == "s":
                                cir = FloatCanvas.Circle([
                                    int(T[room][par][i]["node_pos_x"]),
                                    -int(T[room][par][i]["node_pos_y"])
                                ],
                                                         7,
                                                         FillColor='red')
                                self.Canvas.AddObject(cir)
                            if T[room][par][i]["type"] == "p":
                                rect = FloatCanvas.Rectangle([
                                    int(T[room][par][i]["node_pos_x"]),
                                    -int(T[room][par][i]["node_pos_y"])
                                ], (8, 8),
                                                             FillColor='blue')
                                self.Canvas.AddObject(rect)
                            if T[room][par][i]["type"] == "k":
                                poly = FloatCanvas.Polygon([
                                    (int(T[room][par][i]["node_pos_x"]) - 4,
                                     -int(T[room][par][i]["node_pos_y"]) - 4),
                                    (int(T[room][par][i]["node_pos_x"]) + 4,
                                     -int(T[room][par][i]["node_pos_y"]) - 4),
                                    (int(T[room][par][i]["node_pos_x"]) + 4,
                                     -int(T[room][par][i]["node_pos_y"]) + 4),
                                    (int(T[room][par][i]["node_pos_x"]) - 4,
                                     -int(T[room][par][i]["node_pos_y"]) + 4)
                                ],
                                                           FillColor='yellow')
                                self.Canvas.AddObject(poly)
                            if T[room][par][i]["type"] == "r":
                                poly1 = FloatCanvas.Polygon([
                                    (int(T[room][par][i]["node_pos_x"]),
                                     -int(T[room][par][i]["node_pos_y"]) - 7),
                                    (int(T[room][par][i]["node_pos_x"]) - 7,
                                     -int(T[room][par][i]["node_pos_y"]) + 7),
                                    (int(T[room][par][i]["node_pos_x"]) + 7,
                                     -int(T[room][par][i]["node_pos_y"]) + 7)
                                ],
                                                            FillColor='cyan')
                                self.Canvas.AddObject(poly1)

            if room == "Blank_Area":
                points = [(int(T[room]['x1']), -int(T[room]['y1'])),
                          (int(T[room]['x2']), -int(T[room]['y2'])),
                          (int(T[room]['x3']), -int(T[room]['y3'])),
                          (int(T[room]['x4']), -int(T[room]['y4'])),
                          (int(T[room]['x5']), -int(T[room]['y5'])),
                          (int(T[room]['x6']), -int(T[room]['y6'])),
                          (int(T[room]['x7']), -int(T[room]['y7'])),
                          (int(T[room]['x8']), -int(T[room]['y8'])),
                          (int(T[room]['x9']), -int(T[room]['y9'])),
                          (int(T[room]['x10']), -int(T[room]['y10'])),
                          (int(T[room]['x11']), -int(T[room]['y11']))]

                blankarea = FloatCanvas.Polygon(points,
                                                LineWidth=4,
                                                LineColor='black',
                                                FillColor="#95bce7",
                                                FillStyle='Solid')
                self.Canvas.AddObject(blankarea)


# Dialog Box to input the limiting distance
        dlg_limit = wx.TextEntryDialog(self, 'Enter the Limiting Distance:')
        if dlg_limit.ShowModal() == wx.ID_OK:
            limit = int(dlg_limit.GetValue())
        dlg_limit.Destroy()

        # Drawing lines for shortest distances between two nodes
        for i in range(len(N)):
            for j in range(len(N)):
                dist = self.distance_calc(X[i], -Y[i], X[j], -Y[j])
                if dist < limit:
                    self.Canvas.AddObject(
                        FloatCanvas.Line([(X[i], -Y[i]), (X[j], -Y[j])],
                                         LineColor='Black',
                                         LineStyle='Solid',
                                         LineWidth=1))

        self.Canvas.Draw()
Exemple #4
0
    def process_jsonfile(self, T):
        for room, dim in T.items():
            for par, dim1 in dim.items():
                if par == "topright_pos_y":
                    xx = int(T[room]["topright_pos_x"])
                    y1 = int(T[room]["topright_pos_y"])
                    yy = 0 - y1  # changing the +Y-axis to -Y-axis
                    ll = int(T[room]["length"])
                    bb = int(T[room]["breadth"])

                    drline1 = FloatCanvas.Line([(xx, yy), (xx + ll, yy)],
                                               LineWidth=4,
                                               LineColor='black')
                    self.Canvas.AddObject(drline1)
                    drline2 = FloatCanvas.Line([(xx, yy), (xx, yy - bb)],
                                               LineWidth=4,
                                               LineColor='black')
                    self.Canvas.AddObject(drline2)
                    drline3 = FloatCanvas.Line([(xx + ll, yy),
                                                (xx + ll, yy - bb)],
                                               LineWidth=4,
                                               LineColor='black')
                    self.Canvas.AddObject(drline3)
                    drline4 = FloatCanvas.Line([(xx, yy - bb),
                                                (xx + ll, yy - bb)],
                                               LineWidth=4,
                                               LineColor='black')
                    self.Canvas.AddObject(drline4)
                self.Canvas.Draw()
                if par == "Nodes":
                    for i in range(len(T[room]["Nodes"])):
                        N.append(int(T[room][par][i]["node_id"]))
                        X.append(int(T[room][par][i]["node_pos_x"]))
                        Y.append(int(T[room][par][i]["node_pos_y"]))

                        for node_par, node_val in T[room][par][i].items():
                            print("----", T[room][par][i]["node_id"], "------")
                            if T[room][par][i]["type"] == "s":
                                cir = FloatCanvas.Circle([
                                    int(T[room][par][i]["node_pos_x"]),
                                    -int(T[room][par][i]["node_pos_y"])
                                ],
                                                         7,
                                                         FillColor='red')
                                self.Canvas.AddObject(cir)
                                print(T[room][par][i]["type"])
                            if T[room][par][i]["type"] == "k":
                                poly = FloatCanvas.Polygon([
                                    (int(T[room][par][i]["node_pos_x"]) - 4,
                                     -int(T[room][par][i]["node_pos_y"]) - 4),
                                    (int(T[room][par][i]["node_pos_x"]) + 4,
                                     -int(T[room][par][i]["node_pos_y"]) - 4),
                                    (int(T[room][par][i]["node_pos_x"]) + 4,
                                     -int(T[room][par][i]["node_pos_y"]) + 4),
                                    (int(T[room][par][i]["node_pos_x"]) - 4,
                                     -int(T[room][par][i]["node_pos_y"]) + 4)
                                ],
                                                           FillColor='yellow')
                                self.Canvas.AddObject(poly)
                                print(T[room][par][i]["type"])
                            if T[room][par][i]["type"] == "r":
                                rect = FloatCanvas.Rectangle([
                                    int(T[room][par][i]["node_pos_x"]),
                                    -int(T[room][par][i]["node_pos_y"])
                                ], (8, 8),
                                                             FillColor='blue')
                                self.Canvas.AddObject(rect)
                                print(T[room][par][i]["type"])

            if room == "Blank_Area":
                points = [(int(T[room]['x1']), -int(T[room]['y1'])),
                          (int(T[room]['x2']), -int(T[room]['y2'])),
                          (int(T[room]['x3']), -int(T[room]['y3'])),
                          (int(T[room]['x4']), -int(T[room]['y4'])),
                          (int(T[room]['x5']), -int(T[room]['y5'])),
                          (int(T[room]['x6']), -int(T[room]['y6'])),
                          (int(T[room]['x7']), -int(T[room]['y7'])),
                          (int(T[room]['x8']), -int(T[room]['y8'])),
                          (int(T[room]['x9']), -int(T[room]['y9'])),
                          (int(T[room]['x10']), -int(T[room]['y10'])),
                          (int(T[room]['x11']), -int(T[room]['y11']))]

                blankarea = FloatCanvas.Polygon(points,
                                                LineWidth=4,
                                                LineColor='black',
                                                FillColor="#95bce7",
                                                FillStyle='Solid')
                self.Canvas.AddObject(blankarea)
Exemple #5
0
    def OnClickLeft(self,event):
        with open('testjson.json','r') as file1:
            T = json.load(file1)
        for room,dim in T.items():
            for par,dim1 in dim.items():
                if par == "topright_pos_y":
                    xx=int(T[room]["topright_pos_x"])
                    y1=int(T[room]["topright_pos_y"])
                    yy=0-y1  # changing the +Y-axis to -Y-axis
                    ll=int(T[room]["length"])
                    bb=int(T[room]["breadth"])

                    drline1 = FloatCanvas.Line([(xx,yy),(xx+ll,yy)],LineWidth=4,LineColor='black')
                    self.Canvas.AddObject(drline1)
                    drline2 = FloatCanvas.Line([(xx,yy),(xx,yy-bb)],LineWidth=4,LineColor='black')
                    self.Canvas.AddObject(drline2)
                    drline3 = FloatCanvas.Line([(xx+ll,yy),(xx+ll,yy-bb)],LineWidth=4,LineColor='black')
                    self.Canvas.AddObject(drline3)
                    drline4 = FloatCanvas.Line([(xx,yy-bb),(xx+ll,yy-bb)],LineWidth=4,LineColor='black')
                    self.Canvas.AddObject(drline4)
                self.Canvas.Draw()
                if par == "nodes":
                    for i in range(len(T[room]["nodes"])):
                        N.append(int(T[room][par][i]["node_id"]))
                        X.append(int(T[room][par][i]["node_pos_x"]))
                        Y.append(int(T[room][par][i]["node_pos_y"]))

                        #    Drawing Nodes
                        for node_par,node_val in T[room][par][i].items():
                            if T[room][par][i]["type"] == "s":
                                cir = FloatCanvas.Circle([int(T[room][par][i]["node_pos_x"]),-int(T[room][par][i]["node_pos_y"])],7,FillColor = 'red')
                                self.Canvas.AddObject(cir)
                            if T[room][par][i]["type"] == "p":
                                rect = FloatCanvas.Rectangle([int(T[room][par][i]["node_pos_x"]),-int(T[room][par][i]["node_pos_y"])],(8,8),FillColor='blue')
                                self.Canvas.AddObject(rect)
                            if T[room][par][i]["type"] == "k":
                                poly = FloatCanvas.Polygon([(int(T[room][par][i]["node_pos_x"])-4,-int(T[room][par][i]["node_pos_y"])-4),
                                                            (int(T[room][par][i]["node_pos_x"])+4,-int(T[room][par][i]["node_pos_y"])-4),
                                                            (int(T[room][par][i]["node_pos_x"])+4,-int(T[room][par][i]["node_pos_y"])+4),
                                                            (int(T[room][par][i]["node_pos_x"])-4,-int(T[room][par][i]["node_pos_y"])+4)],
                                                           FillColor='yellow')
                                self.Canvas.AddObject(poly)
                            if T[room][par][i]["type"] == "r":
                                poly1 = FloatCanvas.Polygon([(int(T[room][par][i]["node_pos_x"]),-int(T[room][par][i]["node_pos_y"])-7),
                                                             (int(T[room][par][i]["node_pos_x"])-7,-int(T[room][par][i]["node_pos_y"])+7),
                                                             (int(T[room][par][i]["node_pos_x"])+7,-int(T[room][par][i]["node_pos_y"])+7)],
                                                            FillColor='cyan')
                                self.Canvas.AddObject(poly1)

            # Drawing and highlighting the unused area
            if room == "Blank_Area":
                points = [(int(T[room]['x1']),-int(T[room]['y1'])),
                          (int(T[room]['x2']),-int(T[room]['y2'])),
                          (int(T[room]['x3']),-int(T[room]['y3'])),
                          (int(T[room]['x4']),-int(T[room]['y4'])),
                          (int(T[room]['x5']),-int(T[room]['y5'])),
                          (int(T[room]['x6']),-int(T[room]['y6'])),
                          (int(T[room]['x7']),-int(T[room]['y7'])),
                          (int(T[room]['x8']),-int(T[room]['y8'])),
                          (int(T[room]['x9']),-int(T[room]['y9'])),
                          (int(T[room]['x10']),-int(T[room]['y10'])),
                          (int(T[room]['x11']),-int(T[room]['y11']))]

                blankarea = FloatCanvas.Polygon(points,LineWidth=4,LineColor='black',FillColor = "SKY BLUE" , FillStyle='Solid')
                self.Canvas.AddObject(blankarea)

        # Making edges for distances < 100 between two nodes
        for i in range (len(N)):
            for j in range (len(N)):
                dist = self.distance_calc(X[i],-Y[i],X[j],-Y[j])
                if dist < 100:
                    self.Canvas.AddObject(FloatCanvas.Line([(X[i],-Y[i]),(X[j],-Y[j])], LineColor = 'Black', LineStyle='Solid',LineWidth=1))
        self.Canvas.Draw()
Exemple #6
0
    def OnClickLeft(self, event):
        with open('testjson.json', 'r') as file1:
            T = json.load(file1)
        for room, dim in T.items():
            for par, dim1 in dim.items():
                if par == "topright_pos_y":
                    xx = int(T[room]["topright_pos_x"])
                    y1 = int(T[room]["topright_pos_y"])
                    yy = 0 - y1
                    ll = int(T[room]["length"])
                    bb = int(T[room]["breadth"])

                    drline1 = FloatCanvas.Line([(xx, yy), (xx + ll, yy)],
                                               LineWidth=4,
                                               LineColor='black')
                    self.Canvas.AddObject(drline1)
                    self.Canvas.Draw()
                    drline2 = FloatCanvas.Line([(xx, yy), (xx, yy - bb)],
                                               LineWidth=4,
                                               LineColor='black')
                    self.Canvas.AddObject(drline2)
                    self.Canvas.Draw()
                    drline3 = FloatCanvas.Line([(xx + ll, yy),
                                                (xx + ll, yy - bb)],
                                               LineWidth=4,
                                               LineColor='black')
                    self.Canvas.AddObject(drline3)
                    self.Canvas.Draw()
                    drline4 = FloatCanvas.Line([(xx, yy - bb),
                                                (xx + ll, yy - bb)],
                                               LineWidth=4,
                                               LineColor='black')
                    self.Canvas.AddObject(drline4)
                    self.Canvas.Draw()
                self.Canvas.Draw()
                if par == "nodes":
                    for i in range(len(T[room]["nodes"])):
                        for node_par, node_val in T[room][par][i].items():
                            if T[room][par][i]["type"] == "s":
                                cir = FloatCanvas.Circle([
                                    int(T[room][par][i]["node_pos_x"]),
                                    0 - int(T[room][par][i]["node_pos_y"])
                                ],
                                                         7,
                                                         FillColor='red')
                                self.Canvas.AddObject(cir)
                            if T[room][par][i]["type"] == "p":
                                rect = FloatCanvas.Rectangle([
                                    int(T[room][par][i]["node_pos_x"]),
                                    0 - int(T[room][par][i]["node_pos_y"])
                                ], (8, 8),
                                                             FillColor='blue')
                                self.Canvas.AddObject(rect)
                            if T[room][par][i]["type"] == "k":
                                poly = FloatCanvas.Polygon(
                                    [(int(T[room][par][i]["node_pos_x"]) - 4,
                                      0 - int(T[room][par][i]["node_pos_y"]) -
                                      4),
                                     (int(T[room][par][i]["node_pos_x"]) + 4,
                                      0 - int(T[room][par][i]["node_pos_y"]) -
                                      4),
                                     (int(T[room][par][i]["node_pos_x"]) + 4,
                                      0 - int(T[room][par][i]["node_pos_y"]) +
                                      4),
                                     (int(T[room][par][i]["node_pos_x"]) - 4,
                                      0 - int(T[room][par][i]["node_pos_y"]) +
                                      4)],
                                    FillColor='yellow')
                                self.Canvas.AddObject(poly)
                            if T[room][par][i]["type"] == "r":
                                poly1 = FloatCanvas.Polygon(
                                    [(int(T[room][par][i]["node_pos_x"]), 0 -
                                      int(T[room][par][i]["node_pos_y"]) - 7),
                                     (int(T[room][par][i]["node_pos_x"]) - 7,
                                      0 - int(T[room][par][i]["node_pos_y"]) +
                                      7),
                                     (int(T[room][par][i]["node_pos_x"]) + 7,
                                      0 - int(T[room][par][i]["node_pos_y"]) +
                                      7)],
                                    FillColor='cyan')
                                self.Canvas.AddObject(poly1)
                    self.Canvas.Draw()
            if room == "Blank_Area":
                points = [(int(T[room]['x1']), 0 - int(T[room]['y1'])),
                          (int(T[room]['x2']), 0 - int(T[room]['y2'])),
                          (int(T[room]['x3']), 0 - int(T[room]['y3'])),
                          (int(T[room]['x4']), 0 - int(T[room]['y4'])),
                          (int(T[room]['x5']), 0 - int(T[room]['y5'])),
                          (int(T[room]['x6']), 0 - int(T[room]['y6'])),
                          (int(T[room]['x7']), 0 - int(T[room]['y7'])),
                          (int(T[room]['x8']), 0 - int(T[room]['y8'])),
                          (int(T[room]['x9']), 0 - int(T[room]['y9'])),
                          (int(T[room]['x10']), 0 - int(T[room]['y10'])),
                          (int(T[room]['x11']), 0 - int(T[room]['y11']))]

                blankarea = FloatCanvas.Polygon(points,
                                                LineWidth=4,
                                                LineColor='black',
                                                FillColor="SKY BLUE",
                                                FillStyle='Solid')
                self.Canvas.AddObject(blankarea)

            self.Canvas.Draw()
Exemple #7
0
    def OnClickBrowse(self, event):
        self.SetStatusText("Find the json file...")
        openFileDialog = wx.FileDialog(self.properties_panel, "Open", "", "",
                                       "*.*",
                                       wx.FD_OPEN | wx.FD_FILE_MUST_EXIST)
        openFileDialog.ShowModal()
        self.SetStatusText(openFileDialog.GetPath())
        self.filename = openFileDialog.GetFilename()
        self.dirname = openFileDialog.GetDirectory()
        with open(os.path.join(self.dirname, self.filename), "r") as file1:
            node_data = json.load(file1)
            T = node_data
            for room, dim in T.items():
                if room == "Blank_Area":
                    points = [(int(T[room]['x1']), int(T[room]['y1'])),
                              (int(T[room]['x2']), int(T[room]['y2'])),
                              (int(T[room]['x3']), int(T[room]['y3'])),
                              (int(T[room]['x4']), int(T[room]['y4'])),
                              (int(T[room]['x5']), int(T[room]['y5'])),
                              (int(T[room]['x6']), int(T[room]['y6'])),
                              (int(T[room]['x7']), int(T[room]['y7'])),
                              (int(T[room]['x8']), int(T[room]['y8'])),
                              (int(T[room]['x9']), int(T[room]['y9'])),
                              (int(T[room]['x10']), int(T[room]['y10'])),
                              (int(T[room]['x11']), int(T[room]['y11']))]
                    blankarea = FloatCanvas.Polygon(points,
                                                    LineWidth=4,
                                                    LineColor='black')
            self.nav_canvas.AddObject(blankarea)
            self.nav_canvas.Draw()

        file_dir = os.path.dirname(openFileDialog.GetPath())
        file = os.path.basename(openFileDialog.GetPath())
        file_name, file_ext = os.path.splitext(file)
        out_file_path = os.path.join(file_dir, file_name)

        G = nx.Graph()
        for key1, val1 in node_data.items():
            for key2, val2 in val1.items():
                if (key2 == "Nodes"):
                    for i in range(len(node_data[key1]["Nodes"])):
                        G.add_node(node_data[key1][key2][i]["id"])
                        for key3 in node_data[key1][key2][i]:
                            G.nodes[node_data[key1][key2][i]["id"]][
                                key3] = node_data[key1][key2][i][key3]

        logging.debug(str(list(G.nodes(data=True))))
        # =============================== Input a value for "limit" ======================================
        dlg_limit = wx.TextEntryDialog(self.nav_canvas,
                                       'Input the limit value:',
                                       'Limit Value ?')
        if dlg_limit.ShowModal() == wx.ID_OK:
            limit = int(dlg_limit.GetValue())
        dlg_limit.Destroy()
        # =================================================================================================
        G.add_weighted_edges_from(edge_calc(G, limit, param='distance'))
        option = True  #-----sbt
        #making different kinds of o/p files
        if (option == True):
            store_pickle(G, out_file_path + '_pickle')
            make_graphml(G, out_file_path + '_gml')
            make_dotfile(G, out_file_path + '_dot')
            draw_graph(G, out_file_path + '_graph')

        return (G, out_file_path)

        openFileDialog.Destroy()