def render_on_demand(self, tile_uri, zoom, zentral_tile): start_time = time.time() #result, scale = new_object.render_on_demand_as_multiprocessing(tile_uri, zoom, zentral_tile) result, scale = new_object.render_on_demand_as_loop(tile_uri, zoom, zentral_tile) self.ui.label_scale.set_text("1 : " + str(int(round(scale,0)))) #set log-output func.writeToLog('Render on demand was used - it took:'+str(round(time.time()-start_time, 3)) + ' seconds!',logs) func.writeToLog(' --> zentral tile:%s & zoomfactor: %s' %(str(zentral_tile), str(zoom)),logs) return result
def on_btn_ok_clicked(self, widget, data=None): """The user has elected to save the changes. Called before the dialog returns Gtk.ResponseType.OK from run(). """ logs = os.getenv("HOME") + '/TileGen/log-files/' wobj = open(logs+'TileGen-last-mapfile.xml', 'w') wobj.write(mapnik.save_map_to_string(self.mapnik_map)) wobj.close func.writeToLog('Deleted tile_dir! %s' %os.system(' rm -rf '+ tile_dir),logs) pass
def finish_initializing(self, builder): """Called when we're finished initializing. finish_initalizing should be called after parsing the ui definition and creating a TilesDialog object with it in order to finish initializing the start of the new TilesDialog instance. """ # Get a reference to the builder and set up the signals. self.builder = builder self.ui = builder.get_ui(self) func.writeToLog('TilesDialog was opened and initialized', logs, True) #initialize the wps-server adress self.ui.entry_server.set_text( 'http://kartographie.geo.tu-dresden.de/webgen_wps/wps') #set a mapnik.map to get all styleinformations self.mapnik_map = mapnik_qmap self.mapnik_map.buffer_size = buffer_size #initial information request of the used style-file to be able to choose a geometry for generalization #loop through all layers for layer in self.mapnik_map.layers.__iter__(): self.ui.comboboxtext_layer.append_text(layer.name) #render the first displayed tiles rendered_tiles = new_object.render_on_demand(first_zentral_uri, start_zoom, zentral_tile) #show the initially rendered tiles new_object.show_tiles(rendered_tiles) #show the initially setted size of the tile buffer self.ui.entry_buffer.set_text(str(buffer_size)) #show the initially zoomfactor self.ui.label_zoom.set_text(str(start_zoom)) #show the initially setted color for the preview self.ui.entry_color.set_text('rgb(100%,0%,100%)') self.buttonLabels = []
def finish_initializing(self, builder): """Called when we're finished initializing. finish_initalizing should be called after parsing the ui definition and creating a TilesDialog object with it in order to finish initializing the start of the new TilesDialog instance. """ # Get a reference to the builder and set up the signals. self.builder = builder self.ui = builder.get_ui(self) func.writeToLog('TilesDialog was opened and initialized',logs,True) #initialize the wps-server adress self.ui.entry_server.set_text('http://kartographie.geo.tu-dresden.de/webgen_wps/wps') #set a mapnik.map to get all styleinformations self.mapnik_map = mapnik_qmap self.mapnik_map.buffer_size = buffer_size #initial information request of the used style-file to be able to choose a geometry for generalization #loop through all layers for layer in self.mapnik_map.layers.__iter__(): self.ui.comboboxtext_layer.append_text(layer.name) #render the first displayed tiles rendered_tiles = new_object.render_on_demand(first_zentral_uri, start_zoom, zentral_tile) #show the initially rendered tiles new_object.show_tiles(rendered_tiles) #show the initially setted size of the tile buffer self.ui.entry_buffer.set_text(str(buffer_size)) #show the initially zoomfactor self.ui.label_zoom.set_text(str(start_zoom)) #show the initially setted color for the preview self.ui.entry_color.set_text('rgb(100%,0%,100%)') self.buttonLabels = []
def on_button_generalize_clicked(self, widget, data=None): if self.ui.comboboxtext_rules.get_active() != -1: start = time.time() #new_object.setButtonLabel(False) tileBunch = new_object.getTileBunch(zentral_tile) self.tileproj = rendering.GoogleProjection(maxZoom+1) extentBunch = [] text = self.ui.label_params.get_text() lines = text.split('\n') params = [] for i in range(2,len(lines)): text = lines[i].split(' - ') #print text text2 = text[1].split(':') #print text2 params.append((text[0].replace('- ',''),text2[0].replace('(','').replace(')',''),text2[1])) #print params for tile in tileBunch: infos = [] #infos of the tile that should be processed extent, z = new_object.getExtents(tile) infos.append(extent) #infos for the creation of the valid xml-wps file source = self.datasource[2]['file']#"/home/klammer/Software/Quickly/tilegen/data/media/testdaten/mercator_polygon/linesvgtl270112.shp" func_ident = self.chosen_identifier#'ch.unizh.geo.webgen.service.LineSmoothing' infos.append(source) infos.append(func_ident) #informations for sending the valid xml-wps file to the server server = self.ui.entry_server.get_text() dest_file = "WebGen_WPS_"+str(tile[0])+"_"+str(tile[1])+"_"+str(z)+".xml" xml_files_folder = generalHome + 'xmlfiles/' if not os.path.isdir(xml_files_folder): os.mkdir(xml_files_folder) #folder = "/home/klammer/Software/Quickly/tilegen/data/media/cache/xmlfiles/" infos.append(server) infos.append(dest_file) infos.append(xml_files_folder) chosen_filter = str(self.filter) infos.append(chosen_filter) infos.append(params) infos.append(tile) infos.append(logs) #store all infos in an array, so it is possible to give that array to the multiprocessing-pool (that just takes one variable) extentBunch.append(infos) func.writeToLog('Initiated WPS-Execute-Filecreation with...\n\t...server: %s \n\t...filter: %s \n\t...function: %s \n\t...parameters: %s' %(server, str(chosen_filter), str(func_ident), str(params)),logs) pool = Pool(processes = 9) results = pool.map(rendering.doWPSProcess, extentBunch) #print results #new_object.setButtonLabel(True) print 'Done!' postgre.makePostgresTable() real_results = [] for result in results: if result != '': #real_results.append(result) postgre.writeToPostgres(result) print 'Writing' print 'Done writing' #pool = Pool(processes = 9) #pool.map(postgre.writeToPostgres, real_results) self.ui.button_showGen.set_label('Use generalized\ngeometries') else: self.ui.label_status.set_text('Please choose a geometry that should be generalized!')