def __init__(self, parent, layers, **kwargs): from stars.visualization.dialogs import choose_field_name ShapeMap.__init__(self, parent, layers) try: layer = layers[0] map_type = kwargs["map_type"] title = kwargs["title"] if "field_name" in kwargs and "data" in kwargs: field_name = kwargs["field_name"] data = np.array(kwargs["data"]) else: field_name = choose_field_name(self, layer) if field_name == None: raise Exception("No field name") data = np.array(layer.dbf.by_col(field_name)) self.k = None self.hinge = None self.bins = None self.parentFrame.SetTitle('%s-%s (%s)' % (title, layer.name, field_name)) self.updateMap(title, map_type, field_name, data, layer) except Exception as err: self.ShowMsgBox( """Map could not be classified. Please choose a valid numeric variable. Details: """ + str(err.message)) self.UnRegister() self.parentFrame.Close(True) return
def __init__(self, parent, layers, **kwargs): from stars.visualization.dialogs import choose_field_name ShapeMap.__init__(self,parent, layers) try: layer = layers[0] map_type = kwargs["map_type"] title = kwargs["title"] if "field_name" in kwargs and "data" in kwargs: field_name = kwargs["field_name"] data = np.array(kwargs["data"]) else: field_name = choose_field_name(self,layer) if field_name == None: raise Exception("No field name") data = np.array(layer.dbf.by_col(field_name)) self.k = None self.hinge = None self.bins = None self.parentFrame.SetTitle('%s-%s (%s)' % (title, layer.name, field_name)) self.updateMap(title,map_type, field_name,data,layer) except Exception as err: self.ShowMsgBox("""Map could not be classified. Please choose a valid numeric variable. Details: """ + str(err.message)) self.UnRegister() self.parentFrame.Close(True) return
def __init__(self, parent, layers, **kwargs): ShapeMap.__init__(self, parent, layers) try: layer = layers[0] dbf = layer.dbf field_name = '' weight_path = '' # let user choose weight_path and field_name var_list = dbf.header var_dlg = wx.SingleChoiceDialog(self, "Select variable for LISA", "LISA Map", var_list, wx.CHOICEDLG_STYLE) var_dlg.CenterOnScreen() if var_dlg.ShowModal() != wx.ID_OK: var_dlg.Destroy() raise Exception( 'LISA maps cannot be created without ID variable.') field_name = var_dlg.GetStringSelection() var_dlg.Destroy() weight_dlg = SelectWeightDlg(self.main, self.main.dialog_res) if weight_dlg.ShowModal() != wx.ID_OK: weight_dlg.Destroy() raise Exception( 'LISA maps cannot be created without spatial weights.') weight_path = weight_dlg.GetWeightPath() weight_dlg.Destroy() if weight_path == None or len(weight_path) <= 0: raise Exception('Please select a valid weights file.') self.siglevel = 0.05 self.parentFrame.SetTitle('LISA - %s(%s)' % (layer.name, field_name)) self.draw_layers[layer].set_edge_color( stars.DEFAULT_MAP_EDGE_COLOR) data = np.array(dbf.by_col(field_name)) id_groups = self.process_LISA(self, data, weight_path) # default color schema color_group = [ stars.LISA_NOT_SIG_COLOR, stars.LISA_HH_COLOR, stars.LISA_LL_COLOR, stars.LISA_LH_COLOR, stars.LISA_HL_COLOR, stars.LISA_OBSOLETE_COLOR ] label_group = [ "Not Significant", "High-High", "Low-Low", "Low-High", "High-Low", "Neighborless" ] self.color_schema_dict[layer.name] = ColorSchema( color_group, label_group) #self.draw_layers[layer].set_edge_color(stars.LISA_MAP_EDGE_COLOR) self.draw_layers[layer].set_data_group(id_groups) self.draw_layers[layer].set_fill_color_group(color_group) except Exception as err: self.ShowMsgBox(str(err.message)) self.UnRegister() self.parentFrame.Close(True) return None
def __init__(self, parent, layers, **kwargs): ShapeMap.__init__(self, parent, layers) try: layer = layers[0] dbf = layer.dbf field_name = '' weight_path = '' # let user choose weight_path and field_name var_list = dbf.header #var_dlg = VariableSelDialog(self,var_list,bDisable2nd=True) var_dlg = wx.SingleChoiceDialog(self, "Select variable for LISA", "LISA Map", var_list, wx.CHOICEDLG_STYLE) var_dlg.CenterOnScreen() if var_dlg.ShowModal() != wx.ID_OK: var_dlg.Destroy() raise Exception( 'Local G maps cannot be created without ID variable.') field_name = var_dlg.GetStringSelection() var_dlg.Destroy() weight_dlg = SelectWeightDlg(self.main, self.main.dialog_res) if weight_dlg.ShowModal() != wx.ID_OK: weight_dlg.Destroy() raise Exception( 'Local G maps cannot be created without spatial weights.') weight_path = weight_dlg.GetWeightPath() weight_dlg.Destroy() if weight_path == None or len(weight_path) <= 0: raise Exception('Please select a valid weights file.') self.weight = pysal.open(weight_path).read() b_gstar, b_binary = choose_local_g_settings(self) map_type = 'Gi*' if b_gstar else 'Gi' add_type = 'binary' if b_binary else 'row-standardized' self.parentFrame.SetTitle('Local G Map (%s,%s)-%s' % (map_type, add_type, layer.name)) y = np.array(dbf.by_col(field_name)) if b_binary == False: lg = pysal.esda.getisord.G_Local(y, self.weight, star=b_gstar) else: lg = pysal.esda.getisord.G_Local(y, self.weight, star=b_gstar, transform='B') self.gstar_p = lg.p_sim self.gstar_z = lg.Zs self.siglevel = 0.05 # 0 not significant, 6 significant change not_sig = list(np.where(self.gstar_p > self.siglevel)[0]) sig = set(np.where(self.gstar_p <= self.siglevel)[0]) hotspots = list( sig.intersection(set(np.where(self.gstar_z >= 0)[0]))) coldspots = list( sig.intersection(set(np.where(self.gstar_z < 0)[0]))) id_groups = [not_sig, hotspots, coldspots] # default color schema for Gi* self.HH_color = stars.LISA_HH_COLOR self.LL_color = stars.LISA_LL_COLOR self.NOT_SIG_color = stars.LISA_NOT_SIG_COLOR #self.OBSOLETE_color = stars.LISA_OBSOLETE_COLOR color_group = [self.NOT_SIG_color, self.HH_color, self.LL_color] label_group = ["Not Significant", "High-High", "Low-Low"] self.color_schema_dict[layer.name] = ColorSchema( color_group, label_group) self.draw_layers[layer].set_edge_color( stars.DEFAULT_MAP_EDGE_COLOR) self.draw_layers[layer].set_data_group(id_groups) self.draw_layers[layer].set_fill_color_group(color_group) except Exception as err: self.ShowMsgBox(str(err.message)) self.UnRegister() self.parentFrame.Close(True) return None
def __init__(self,parent, layers, **kwargs): ShapeMap.__init__(self,parent,layers) try: self.point_layer = self.layers[0] #self.bg_layer = kwargs["background"] self.cell_size = kwargs["cell_size"] self.bandwidth = kwargs["bandwidth"] self.kernel = kwargs["kernel"] self.color_band = kwargs["color_band"] self.opaque = kwargs["opaque"] self.bufferWidth, self.bufferHeight = kwargs["size"] self.points = self.point_layer.shape_objects self.extent = self.point_layer.extent self.view = View2ScreenTransform( self.extent, self.bufferWidth, self.bufferHeight ) if kwargs.has_key("query_points"): self.query_points = kwargs["query_points"] else: self.query_points = range(len(self.points)) """ if self.bg_layer: self.layers.append(self.bg_layer) """ if len(self.query_points) < len(self.points): id_group = [self.query_points] color_group = [self.color_schema_dict[self.point_layer.name].colors[0]] edge_color_group = [self.color_schema_dict[self.point_layer.name].edge_color] """ non_query_points = list(set(range(len(self.points))) - set(self.query_points)) id_group.append(non_query_points) color_group.append(wx.Colour(255,255,255,0)) edge_color_group.append(wx.Colour(255,255,255,0)) """ self.draw_layers[self.point_layer].set_data_group(id_group) self.draw_layers[self.point_layer].set_fill_color_group(color_group) self.draw_layers[self.point_layer].set_edge_color_group(edge_color_group) # setup gradient color self.gradient_color = GradientColor(self.color_band) # for tree node self.color_schema_dict["Density Map"] = GradientColorSchema(self.color_band) self.isHideDensityMap = False # for export gif self.img_array_rgb = None self.isResizing = False self.cells_Updated = False self.bmp = None self.setup_densityMap() self.createDensityMap() # dummy Layer for density map self.layer_seq_list = [] self.layer_seq_list.insert(0,"Density Map") self.layer_name_list.insert(0,"Density Map") except Exception as err: self.ShowMsgBox("""Density map could not be created. Please choose/input valid parameters. Details: """ + str(err.message)) self.UnRegister() self.parentFrame.Close(True) return None
def __init__(self, parent, layers, **kwargs): ShapeMap.__init__(self, parent, layers) try: self.point_layer = self.layers[0] #self.bg_layer = kwargs["background"] self.cell_size = kwargs["cell_size"] self.bandwidth = kwargs["bandwidth"] self.kernel = kwargs["kernel"] self.color_band = kwargs["color_band"] self.opaque = kwargs["opaque"] self.bufferWidth, self.bufferHeight = kwargs["size"] self.points = self.point_layer.shape_objects self.extent = self.point_layer.extent self.view = View2ScreenTransform(self.extent, self.bufferWidth, self.bufferHeight) if kwargs.has_key("query_points"): self.query_points = kwargs["query_points"] else: self.query_points = range(len(self.points)) """ if self.bg_layer: self.layers.append(self.bg_layer) """ if len(self.query_points) < len(self.points): id_group = [self.query_points] color_group = [ self.color_schema_dict[self.point_layer.name].colors[0] ] edge_color_group = [ self.color_schema_dict[self.point_layer.name].edge_color ] """ non_query_points = list(set(range(len(self.points))) - set(self.query_points)) id_group.append(non_query_points) color_group.append(wx.Colour(255,255,255,0)) edge_color_group.append(wx.Colour(255,255,255,0)) """ self.draw_layers[self.point_layer].set_data_group(id_group) self.draw_layers[self.point_layer].set_fill_color_group( color_group) self.draw_layers[self.point_layer].set_edge_color_group( edge_color_group) # setup gradient color self.gradient_color = GradientColor(self.color_band) # for tree node self.color_schema_dict["Density Map"] = GradientColorSchema( self.color_band) self.isHideDensityMap = False # for export gif self.img_array_rgb = None self.isResizing = False self.cells_Updated = False self.bmp = None self.setup_densityMap() self.createDensityMap() # dummy Layer for density map self.layer_seq_list = [] self.layer_seq_list.insert(0, "Density Map") self.layer_name_list.insert(0, "Density Map") except Exception as err: self.ShowMsgBox( """Density map could not be created. Please choose/input valid parameters. Details: """ + str(err.message)) self.UnRegister() self.parentFrame.Close(True) return None
def __init__(self, parent, layers, **kwargs): ShapeMap.__init__(self, parent, layers) try: # setup point layer color to white self.bufferWidth, self.bufferHeight = kwargs["size"] self.date_field = kwargs["date_field"] self.parent = parent layer = layers[0] self.layer = layer self.layers = layers self.extent = self.layer.extent self.view = View2ScreenTransform(self.extent, self.bufferWidth - 500, self.bufferHeight - 150, offset_x=500, offset_y=150) self.isDynamic = False self.all_date = self.layer.dbf.by_col(self.date_field, ctype='datetime') self.start_date = min(self.all_date) self.end_date = max(self.all_date) self.gradient_color = ColorBrewer() #self.gradient_color.set_colorschema(self.gradient_color.RdYlGn6, reverse=True) self.gradient_color.set_colorschema(self.gradient_color.BuGn9, reverse=False) if not isinstance(self.start_date, datetime.date): raise Exception( "Please select a DateTime field to create Calendar Map!") # variables self.weekday_list = [ 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun' ] self.mt_text_list = [ 'Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec' ] self.mt_text_list_full = [ 'January', 'Febuary', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December' ] self.start_year = self.start_date.year self.start_month = self.start_date.month self.end_year = self.end_date.year self.end_month = self.end_date.month self.selected_day = 0 self.selected_year = 0 self.selected_month = self.start_month - 1 self.num_years = self.end_year - self.start_year + 1 self.current_date = self.start_date self.year_histogram = [False for i in range(self.num_years)] self.month_histogram = [False for i in range(12)] self.data_min, self.data_max = self.parseData() self.selected_obj_ids = [] except Exception as err: self.ShowMsgBox( """Calendar map could not be created. Please choose a valid datetime variable. Details: """ + str(err.message)) self.UnRegister() self.parentFrame.Close(True) return None
def __init__(self, parent, layers, **kwargs): ShapeMap.__init__(self,parent, layers) try: layer = layers[0] dbf = layer.dbf field_name = '' weight_path = '' # let user choose weight_path and field_name var_list = dbf.header var_dlg = wx.SingleChoiceDialog(self, "Select variable for LISA","LISA Map", var_list, wx.CHOICEDLG_STYLE) var_dlg.CenterOnScreen() if var_dlg.ShowModal() != wx.ID_OK: var_dlg.Destroy() raise Exception('LISA maps cannot be created without ID variable.') field_name = var_dlg.GetStringSelection() var_dlg.Destroy() weight_dlg = SelectWeightDlg(self.main,self.main.dialog_res) if weight_dlg.ShowModal() != wx.ID_OK: weight_dlg.Destroy() raise Exception('LISA maps cannot be created without spatial weights.') weight_path = weight_dlg.GetWeightPath() weight_dlg.Destroy() if weight_path == None or len(weight_path) <=0: raise Exception('Please select a valid weights file.') self.siglevel = 0.05 self.parentFrame.SetTitle('LISA - %s(%s)'% (layer.name,field_name)) self.draw_layers[layer].set_edge_color(stars.DEFAULT_MAP_EDGE_COLOR) data = np.array(dbf.by_col(field_name)) id_groups = self.process_LISA(self,data, weight_path) # default color schema color_group =[ stars.LISA_NOT_SIG_COLOR, stars.LISA_HH_COLOR, stars.LISA_LL_COLOR, stars.LISA_LH_COLOR, stars.LISA_HL_COLOR, stars.LISA_OBSOLETE_COLOR ] label_group = [ "Not Significant", "High-High", "Low-Low", "Low-High", "High-Low", "Neighborless" ] self.color_schema_dict[layer.name] = ColorSchema(color_group,label_group) #self.draw_layers[layer].set_edge_color(stars.LISA_MAP_EDGE_COLOR) self.draw_layers[layer].set_data_group(id_groups) self.draw_layers[layer].set_fill_color_group(color_group) except Exception as err: self.ShowMsgBox(str(err.message)) self.UnRegister() self.parentFrame.Close(True) return None
def __init__(self, parent, layers, **kwargs): ShapeMap.__init__(self,parent, layers) try: layer = layers[0] dbf = layer.dbf field_name = '' weight_path = '' # let user choose weight_path and field_name var_list = dbf.header #var_dlg = VariableSelDialog(self,var_list,bDisable2nd=True) var_dlg = wx.SingleChoiceDialog(self, "Select variable for LISA","LISA Map", var_list, wx.CHOICEDLG_STYLE) var_dlg.CenterOnScreen() if var_dlg.ShowModal() != wx.ID_OK: var_dlg.Destroy() raise Exception('Local G maps cannot be created without ID variable.') field_name = var_dlg.GetStringSelection() var_dlg.Destroy() weight_dlg = SelectWeightDlg(self.main,self.main.dialog_res) if weight_dlg.ShowModal() != wx.ID_OK: weight_dlg.Destroy() raise Exception('Local G maps cannot be created without spatial weights.') weight_path = weight_dlg.GetWeightPath() weight_dlg.Destroy() if weight_path == None or len(weight_path) <=0: raise Exception('Please select a valid weights file.') self.weight = pysal.open(weight_path).read() b_gstar, b_binary = choose_local_g_settings(self) map_type = 'Gi*' if b_gstar else 'Gi' add_type = 'binary' if b_binary else 'row-standardized' self.parentFrame.SetTitle('Local G Map (%s,%s)-%s' % (map_type,add_type,layer.name)) y = np.array(dbf.by_col(field_name)) if b_binary == False: lg = pysal.esda.getisord.G_Local(y,self.weight,star=b_gstar) else: lg = pysal.esda.getisord.G_Local(y,self.weight,star=b_gstar,transform='B') self.gstar_p = lg.p_sim self.gstar_z = lg.Zs self.siglevel = 0.05 # 0 not significant, 6 significant change not_sig = list(np.where(self.gstar_p>self.siglevel)[0]) sig = set(np.where(self.gstar_p<=self.siglevel)[0]) hotspots = list(sig.intersection(set(np.where(self.gstar_z>=0)[0])) ) coldspots = list(sig.intersection(set(np.where(self.gstar_z<0)[0])) ) id_groups = [not_sig,hotspots,coldspots] # default color schema for Gi* self.HH_color = stars.LISA_HH_COLOR self.LL_color = stars.LISA_LL_COLOR self.NOT_SIG_color = stars.LISA_NOT_SIG_COLOR #self.OBSOLETE_color = stars.LISA_OBSOLETE_COLOR color_group =[self.NOT_SIG_color,self.HH_color,self.LL_color] label_group = ["Not Significant","High-High","Low-Low"] self.color_schema_dict[layer.name] = ColorSchema(color_group,label_group) self.draw_layers[layer].set_edge_color(stars.DEFAULT_MAP_EDGE_COLOR) self.draw_layers[layer].set_data_group(id_groups) self.draw_layers[layer].set_fill_color_group(color_group) except Exception as err: self.ShowMsgBox(str(err.message)) self.UnRegister() self.parentFrame.Close(True) return None
def __init__(self, parent, layers, **kwargs): ShapeMap.__init__(self,parent, layers) try: # setup point layer color to white self.bufferWidth, self.bufferHeight = kwargs["size"] self.date_field = kwargs["date_field"] self.parent = parent layer = layers[0] self.layer = layer self.layers = layers self.extent = self.layer.extent self.view = View2ScreenTransform( self.extent, self.bufferWidth - 500, self.bufferHeight - 150, offset_x = 500, offset_y = 150 ) self.isDynamic = False self.all_date= self.layer.dbf.by_col(self.date_field,ctype='datetime') self.start_date = min(self.all_date) self.end_date = max(self.all_date) self.gradient_color = ColorBrewer() #self.gradient_color.set_colorschema(self.gradient_color.RdYlGn6, reverse=True) self.gradient_color.set_colorschema(self.gradient_color.BuGn9, reverse=False) if not isinstance(self.start_date, datetime.date): raise Exception("Please select a DateTime field to create Calendar Map!") # variables self.weekday_list = ['Mon','Tue','Wed','Thu','Fri','Sat','Sun'] self.mt_text_list = ['Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec'] self.mt_text_list_full = ['January','Febuary','March','April','May','June','July', 'August','September','October','November','December'] self.start_year = self.start_date.year self.start_month = self.start_date.month self.end_year = self.end_date.year self.end_month = self.end_date.month self.selected_day = 0 self.selected_year = 0 self.selected_month = self.start_month - 1 self.num_years = self.end_year - self.start_year + 1 self.current_date = self.start_date self.year_histogram = [False for i in range(self.num_years)] self.month_histogram = [False for i in range(12)] self.data_min,self.data_max = self.parseData() self.selected_obj_ids = [] except Exception as err: self.ShowMsgBox("""Calendar map could not be created. Please choose a valid datetime variable. Details: """ + str(err.message)) self.UnRegister() self.parentFrame.Close(True) return None