示例#1
0
 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
示例#2
0
    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
示例#3
0
    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 = []
示例#4
0
    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 = []
示例#5
0
 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!')