def __UpdateCanvas(self): '''This function draw the data on the canvas ''' try: minX, minY, maxX, maxY = self.bbox[0], self.bbox[1], self.bbox[ 2], self.bbox[3] self.canvasConfig = [canvasWidth, canvasHeight, margin_x, margin_y] self.attributeSelected = self.variable.get() self.datalist = self.dbfdata[self.attributeSelected] if self.var1.get(): self.layers.append([ self.shapes, self.shp_type, self.attributeSelected, self.datalist ]) self.Pre_canvas.addLayer(self.shapes, self.shp_type, self.attributeSelected, self.datalist) else: self.canvas.delete(ALL) self.layers = [] self.layers.append([ 1, self.shapes, self.bbox, self.shp_type, self.root, self.attributeSelected, self.datalist, self.canvas ]) self.Pre_canvas = MainCanvas(self.shapes, self.bbox, self.shp_type, self.root, self.attributeSelected, self.datalist, self.canvas, self.canvasConfig) except Exception as e: writeCalculations(self.text, e, True, NB)
def __reDraw(self): try: self.canvasConfig = [canvasWidth, canvasHeight, margin_x, margin_y] print self.canvasConfig for i in range(len(self.layers)): if self.layers[i][0] == 1: temp, self.shapes, self.bbox, self.shp_type, self.root, self.attributeSelected, self.datalist, self.canvas = self.layers[ i] self.Pre_canvas = MainCanvas(self.shapes, self.bbox, self.shp_type, self.root, self.attributeSelected, self.datalist, self.canvas, self.canvasConfig) for i in range(len(self.layers)): if self.layers[i][0] <> 1: self.shapes, self.shp_type, self.attributeSelected, self.datalist = self.layers[ i] self.Pre_canvas.addLayer(self.shapes, self.shp_type, self.attributeSelected, self.datalist) except Exception as e: writeCalculations(self.text, e, True, NB)
def __updateCanvas(self, attributeName): """ Updates the canvas and showing statistical information """ print "update Canvas "+attributeName data_list=self.dbfdata[attributeName] print "attribute values: ", data_list try: n, min_max, mean, var, skew, kurt = stats.describe(data_list) print "============================" print "attribute statistics\n" print("Number of units: {0:d}".format(n)) print("Minimum: {0:8.6f} Maximum: {1:8.6f}".format(min_max[0], min_max[1])) print("Mean: {0:8.6f}".format(mean)) print("Standard deviation: {0:8.6f}".format(math.sqrt(var))) print("Skew : {0:8.6f}".format(skew)) print("Kurtosis: {0:8.6f}".format(kurt)) print "\n============================" high=max(data_list) low=min(data_list) dif=float(high-low) for i in range(len(data_list)): #map colors to 0-200, 0-200, 0-200 (avoid pure white for display purpose) index=float(data_list[i]-low)/dif*200 index=str(hex(200-int(index)).split('x')[1]) color="#"+index+index+index self.shapes[i].color=color except: print "non-numeric attribute" self.canvas=MainCanvas(self.shapes,self.bbox,self.shp_type,self.root,attributeName,data_list)
def __reDraw(self): try: self.canvasConfig = [canvasWidth, canvasHeight, margin_x, margin_y] for i in range(len(self.layers)): if self.layers[i][0] == 1: temp, self.shapes, self.bbox, self.shp_type, self.root, self.attributeSelected, self.datalist, self.canvas = self.layers[ i] self.Pre_canvas = MainCanvas(self.shapes, self.bbox, self.shp_type, self.root, self.attributeSelected, self.datalist, self.canvas, self.canvasConfig) try: for Node in self.obj_simWidget.Nodes_List: if self.whichButton == "Left": Node.position[0] = Node.position[0] + 100 elif self.whichButton == "Right": Node.position[0] = Node.position[0] - 100 elif self.whichButton == "Up": Node.position[1] = Node.position[1] - 100 elif self.whichButton == "Down": Node.position[1] = Node.position[1] + 100 else: pass Node.draw(self.canvas) except Exception as e: print e print "Issue in redrawing in simulator" except: writeCalculations(self.text, "Please Select the file and then Visualise", True, NB)
def __UpdateCanvas(self): '''This function draw the data on the canvas ''' try: self.canvas.delete(ALL) self.canvasConfig = [canvasWidth, canvasHeight, margin_x, margin_y] self.attributeSelected = self.variable.get() self.datalist = self.dbfdata[self.attributeSelected] self.layers = [] self.layers.append([ 1, self.shapes, self.bbox, self.shp_type, self.root, self.attributeSelected, self.datalist, self.canvas ]) self.Pre_canvas = MainCanvas(self.shapes, self.bbox, self.shp_type, self.root, self.attributeSelected, self.datalist, self.canvas, self.canvasConfig) self.btn_simWidget.configure(state="active") # if self.var.get(): # self.layers.append([self.shapes,self.shp_type,self.attributeSelected,self.datalist]) # self.Pre_canvas.addLayer(self.shapes, self.shp_type, self.attributeSelected,self.datalist) # else: # self.canvas.delete(ALL) # self.layers = [] # self.layers.append([1,self.shapes,self.bbox,self.shp_type,self.root,self.attributeSelected,self.datalist,self.canvas]) # self.Pre_canvas=MainCanvas(self.shapes,self.bbox,self.shp_type,self.root,self.attributeSelected,self.datalist,self.canvas,self.canvasConfig) except Exception as e: writeCalculations(self.text, e, True, NB)
def __updateCanvas(self, attributeName): """ Updates the canvas and showing statistical information """ print "update Canvas "+attributeName self.datalist=self.dbfdata[attributeName] self.root.grid() self.root.rowconfigure(0,weight=1) self.root.columnconfigure(0,weight=1) if self.pop.options: self.canvas=MainCanvas(self.shapes,self.bbox,self.shp_type,self.root,attributeName,self.datalist) else: if (not hasattr(self, 'canvas')) or self.canvas == None: self.canvas=MainCanvas(self.shapes,self.bbox,self.shp_type,self.root,attributeName,self.datalist) else: self.canvas.addLayer(self.shapes, self.shp_type, attributeName,self.datalist) self.canvas = None
def __reDraw(self): try: self.canvasConfig = [canvasWidth,canvasHeight,margin_x,margin_y] print self.canvasConfig for i in range(len(self.layers)): if self.layers[i][0]==1: temp,self.shapes,self.bbox,self.shp_type,self.root,self.attributeSelected,self.datalist,self.canvas = self.layers[i] self.Pre_canvas=MainCanvas(self.shapes,self.bbox,self.shp_type,self.root,self.attributeSelected,self.datalist,self.canvas,self.canvasConfig) for i in range(len(self.layers)): if self.layers[i][0]<>1: self.shapes,self.shp_type,self.attributeSelected,self.datalist = self.layers[i] self.Pre_canvas.addLayer(self.shapes, self.shp_type, self.attributeSelected,self.datalist) except Exception as e: writeCalculations(self.text,e ,True,NB)
def __UpdateCanvas(self): '''This function draw the data on the canvas ''' try: self.canvasConfig = [canvasWidth,canvasHeight,margin_x,margin_y] self.attributeSelected = self.variable.get() self.datalist = self.dbfdata[self.attributeSelected] if self.var.get(): self.layers.append([self.shapes,self.shp_type,self.attributeSelected,self.datalist]) self.Pre_canvas.addLayer(self.shapes, self.shp_type, self.attributeSelected,self.datalist) else: self.canvas.delete(ALL) self.layers = [] self.layers.append([1,self.shapes,self.bbox,self.shp_type,self.root,self.attributeSelected,self.datalist,self.canvas]) self.Pre_canvas=MainCanvas(self.shapes,self.bbox,self.shp_type,self.root,self.attributeSelected,self.datalist,self.canvas,self.canvasConfig) except: writeCalculations(self.text,"Please Select the file and then Visualise" ,True)
def __UpdateCanvas(self): '''This function draw the data on the canvas ''' try: minX, minY, maxX, maxY = self.bbox[0],self.bbox[1],self.bbox[2],self.bbox[3] self.canvasConfig = [canvasWidth,canvasHeight,margin_x,margin_y] self.attributeSelected = self.variable.get() self.datalist = self.dbfdata[self.attributeSelected] if self.var1.get(): self.layers.append([self.shapes,self.shp_type,self.attributeSelected,self.datalist]) self.Pre_canvas.addLayer(self.shapes, self.shp_type, self.attributeSelected,self.datalist) else: self.canvas.delete(ALL) self.layers = [] self.layers.append([1,self.shapes,self.bbox,self.shp_type,self.root,self.attributeSelected,self.datalist,self.canvas]) self.Pre_canvas=MainCanvas(self.shapes,self.bbox,self.shp_type,self.root,self.attributeSelected,self.datalist,self.canvas,self.canvasConfig) except Exception as e: writeCalculations(self.text,e ,True,NB)
class Network: def __init__(self): self.root = Tk() self.root.state("zoomed") self.root.title("Network Simulator") self.simulatorChoice() self.createMenu() self.root.mainloop() def createMenu(self): """ Creates GUI components and register events """ self.menubar = Menu(self.root) self.dbfdata = None filemenu = Menu(self.menubar, tearoff=0) filemenu.add_command(label="Open", command=self.__openShpfile) filemenu.add_separator() filemenu.add_command(label="Exit", command=self.root.quit) self.menubar.add_cascade(label="File", menu=filemenu) self.attibmenu = Menu(self.menubar, tearoff=0) self.menubar.add_cascade(label="Attibutes", menu=self.attibmenu,state='disabled') if self.pop.options: self.menubar.add_cascade(label="Settings", state='disable',command = self.onClick) else: self.menubar.add_cascade(label="Analysis", state='disable',command = self.textAnalysis) self.root.config(menu=self.menubar) def simulatorChoice(self): ''' Create popup for choice to go to Simulation or Real Twitter Data ''' self.pop = popupWindow(self.root) self.root.wait_window(self.pop.top) if self.pop.findValue() == "Yes": self.pop.options = True else: self.pop.options = False def onClick(self): self.inputDialog = Settings(self.root) self.root.wait_window(self.inputDialog.top) def textAnalysis(self): ''' Process the text from the twitter file and analysed using NLTK ''' ''' Preparing data from sting to text format to used it with functions from NLTK ''' try: self.datalist=self.dbfdata["text"] self.data_list = [] temp = [] for i in range(len(self.datalist)): temp.append(self.datalist[i]) self.data_list.append(temp) temp = [] tw=[] itemp = len(self.data_list) for i in range(itemp): temp_list = ",".join(self.data_list[i]) tw.append(temp_list) wlist = [] for item in tw: words = item.split(" ") for word in words: wlist.append(word) text = nltk.Text(wlist) a = analysisWidget(self.root,text) except: print "Select file with text column for tweets..." def __openShpfile(self): """ Open a shapefile and read in the contents, pop up the attribute menu with the attributes of the shapefile """ print "open shape file!" directory=tkFileDialog.askopenfilename(filetypes=[("SHAPE_FILE","*.shp")]) print directory if directory == "": return self.shapes, self.shp_type, self.bbox = shp_reader.read_shp(directory) #read corresponding dbf data dbfFile = dbf.DbfLoader(directory[:-3] + "dbf") t = dbfFile.table2list() varNames = dbfFile.get_field_names() variables = {} for variable in varNames: variables[variable] = [record[varNames.index(variable)] for record in t] if self.dbfdata!=None: self.attibmenu.delete(0, len(self.dbfdata)-1) #add attributes into menu for key in variables.keys(): self.__addAttribute(key) self.dbfdata = variables self.menubar.entryconfig(2, state=Tkconstants.NORMAL) self.menubar.entryconfig(3, state=Tkconstants.NORMAL) def __addAttribute(self,attributeName): """ Add an attribute to the menu """ self.attibmenu.add_command(label=attributeName, command=lambda i=attributeName:self.__updateCanvas(i)) def __updateCanvas(self, attributeName): """ Updates the canvas and showing statistical information """ print "update Canvas "+attributeName self.datalist=self.dbfdata[attributeName] self.root.grid() self.root.rowconfigure(0,weight=1) self.root.columnconfigure(0,weight=1) if self.pop.options: self.canvas=MainCanvas(self.shapes,self.bbox,self.shp_type,self.root,attributeName,self.datalist) else: if (not hasattr(self, 'canvas')) or self.canvas == None: self.canvas=MainCanvas(self.shapes,self.bbox,self.shp_type,self.root,attributeName,self.datalist) else: self.canvas.addLayer(self.shapes, self.shp_type, attributeName,self.datalist) self.canvas = None
class Analysis(Application): def __init__(self,root,first_frame,canvas,text): self.root = root self.fr_first = first_frame self.canvas = canvas self.text = text self.x = 10 self.y = 10 self.radius = 30 self.layers = [] self.fr_Analysis = Frame(self.fr_first,background="green",bd=10) self.fr_Analysis.grid(row=1,column=0,columnspan=2,sticky=(W,N,E),padx=5,pady=20) self.btn_File = Button(self.fr_Analysis,text="File",command = self.__openShpfile) self.btn_File.grid(row=0,column=0,sticky=(W),ipadx=20) lb_Attribute = Label(self.fr_Analysis,text="Attributes",background=BACKGROUND) lb_Attribute.grid(row=1,column = 0,sticky=(W),pady=20) self.var1 = IntVar() self.c = Checkbutton(self.fr_Analysis, text="Add Layer", variable=self.var1,background=BACKGROUND) self.c.grid(row=3,column=0,sticky=(W),pady = 10) self.lb_FileName = Label(self.fr_Analysis,text="No input file!!",anchor=W,background=BACKGROUND) self.lb_FileName.grid(row=0,column = 1,sticky=(E),padx=20,ipadx=40) self.lb_FileName.configure(width=7) self.btn_Draw = Button(self.fr_Analysis,text="Visualize",command = self.__UpdateCanvas) self.btn_Draw.grid(row=3,column=1,sticky=(E,W),pady = 10,padx = 20,ipadx=40) self.btn_Draw.configure(width=7) self.fr_Move = Frame(self.fr_Analysis,background=BACKGROUND) self.fr_Move.grid(row=4,column=0,columnspan=4,sticky=(W),padx=5,pady=20) self.btn_ZoomIn = Button(self.fr_Move,text="Zoom In",command = self.zoomIn) self.btn_ZoomIn.grid(row=4,column=0,columnspan=2,sticky=(W,E),padx=10) self.btn_ZoomOut = Button(self.fr_Move,text="Zoom Out",command = self.zoomOut) self.btn_ZoomOut.grid(row=4,column=2,columnspan=2,sticky=(W,E),padx=10) self.btn_moveRight = Button(self.fr_Move,text="Left",command = self.moveRight) self.btn_moveRight.grid(row=5,column=0,sticky=(W),pady=10,padx=10) self.btn_moveRight.configure(width=5) self.btn_moveLeft = Button(self.fr_Move,text="Right",command = self.moveLeft) self.btn_moveLeft.grid(row=5,column=1,sticky=(W),pady=10,padx=10) self.btn_moveLeft.configure(width=5) self.btn_moveUp = Button(self.fr_Move,text="Up",command = self.moveUp) self.btn_moveUp.grid(row=5,column=2,sticky=(E),pady=10,padx=10) self.btn_moveUp.configure(width=5) self.btn_moveDown = Button(self.fr_Move,text="Down",command = self.moveDown) self.btn_moveDown.grid(row=5,column=3,sticky=(E),pady=10,padx=10) self.btn_moveDown.configure(width=5) self.fr_sub1 = Frame(self.fr_Analysis,background=BACKGROUND) self.fr_sub1.grid(row=5,column=0,columnspan=4,sticky=(W),padx=5,pady=20) self.btn_txtAnalysis = Button(self.fr_sub1,text="Text Analysis",command = self.__createTxtAnalysis) self.btn_txtAnalysis.grid(row=1,column=0,sticky=(E),padx=5,pady=5) self.btn_attention = Button(self.fr_sub1,text="Find Attention",command = self.__readfile) self.btn_attention.grid(row=2,column=0,sticky=(E),padx=5,pady=5) # writeCalculations(self.text,self.__openShpfile.__doc__,True) def moveRight(self): self.canvas.delete(ALL) global margin_x margin_x = margin_x - 100 self.__reDraw() def moveLeft(self): self.canvas.delete(ALL) global margin_x margin_x = margin_x + 100 self.__reDraw() def moveUp(self): self.canvas.delete(ALL) global margin_y margin_y = margin_y - 100 self.__reDraw() def moveDown(self): self.canvas.delete(ALL) global margin_y margin_y = margin_y + 100 self.__reDraw() def zoomOut(self): self.canvas.delete(ALL) global canvasWidth canvasWidth = canvasWidth - 100 self.__reDraw() def zoomIn(self): self.canvas.delete(ALL) global canvasWidth canvasWidth =canvasWidth + 100 self.__reDraw() def __openShpfile(self): """Open a shapefile and read in the contents, pop up the attribute menu with the attributes of the shapefile""" print "open shape file!" directory=tkFileDialog.askopenfilename(filetypes=[("SHAPE_FILE","*.shp")]) self.lb_FileName.config(text= directory.split("/")[-1]) writeCalculations(self.text,"Completed reading file: " + directory.split("/")[-1],False,NB) if directory == "": return self.shapes, self.shp_type, self.bbox = shp_reader.read_shp(directory) #read corresponding dbf data dbfFile = dbf.DbfLoader(directory[:-3] + "dbf") t = dbfFile.table2list() varNames = dbfFile.get_field_names() variables = {} for variable in varNames: #print variable, len(variable) variables[variable] = [record[varNames.index(variable)] for record in t] self.variable = StringVar(self.root) self.variable.set(varNames[0]) self.lst_Attributes = apply(OptionMenu,(self.fr_Analysis,self.variable)+tuple(varNames)) self.lst_Attributes.grid(row=1,column=1,sticky=(E,W),pady = 20,padx = 20,ipadx=40) self.lst_Attributes.configure(width=7) self.dbfdata = variables def __UpdateCanvas(self): '''This function draw the data on the canvas ''' try: minX, minY, maxX, maxY = self.bbox[0],self.bbox[1],self.bbox[2],self.bbox[3] self.canvasConfig = [canvasWidth,canvasHeight,margin_x,margin_y] self.attributeSelected = self.variable.get() self.datalist = self.dbfdata[self.attributeSelected] if self.var1.get(): self.layers.append([self.shapes,self.shp_type,self.attributeSelected,self.datalist]) self.Pre_canvas.addLayer(self.shapes, self.shp_type, self.attributeSelected,self.datalist) else: self.canvas.delete(ALL) self.layers = [] self.layers.append([1,self.shapes,self.bbox,self.shp_type,self.root,self.attributeSelected,self.datalist,self.canvas]) self.Pre_canvas=MainCanvas(self.shapes,self.bbox,self.shp_type,self.root,self.attributeSelected,self.datalist,self.canvas,self.canvasConfig) except Exception as e: writeCalculations(self.text,e ,True,NB) def __reDraw(self): try: self.canvasConfig = [canvasWidth,canvasHeight,margin_x,margin_y] print self.canvasConfig for i in range(len(self.layers)): if self.layers[i][0]==1: temp,self.shapes,self.bbox,self.shp_type,self.root,self.attributeSelected,self.datalist,self.canvas = self.layers[i] self.Pre_canvas=MainCanvas(self.shapes,self.bbox,self.shp_type,self.root,self.attributeSelected,self.datalist,self.canvas,self.canvasConfig) for i in range(len(self.layers)): if self.layers[i][0]<>1: self.shapes,self.shp_type,self.attributeSelected,self.datalist = self.layers[i] self.Pre_canvas.addLayer(self.shapes, self.shp_type, self.attributeSelected,self.datalist) except Exception as e: writeCalculations(self.text,e ,True,NB) def removeFrame(self): for widget in self.fr_Analysis.winfo_children(): widget.destroy() # self.fr_Analysis.destroy() def __createTxtAnalysis(self): try: self.datalist=self.dbfdata["text"] self.data_list = [] temp = [] for i in range(len(self.datalist)): temp.append(self.datalist[i]) self.data_list.append(temp) temp = [] tw=[] itemp = len(self.data_list) for i in range(itemp): temp_list = ",".join(self.data_list[i]) tw.append(temp_list) wlist = [] for item in tw: words = item.split(" ") for word in words: wlist.append(word) text = nltk.Text(wlist) self.obj_txtWidget = analysisWidget(self.root,text,self.text,NB) except Exception as e: writeCalculations(self.text,e,True,NB) def __readfile(self): directory=tkFileDialog.askopenfilename(filetypes=[("CSV","*.csv")]) hr.read_file(self.text,directory)
class Analysis(Application): def __init__(self, root, first_frame, canvas, text): self.root = root self.fr_first = first_frame self.canvas = canvas self.text = text self.x = 10 self.y = 10 self.radius = 30 self.layers = [] self.fr_Analysis = Frame(self.fr_first, background="green", bd=10) self.fr_Analysis.grid(row=1, column=0, columnspan=2, sticky=(W, N, E), padx=5, pady=20) self.btn_File = Button(self.fr_Analysis, text="File", command=self.__openShpfile) self.btn_File.grid(row=0, column=0, sticky=(W), ipadx=20) lb_Attribute = Label(self.fr_Analysis, text="Attributes", background=BACKGROUND) lb_Attribute.grid(row=1, column=0, sticky=(W), pady=20) self.var1 = IntVar() self.c = Checkbutton(self.fr_Analysis, text="Add Layer", variable=self.var1, background=BACKGROUND) self.c.grid(row=3, column=0, sticky=(W), pady=10) self.lb_FileName = Label(self.fr_Analysis, text="No input file!!", anchor=W, background=BACKGROUND) self.lb_FileName.grid(row=0, column=1, sticky=(E), padx=20, ipadx=40) self.lb_FileName.configure(width=7) self.btn_Draw = Button(self.fr_Analysis, text="Visualize", command=self.__UpdateCanvas) self.btn_Draw.grid(row=3, column=1, sticky=(E, W), pady=10, padx=20, ipadx=40) self.btn_Draw.configure(width=7) self.fr_Move = Frame(self.fr_Analysis, background=BACKGROUND) self.fr_Move.grid(row=4, column=0, columnspan=4, sticky=(W), padx=5, pady=20) self.btn_ZoomIn = Button(self.fr_Move, text="Zoom In", command=self.zoomIn) self.btn_ZoomIn.grid(row=4, column=0, columnspan=2, sticky=(W, E), padx=10) self.btn_ZoomOut = Button(self.fr_Move, text="Zoom Out", command=self.zoomOut) self.btn_ZoomOut.grid(row=4, column=2, columnspan=2, sticky=(W, E), padx=10) self.btn_moveRight = Button(self.fr_Move, text="Left", command=self.moveRight) self.btn_moveRight.grid(row=5, column=0, sticky=(W), pady=10, padx=10) self.btn_moveRight.configure(width=5) self.btn_moveLeft = Button(self.fr_Move, text="Right", command=self.moveLeft) self.btn_moveLeft.grid(row=5, column=1, sticky=(W), pady=10, padx=10) self.btn_moveLeft.configure(width=5) self.btn_moveUp = Button(self.fr_Move, text="Up", command=self.moveUp) self.btn_moveUp.grid(row=5, column=2, sticky=(E), pady=10, padx=10) self.btn_moveUp.configure(width=5) self.btn_moveDown = Button(self.fr_Move, text="Down", command=self.moveDown) self.btn_moveDown.grid(row=5, column=3, sticky=(E), pady=10, padx=10) self.btn_moveDown.configure(width=5) self.fr_sub1 = Frame(self.fr_Analysis, background=BACKGROUND) self.fr_sub1.grid(row=5, column=0, columnspan=4, sticky=(W), padx=5, pady=20) self.btn_txtAnalysis = Button(self.fr_sub1, text="Text Analysis", command=self.__createTxtAnalysis) self.btn_txtAnalysis.grid(row=1, column=0, sticky=(E), padx=5, pady=5) self.btn_attention = Button(self.fr_sub1, text="Find Attention", command=self.__readfile) self.btn_attention.grid(row=2, column=0, sticky=(E), padx=5, pady=5) # writeCalculations(self.text,self.__openShpfile.__doc__,True) def moveRight(self): self.canvas.delete(ALL) global margin_x margin_x = margin_x - 100 self.__reDraw() def moveLeft(self): self.canvas.delete(ALL) global margin_x margin_x = margin_x + 100 self.__reDraw() def moveUp(self): self.canvas.delete(ALL) global margin_y margin_y = margin_y - 100 self.__reDraw() def moveDown(self): self.canvas.delete(ALL) global margin_y margin_y = margin_y + 100 self.__reDraw() def zoomOut(self): self.canvas.delete(ALL) global canvasWidth canvasWidth = canvasWidth - 100 self.__reDraw() def zoomIn(self): self.canvas.delete(ALL) global canvasWidth canvasWidth = canvasWidth + 100 self.__reDraw() def __openShpfile(self): """Open a shapefile and read in the contents, pop up the attribute menu with the attributes of the shapefile""" print "open shape file!" directory = tkFileDialog.askopenfilename(filetypes=[("SHAPE_FILE", "*.shp")]) self.lb_FileName.config(text=directory.split("/")[-1]) writeCalculations( self.text, "Completed reading file: " + directory.split("/")[-1], False, NB) if directory == "": return self.shapes, self.shp_type, self.bbox = shp_reader.read_shp(directory) #read corresponding dbf data dbfFile = dbf.DbfLoader(directory[:-3] + "dbf") t = dbfFile.table2list() varNames = dbfFile.get_field_names() variables = {} for variable in varNames: #print variable, len(variable) variables[variable] = [ record[varNames.index(variable)] for record in t ] self.variable = StringVar(self.root) self.variable.set(varNames[0]) self.lst_Attributes = apply( OptionMenu, (self.fr_Analysis, self.variable) + tuple(varNames)) self.lst_Attributes.grid(row=1, column=1, sticky=(E, W), pady=20, padx=20, ipadx=40) self.lst_Attributes.configure(width=7) self.dbfdata = variables def __UpdateCanvas(self): '''This function draw the data on the canvas ''' try: minX, minY, maxX, maxY = self.bbox[0], self.bbox[1], self.bbox[ 2], self.bbox[3] self.canvasConfig = [canvasWidth, canvasHeight, margin_x, margin_y] self.attributeSelected = self.variable.get() self.datalist = self.dbfdata[self.attributeSelected] if self.var1.get(): self.layers.append([ self.shapes, self.shp_type, self.attributeSelected, self.datalist ]) self.Pre_canvas.addLayer(self.shapes, self.shp_type, self.attributeSelected, self.datalist) else: self.canvas.delete(ALL) self.layers = [] self.layers.append([ 1, self.shapes, self.bbox, self.shp_type, self.root, self.attributeSelected, self.datalist, self.canvas ]) self.Pre_canvas = MainCanvas(self.shapes, self.bbox, self.shp_type, self.root, self.attributeSelected, self.datalist, self.canvas, self.canvasConfig) except Exception as e: writeCalculations(self.text, e, True, NB) def __reDraw(self): try: self.canvasConfig = [canvasWidth, canvasHeight, margin_x, margin_y] print self.canvasConfig for i in range(len(self.layers)): if self.layers[i][0] == 1: temp, self.shapes, self.bbox, self.shp_type, self.root, self.attributeSelected, self.datalist, self.canvas = self.layers[ i] self.Pre_canvas = MainCanvas(self.shapes, self.bbox, self.shp_type, self.root, self.attributeSelected, self.datalist, self.canvas, self.canvasConfig) for i in range(len(self.layers)): if self.layers[i][0] <> 1: self.shapes, self.shp_type, self.attributeSelected, self.datalist = self.layers[ i] self.Pre_canvas.addLayer(self.shapes, self.shp_type, self.attributeSelected, self.datalist) except Exception as e: writeCalculations(self.text, e, True, NB) def removeFrame(self): for widget in self.fr_Analysis.winfo_children(): widget.destroy() # self.fr_Analysis.destroy() def __createTxtAnalysis(self): try: self.datalist = self.dbfdata["text"] self.data_list = [] temp = [] for i in range(len(self.datalist)): temp.append(self.datalist[i]) self.data_list.append(temp) temp = [] tw = [] itemp = len(self.data_list) for i in range(itemp): temp_list = ",".join(self.data_list[i]) tw.append(temp_list) wlist = [] for item in tw: words = item.split(" ") for word in words: wlist.append(word) text = nltk.Text(wlist) self.obj_txtWidget = analysisWidget(self.root, text, self.text, NB) except Exception as e: writeCalculations(self.text, e, True, NB) def __readfile(self): directory = tkFileDialog.askopenfilename(filetypes=[("CSV", "*.csv")]) hr.read_file(self.text, directory)
class Simulator(Application): def __init__(self,root,first_frame,canvas,text): self.root = root self.fr_first = first_frame self.canvas = canvas self.text = text self.x = 10 self.y = 10 self.radius = 30 self.layers = [] self.fr_Simulator = Frame(self.fr_first,background=BACKGROUND) self.fr_Simulator.grid(row=1,column=0,columnspan=2,sticky=(W),padx=5,pady=20) self.btn_File = Button(self.fr_Simulator,text="File",command = self.__openShpfile) self.btn_File.grid(row=0,column=0,sticky=(W),ipadx=20) lb_Attribute = Label(self.fr_Simulator,text="Attributes",background=BACKGROUND) lb_Attribute.grid(row=1,column = 0,sticky=(W),pady=20) self.var = IntVar() self.c = Checkbutton(self.fr_Simulator, text="Add Layer", variable=self.var,background=BACKGROUND) self.c.grid(row=3,column=0,sticky=(W),pady = 10) self.lb_FileName = Label(self.fr_Simulator,text="No input file!!",anchor=W,background=BACKGROUND) self.lb_FileName.grid(row=0,column = 1,sticky=(E),padx=20,ipadx=40) self.btn_Draw = Button(self.fr_Simulator,text="Visulize",command = self.__UpdateCanvas) self.btn_Draw.grid(row=3,column=1,sticky=(E,W),pady = 10,padx = 20,ipadx=40) self.btn_Draw.configure(width=7) self.fr_Move = Frame(self.fr_Simulator) self.fr_Move.grid(row=4,column=0,columnspan=4,sticky=(W),padx=5,pady=20) self.btn_ZoomIn = Button(self.fr_Move,text="Zoom In",command = self.zoomIn) self.btn_ZoomIn.grid(row=4,column=0,columnspan=2,sticky=(W,E),padx=10) self.btn_ZoomOut = Button(self.fr_Move,text="Zoom Out",command = self.zoomOut) self.btn_ZoomOut.grid(row=4,column=2,columnspan=2,sticky=(W,E),padx=10) self.btn_moveRight = Button(self.fr_Move,text="Left",command = self.moveRight) self.btn_moveRight.grid(row=5,column=0,sticky=(W),pady=10,padx=10) self.btn_moveRight.configure(width=5) self.btn_moveLeft = Button(self.fr_Move,text="Right",command = self.moveLeft) self.btn_moveLeft.grid(row=5,column=1,sticky=(W),pady=10,padx=10) self.btn_moveLeft.configure(width=5) self.btn_moveUp = Button(self.fr_Move,text="Up",command = self.moveUp) self.btn_moveUp.grid(row=5,column=2,sticky=(E),pady=10,padx=10) self.btn_moveUp.configure(width=5) self.btn_moveDown = Button(self.fr_Move,text="Down",command = self.moveDown) self.btn_moveDown.grid(row=5,column=3,sticky=(E),pady=10,padx=10) self.btn_moveDown.configure(width=5) # writeCalculations(self.text,self.__openShpfile.__doc__,True) def moveRight(self): self.canvas.delete(ALL) global margin_x margin_x = margin_x - 100 self.__reDraw() def moveLeft(self): self.canvas.delete(ALL) global margin_x margin_x = margin_x + 100 self.__reDraw() def moveUp(self): self.canvas.delete(ALL) global margin_y margin_y = margin_y - 100 self.__reDraw() def moveDown(self): self.canvas.delete(ALL) global margin_y margin_y = margin_y + 100 self.__reDraw() def zoomOut(self): self.canvas.delete(ALL) global canvasWidth canvasWidth = canvasWidth - 100 self.__reDraw() def zoomIn(self): self.canvas.delete(ALL) global canvasWidth canvasWidth =canvasWidth + 100 self.__reDraw() def __openShpfile(self): """Open a shapefile and read in the contents, pop up the attribute menu with the attributes of the shapefile""" print "open shape file!" directory=tkFileDialog.askopenfilename(filetypes=[("SHAPE_FILE","*.shp")]) self.lb_FileName.config(text= directory.split("/")[-1]) writeCalculations(self.text,"Completed reading file: " + directory.split("/")[-1],False) if directory == "": return self.shapes, self.shp_type, self.bbox = shp_reader.read_shp(directory) #read corresponding dbf data dbfFile = dbf.DbfLoader(directory[:-3] + "dbf") t = dbfFile.table2list() varNames = dbfFile.get_field_names() variables = {} for variable in varNames: #print variable, len(variable) variables[variable] = [record[varNames.index(variable)] for record in t] self.variable = StringVar(self.root) self.variable.set(varNames[0]) self.lst_Attributes = apply(OptionMenu,(self.fr_Simulator,self.variable)+tuple(varNames)) self.lst_Attributes.grid(row=1,column=1,sticky=(E,W),pady = 20,padx = 20,ipadx=40) self.lst_Attributes.configure(width=7) self.dbfdata = variables def __UpdateCanvas(self): '''This function draw the data on the canvas ''' try: self.canvasConfig = [canvasWidth,canvasHeight,margin_x,margin_y] self.attributeSelected = self.variable.get() self.datalist = self.dbfdata[self.attributeSelected] if self.var.get(): self.layers.append([self.shapes,self.shp_type,self.attributeSelected,self.datalist]) self.Pre_canvas.addLayer(self.shapes, self.shp_type, self.attributeSelected,self.datalist) else: self.canvas.delete(ALL) self.layers = [] self.layers.append([1,self.shapes,self.bbox,self.shp_type,self.root,self.attributeSelected,self.datalist,self.canvas]) self.Pre_canvas=MainCanvas(self.shapes,self.bbox,self.shp_type,self.root,self.attributeSelected,self.datalist,self.canvas,self.canvasConfig) except: writeCalculations(self.text,"Please Select the file and then Visualise" ,True) def __reDraw(self): try: self.canvasConfig = [canvasWidth,canvasHeight,margin_x,margin_y] print self.canvasConfig for i in range(len(self.layers)): if self.layers[i][0]==1: temp,self.shapes,self.bbox,self.shp_type,self.root,self.attributeSelected,self.datalist,self.canvas = self.layers[i] self.Pre_canvas=MainCanvas(self.shapes,self.bbox,self.shp_type,self.root,self.attributeSelected,self.datalist,self.canvas,self.canvasConfig) for i in range(len(self.layers)): if self.layers[i][0]<>1: self.shapes,self.shp_type,self.attributeSelected,self.datalist = self.layers[i] self.Pre_canvas.addLayer(self.shapes, self.shp_type, self.attributeSelected,self.datalist) except: writeCalculations(self.text,"Please Select the file and then Visualise" ,True)