def display_geo_algorithm_exception(self, e): """ Display quickosm exceptions """ self.label_progress.setText("") LOGGER.debug(e.msg) display_message_bar(e.msg, level=e.level, duration=e.duration)
def display_exception(e): """ Display others exceptions """ exc_type, _, exc_tb = exc_info() f_name = split(exc_tb.tb_frame.f_code.co_filename)[1] print(exc_type, f_name, exc_tb.tb_lineno) _, _, tb = exc_info() import traceback traceback.print_tb(tb) print e display_message_bar( tr('QuickOSM', 'Error in the python console, please report it'), level=QgsMessageBar.CRITICAL, duration=5)
def display_exception(e): """ Display others exceptions """ exc_type, _, exc_tb = exc_info() f_name = split(exc_tb.tb_frame.f_code.co_filename)[1] print(exc_type, f_name, exc_tb.tb_lineno) _, _, tb = exc_info() import traceback traceback.print_tb(tb) print e display_message_bar(tr( 'QuickOSM', 'Error in the python console, please report it'), level=QgsMessageBar.CRITICAL, duration=5)
def display_exception(e): """ Display others exceptions """ exc_type, _, exc_tb = exc_info() f_name = split(exc_tb.tb_frame.f_code.co_filename)[1] _, _, tb = exc_info() import traceback traceback.print_tb(tb) LOGGER.critical(exc_type) LOGGER.critical(f_name) LOGGER.critical(e) LOGGER.critical('\n'.join(traceback.format_tb(tb))) display_message_bar( tr('Error in the QGIS Logs, QuickOSM panel, please report it to ' '<a href="https://github.com/3liz/QuickOSM/issues/new?' 'template=1_BUG_REPORT.md">GitHub</a>'), level=Qgis.Critical, duration=10)
def display_exception(e): """ Display others exceptions """ exc_type, _, exc_tb = exc_info() f_name = split(exc_tb.tb_frame.f_code.co_filename)[1] _, _, tb = exc_info() import traceback traceback.print_tb(tb) LOGGER.critical(exc_type) LOGGER.critical(f_name) LOGGER.critical(str(e)) LOGGER.critical(traceback.format_tb(tb)) display_message_bar(tr( 'Error in the QGIS Logs, QuickOSM panel, please report it to ' '<a href="https://github.com/3liz/QuickOSM/issues/new?' 'template=1_BUG_REPORT.md">GitHub</a>'), level=Qgis.Critical, duration=10)
def display_exception(e): """ Display others exceptions """ exc_type, _, exc_tb = exc_info() f_name = split(exc_tb.tb_frame.f_code.co_filename)[1] _, _, tb = exc_info() import traceback traceback.print_tb(tb) LOGGER.critical( tr('A critical error occurred, this is the traceback:')) LOGGER.critical(exc_type) LOGGER.critical(f_name) LOGGER.critical(e) LOGGER.critical('\n'.join(traceback.format_tb(tb))) display_message_bar(tr( 'Error in the logs, QuickOSM panel, please report it to GitHub'), level=Qgis.Critical, open_logs=True, duration=10)
def display_exception(e): """ Display others exceptions """ exc_type, _, exc_tb = exc_info() f_name = split(exc_tb.tb_frame.f_code.co_filename)[1] # fix_print_with_import print((exc_type, f_name, exc_tb.tb_lineno)) _, _, tb = exc_info() import traceback traceback.print_tb(tb) # fix_print_with_import print(e) LOGGER.debug(exc_type) LOGGER.debug(f_name) LOGGER.debug(str(e)) LOGGER.debug(traceback.format_tb(tb)) display_message_bar(tr( 'QuickOSM', 'Error in the python console, please report it'), level=Qgis.Critical, duration=5)
def run_query(self): """ Process for running the query """ # Block the button and save the initial text QApplication.setOverrideCursor(Qt.WaitCursor) self.pushButton_browse_output_file.setDisabled(True) self.pushButton_showQuery.setDisabled(True) self.start_process() QApplication.processEvents() # Get all values key = unicode(self.comboBox_key.currentText()) value = unicode(self.comboBox_value.currentText()) nominatim = self.nominatim_value() timeout = self.spinBox_timeout.value() output_directory = self.lineEdit_browseDir.text() prefix_file = self.lineEdit_filePrefix.text() if self.comboBox_in_around.currentIndex() == 1: is_around = True else: is_around = False distance = self.spinBox_distance_point.value() # Which geometry at the end ? output_geometry_types = self.get_output_geometry_types() # Which osm objects ? osm_objects = self._get_osm_objects() try: # Test values if not osm_objects: raise OsmObjectsException if not output_geometry_types: raise OutPutGeomTypesException # If bbox, we must set None to nominatim, we can't have both bbox = None if self.radioButton_extentLayer.isChecked() or \ self.radioButton_extentMapCanvas.isChecked(): nominatim = None bbox = self.get_bounding_box() if nominatim == '': nominatim = None if output_directory and not isdir(output_directory): raise DirectoryOutPutException num_layers = process_quick_query( dialog=self, key=key, value=value, nominatim=nominatim, is_around=is_around, distance=distance, bbox=bbox, osm_objects=osm_objects, timeout=timeout, output_directory=output_directory, prefix_file=prefix_file, output_geometry_types=output_geometry_types) # We can test numLayers to see if there are some results if num_layers: self.label_progress.setText( tr('QuickOSM', u'Successful query !')) display_message_bar( tr('QuickOSM', u'Successful query !'), level=QgsMessageBar.INFO, duration=5) else: self.label_progress.setText(tr("QuickOSM", u'No result')) display_message_bar( tr('QuickOSM', u'Successful query, but no result.'), level=QgsMessageBar.WARNING, duration=7) except QuickOsmException, e: self.display_geo_algorithm_exception(e)
def display_geo_algorithm_exception(self, e): """ Display quickosm exceptions """ self.label_progress.setText("") display_message_bar(e.msg, level=e.level, duration=e.duration)
def run_query(self): """ Process for running the query """ # Block the button and save the initial text self.pushButton_browse_output_file.setDisabled(True) QApplication.setOverrideCursor(Qt.WaitCursor) self.start_process() QApplication.processEvents() # Get all values query = self.current_query output_directory = self.lineEdit_browseDir.text() prefix_file = self.lineEdit_filePrefix.text() nominatim = self.nominatim_value() # Set the bbox bbox = None if self.radioButton_extentLayer.isChecked() or \ self.radioButton_extentMapCanvas.isChecked(): bbox = self.get_bounding_box() # Which geometry at the end ? output_geometry_types = self.get_output_geometry_types() white_list_values = self.get_white_list_values() try: # Test values if not output_geometry_types: raise OutPutGeomTypesException if output_directory and not isdir(output_directory): raise DirectoryOutPutException geocode_area = re.search(r'\{\{nominatim\}\}', query) or \ re.search(r'\{\{nominatimArea:\}\}', query) or \ re.search(r'\{\{geocodeArea:\}\}', query) if not nominatim and geocode_area: raise MissingParameterException(suffix="nominatim field") num_layers = process_query( dialog=self, query=query, output_dir=output_directory, prefix_file=prefix_file, output_geometry_types=output_geometry_types, white_list_values=white_list_values, nominatim=nominatim, bbox=bbox, config_outputs=self.config_layer) if num_layers: display_message_bar(tr('Successful query !'), level=Qgis.Info, duration=5) self.label_progress.setText(tr('Successful query !')) else: display_message_bar(tr('Successful query, but no result.'), level=Qgis.Warning, duration=7) except QuickOsmException as e: self.display_geo_algorithm_exception(e) except Exception as e: # pylint: disable=broad-except self.display_exception(e) finally: # Resetting the button self.pushButton_browse_output_file.setDisabled(False) QApplication.restoreOverrideCursor() self.end_process() QApplication.processEvents()
def run_query(self): """ Process for running the query """ # Block the button and save the initial text self.output_directory.setDisabled(True) self.pushButton_generateQuery.setDisabled(True) QApplication.setOverrideCursor(Qt.WaitCursor) self.start_process() QApplication.processEvents() # Get all values query = self.textEdit_query.toPlainText() output_directory = self.output_directory.filePath() prefix_file = self.lineEdit_filePrefix.text() nominatim = self.nominatim_value() # Set bbox bbox = None if self.cb_query_type.isEnabled(): query_type = self.cb_query_type.currentData() if query_type in ['layer', 'canvas']: nominatim = None bbox = self.get_bounding_box() # Check nominatim if nominatim == '': nominatim = None # Which geometry at the end ? output_geometry_types = self.get_output_geometry_types() white_list_values = self.get_white_list_values() try: # Test values if not output_geometry_types: raise OutPutGeomTypesException if output_directory and not isdir(output_directory): raise DirectoryOutPutException if not nominatim and \ re.search(r'\{\{nominatim\}\}', query) or \ re.search(r'\{\{nominatimArea:\}\}', query) or \ re.search(r'\{\{geocodeArea:\}\}', query): raise MissingParameterException(suffix="nominatim field") num_layers = process_query( dialog=self, query=query, output_dir=output_directory, prefix_file=prefix_file, output_geometry_types=output_geometry_types, white_list_values=white_list_values, nominatim=nominatim, bbox=bbox) if num_layers: display_message_bar( tr('Successful query'), level=Qgis.Success, duration=5) self.label_progress.setText( tr('Successful query')) else: display_message_bar( tr('Successful query, but no result.'), level=Qgis.Warning, duration=7) except QuickOsmException as e: self.display_geo_algorithm_exception(e) pass except Exception as e: # pylint: disable=broad-except self.display_exception(e) pass finally: # Resetting the button self.output_directory.setDisabled(False) self.pushButton_generateQuery.setDisabled(False) QApplication.restoreOverrideCursor() self.end_process() QApplication.processEvents()
def run_query(self): """ Process for running the query """ # Block the button and save the initial text self.pushButton_browse_output_file.setDisabled(True) QApplication.setOverrideCursor(Qt.WaitCursor) self.start_process() QApplication.processEvents() # Get all values query = self.current_query output_directory = self.lineEdit_browseDir.text() prefix_file = self.lineEdit_filePrefix.text() nominatim = self.nominatim_value() # Set the bbox bbox = None if self.radioButton_extentLayer.isChecked() or \ self.radioButton_extentMapCanvas.isChecked(): bbox = self.get_bounding_box() # Which geometry at the end ? output_geometry_types = self.get_output_geometry_types() white_list_values = self.get_white_list_values() try: # Test values if not output_geometry_types: raise OutPutGeomTypesException if output_directory and not isdir(output_directory): raise DirectoryOutPutException geocode_area = re.search(r'\{\{nominatim\}\}', query) or \ re.search(r'\{\{nominatimArea:\}\}', query) or \ re.search(r'\{\{geocodeArea:\}\}', query) if not nominatim and geocode_area: raise MissingParameterException(suffix="nominatim field") num_layers = process_query( dialog=self, query=query, output_dir=output_directory, prefix_file=prefix_file, output_geometry_types=output_geometry_types, white_list_values=white_list_values, nominatim=nominatim, bbox=bbox, config_outputs=self.config_layer) if num_layers: display_message_bar( tr('QuickOSM', u'Successful query !'), level=QgsMessageBar.INFO, duration=5) self.label_progress.setText( tr('QuickOSM', u'Successful query !')) else: display_message_bar( tr('QuickOSM', u'Successful query, but no result.'), level=QgsMessageBar.WARNING, duration=7) except QuickOsmException, e: self.display_geo_algorithm_exception(e)
def open_file(self): """ Open the osm file with the osmconf """ QApplication.setOverrideCursor(Qt.WaitCursor) self.start_process() QApplication.processEvents() # Get fields osm_file = self.osm_file.filePath() osm_conf = self.osm_conf.filePath() output_directory = self.output_directory.filePath() prefix_file = self.lineEdit_filePrefix.text() load_only = self.radioButton_osmConf.isChecked() # Which geometry at the end ? output_geometry_types = self.get_output_geometry_types() try: if not output_geometry_types: raise OutPutGeomTypesException if not isfile(osm_file): raise FileDoesntExistException(suffix="*.osm or *.pbf") if load_only: if not isfile(osm_conf): raise FileDoesntExistException(suffix="*.ini") if output_directory and not isdir(output_directory): raise DirectoryOutPutException if load_only: # Legacy, waiting to remove the OsmParser for QGIS >= 3.6 # Change in osm_file_dialog.py L131 too output_geom_legacy = [ l.value.lower() for l in output_geometry_types] osm_parser = OsmParser( osm_file, load_only=True, osm_conf=osm_conf, layers=output_geom_legacy) layers = osm_parser.parse() for item in list(layers.values()): QgsProject.instance().addMapLayer(item) else: open_file( dialog=self, osm_file=osm_file, output_geom_types=output_geometry_types, output_dir=output_directory, prefix_file=prefix_file) display_message_bar( tr('Successful query'), level=Qgis.Success, duration=5) except QuickOsmException as e: self.display_geo_algorithm_exception(e) except Exception as e: # pylint: disable=broad-except self.display_exception(e) finally: QApplication.restoreOverrideCursor() self.end_process() QApplication.processEvents()
def run_query(self): """ Process for running the query """ # Block the button and save the initial text self.output_directory.setDisabled(True) self.pushButton_generateQuery.setDisabled(True) QApplication.setOverrideCursor(Qt.WaitCursor) self.start_process() QApplication.processEvents() # Get all values query = self.textEdit_query.toPlainText() output_directory = self.output_directory.filePath() prefix_file = self.lineEdit_filePrefix.text() nominatim = self.nominatim_value() # Set bbox bbox = None if self.cb_query_type.isEnabled(): query_type = self.cb_query_type.currentData() if query_type in ['layer', 'canvas']: nominatim = None bbox = self.get_bounding_box() # Check nominatim if nominatim == '': nominatim = None # Which geometry at the end ? output_geometry_types = self.get_output_geometry_types() white_list_values = self.get_white_list_values() try: # Test values if not output_geometry_types: raise OutPutGeomTypesException if output_directory and not isdir(output_directory): raise DirectoryOutPutException if not nominatim and \ re.search(r'\{\{nominatim\}\}', query) or \ re.search(r'\{\{nominatimArea:\}\}', query) or \ re.search(r'\{\{geocodeArea:\}\}', query): raise MissingParameterException(suffix="nominatim field") num_layers = process_query( dialog=self, query=query, output_dir=output_directory, prefix_file=prefix_file, output_geometry_types=output_geometry_types, white_list_values=white_list_values, nominatim=nominatim, bbox=bbox) if num_layers: display_message_bar(tr('Successful query'), level=Qgis.Success, duration=5) self.label_progress.setText(tr('Successful query')) else: display_message_bar(tr('Successful query, but no result.'), level=Qgis.Warning, duration=7) except QuickOsmException as e: self.display_geo_algorithm_exception(e) pass except Exception as e: # pylint: disable=broad-except self.display_exception(e) pass finally: # Resetting the button self.output_directory.setDisabled(False) self.pushButton_generateQuery.setDisabled(False) QApplication.restoreOverrideCursor() self.end_process() QApplication.processEvents()
def run_query(self): """ Process for running the query """ # Block the button and save the initial text QApplication.setOverrideCursor(Qt.WaitCursor) self.pushButton_browse_output_file.setDisabled(True) self.pushButton_showQuery.setDisabled(True) self.start_process() QApplication.processEvents() # Get all values key = unicode(self.comboBox_key.currentText()) value = unicode(self.comboBox_value.currentText()) nominatim = self.nominatim_value() timeout = self.spinBox_timeout.value() output_directory = self.lineEdit_browseDir.text() prefix_file = self.lineEdit_filePrefix.text() if self.comboBox_in_around.currentIndex() == 1: is_around = True else: is_around = False distance = self.spinBox_distance_point.value() # Which geometry at the end ? output_geometry_types = self.get_output_geometry_types() # Which osm objects ? osm_objects = self._get_osm_objects() try: # Test values if not osm_objects: raise OsmObjectsException if not output_geometry_types: raise OutPutGeomTypesException # If bbox, we must set None to nominatim, we can't have both bbox = None if self.radioButton_extentLayer.isChecked() or \ self.radioButton_extentMapCanvas.isChecked(): nominatim = None bbox = self.get_bounding_box() if nominatim == '': nominatim = None if output_directory and not isdir(output_directory): raise DirectoryOutPutException num_layers = process_quick_query( dialog=self, key=key, value=value, nominatim=nominatim, is_around=is_around, distance=distance, bbox=bbox, osm_objects=osm_objects, timeout=timeout, output_directory=output_directory, prefix_file=prefix_file, output_geometry_types=output_geometry_types) # We can test numLayers to see if there are some results if num_layers: self.label_progress.setText( tr('QuickOSM', u'Successful query !')) display_message_bar(tr('QuickOSM', u'Successful query !'), level=QgsMessageBar.INFO, duration=5) else: self.label_progress.setText(tr("QuickOSM", u'No result')) display_message_bar(tr('QuickOSM', u'Successful query, but no result.'), level=QgsMessageBar.WARNING, duration=7) except QuickOsmException, e: self.display_geo_algorithm_exception(e)
def run_query(self): """ Process for running the query """ # Block the button and save the initial text QApplication.setOverrideCursor(Qt.WaitCursor) self.output_directory.setDisabled(True) self.pushButton_showQuery.setDisabled(True) self.start_process() QApplication.processEvents() # Get all values key = self.comboBox_key.currentText() value = self.comboBox_value.currentText() nominatim = self.nominatim_value() timeout = self.spinBox_timeout.value() output_directory = self.output_directory.filePath() prefix_file = self.lineEdit_filePrefix.text() query_type = self.cb_query_type.currentData() is_around = query_type == 'around' distance = self.spinBox_distance_point.value() # Which geometry at the end ? output_geometry_types = self.get_output_geometry_types() # Which osm objects ? osm_objects = self._get_osm_objects() try: # Test values if not osm_objects: raise OsmObjectsException if not output_geometry_types: raise OutPutGeomTypesException # If bbox, we must set None to nominatim, we can't have both bbox = None if query_type in ['layer', 'canvas']: nominatim = None bbox = self.get_bounding_box() if nominatim == '': nominatim = None if output_directory and not isdir(output_directory): raise DirectoryOutPutException num_layers = process_quick_query( dialog=self, key=key, value=value, nominatim=nominatim, is_around=is_around, distance=distance, bbox=bbox, osm_objects=osm_objects, timeout=timeout, output_directory=output_directory, prefix_file=prefix_file, output_geometry_types=output_geometry_types) # We can test numLayers to see if there are some results if num_layers: self.label_progress.setText(tr('Successful query')) display_message_bar(tr('Successful query'), level=Qgis.Success, duration=5) else: self.label_progress.setText(tr('No result')) display_message_bar(tr('Successful query, but no result.'), level=Qgis.Warning, duration=7) except QuickOsmException as e: self.display_geo_algorithm_exception(e) except Exception as e: # pylint: disable=broad-except self.display_exception(e) finally: # Resetting the button self.output_directory.setDisabled(False) self.pushButton_showQuery.setDisabled(False) QApplication.restoreOverrideCursor() self.end_process() QApplication.processEvents()
def open_file(self): """ Open the osm file with the osmconf """ QApplication.setOverrideCursor(Qt.WaitCursor) self.start_process() QApplication.processEvents() # Get fields osm_file = self.osm_file.filePath() osm_conf = self.osm_conf.filePath() output_directory = self.output_directory.filePath() prefix_file = self.lineEdit_filePrefix.text() load_only = self.radioButton_osmConf.isChecked() # Which geometry at the end ? output_geometry_types = self.get_output_geometry_types() try: if not output_geometry_types: raise OutPutGeomTypesException if not isfile(osm_file): raise FileDoesntExistException(suffix="*.osm or *.pbf") if load_only: if not isfile(osm_conf): raise FileDoesntExistException(suffix="*.ini") if output_directory and not isdir(output_directory): raise DirectoryOutPutException if load_only: osm_parser = OsmParser(osm_file, load_only=True, osm_conf=osm_conf, layers=output_geometry_types) layers = osm_parser.parse() for item in list(layers.values()): QgsProject.instance().addMapLayer(item) else: open_file(dialog=self, osm_file=osm_file, output_geom_types=output_geometry_types, output_dir=output_directory, prefix_file=prefix_file) display_message_bar(tr('QuickOSM', u'Successful query !'), level=Qgis.Success, duration=5) except QuickOsmException as e: self.display_geo_algorithm_exception(e) except Exception as e: # pylint: disable=broad-except self.display_exception(e) finally: QApplication.restoreOverrideCursor() self.end_process() QApplication.processEvents()
def run_query(self): """ Process for running the query """ # Block the button and save the initial text self.pushButton_browse_output_file.setDisabled(True) self.pushButton_generateQuery.setDisabled(True) QApplication.setOverrideCursor(Qt.WaitCursor) self.start_process() QApplication.processEvents() # Get all values query = unicode(self.textEdit_query.toPlainText()) output_directory = self.lineEdit_browseDir.text() prefix_file = self.lineEdit_filePrefix.text() nominatim = self.nominatim_value() # Set bbox bbox = None if self.radioButton_extentLayer.isChecked() or \ self.radioButton_extentMapCanvas.isChecked(): bbox = self.get_bounding_box() # Check nominatim if nominatim == '': nominatim = None # Which geometry at the end ? output_geometry_types = self.get_output_geometry_types() white_list_values = self.get_white_list_values() try: # Test values if not output_geometry_types: raise OutPutGeomTypesException if output_directory and not isdir(output_directory): raise DirectoryOutPutException if not nominatim and \ re.search(r'\{\{nominatim\}\}', query) or \ re.search(r'\{\{nominatimArea:\}\}', query) or \ re.search(r'\{\{geocodeArea:\}\}', query): raise MissingParameterException(suffix="nominatim field") num_layers = process_query( dialog=self, query=query, output_dir=output_directory, prefix_file=prefix_file, output_geometry_types=output_geometry_types, white_list_values=white_list_values, nominatim=nominatim, bbox=bbox) if num_layers: display_message_bar(tr('QuickOSM', u'Successful query !'), level=QgsMessageBar.INFO, duration=5) self.label_progress.setText( tr('QuickOSM', u'Successful query !')) else: display_message_bar(tr('QuickOSM', u'Successful query, but no result.'), level=QgsMessageBar.WARNING, duration=7) except QuickOsmException, e: self.display_geo_algorithm_exception(e)
def run_query(self): """ Process for running the query """ # Block the button and save the initial text QApplication.setOverrideCursor(Qt.WaitCursor) self.output_directory.setDisabled(True) self.pushButton_showQuery.setDisabled(True) self.start_process() QApplication.processEvents() # Get all values key = self.comboBox_key.currentText() value = self.comboBox_value.currentText() nominatim = self.nominatim_value() timeout = self.spinBox_timeout.value() output_directory = self.output_directory.filePath() prefix_file = self.lineEdit_filePrefix.text() query_type = self.cb_query_type.currentData() is_around = query_type == 'around' distance = self.spinBox_distance_point.value() # Which geometry at the end ? output_geometry_types = self.get_output_geometry_types() # Which osm objects ? osm_objects = self._get_osm_objects() try: # Test values if not osm_objects: raise OsmObjectsException if not output_geometry_types: raise OutPutGeomTypesException # If bbox, we must set None to nominatim, we can't have both bbox = None if query_type in ['layer', 'canvas']: nominatim = None bbox = self.get_bounding_box() if nominatim == '': nominatim = None if output_directory and not isdir(output_directory): raise DirectoryOutPutException num_layers = process_quick_query( dialog=self, key=key, value=value, nominatim=nominatim, is_around=is_around, distance=distance, bbox=bbox, osm_objects=osm_objects, timeout=timeout, output_directory=output_directory, prefix_file=prefix_file, output_geometry_types=output_geometry_types) # We can test numLayers to see if there are some results if num_layers: self.label_progress.setText( tr('Successful query')) display_message_bar( tr('Successful query'), level=Qgis.Success, duration=5) else: self.label_progress.setText(tr('No result')) display_message_bar( tr('Successful query, but no result.'), level=Qgis.Warning, duration=7) except QuickOsmException as e: self.display_geo_algorithm_exception(e) except Exception as e: # pylint: disable=broad-except self.display_exception(e) finally: # Resetting the button self.output_directory.setDisabled(False) self.pushButton_showQuery.setDisabled(False) QApplication.restoreOverrideCursor() self.end_process() QApplication.processEvents()