def process_query( dialog=None, query=None, nominatim=None, bbox=None, output_dir=None, prefix_file=None, output_geometry_types=None, layer_name="OsmQuery", white_list_values=None, config_outputs=None): """execute a query and send the result file to open_file.""" # Check OGR if not is_ogr_version_ok(): raise GDALVersion if not is_osm_driver_enabled(): raise OsmDriverNotFound # Get output's format output_format = get_setting('outputFormat') # Prepare outputs dialog.set_progress_text(tr("QuickOSM", u"Prepare outputs")) # Replace Nominatim or BBOX query = prepare_query(query=query, nominatim_name=nominatim, extent=bbox) # Getting the default overpass api and running the query server = get_setting('defaultOAPI') dialog.set_progress_text(tr("QuickOSM", u"Downloading data from Overpass")) QApplication.processEvents() connexion_overpass_api = ConnexionOAPI(url=server, output="xml") osm_file = connexion_overpass_api.get_file_from_query(query) return open_file( dialog=dialog, osm_file=osm_file, output_geom_types=output_geometry_types, white_list_column=white_list_values, layer_name=layer_name, output_format=output_format, output_dir=output_dir, prefix_file=prefix_file, config_outputs=config_outputs)
def processAlgorithm(self, progress): progress.setInfo("Preparing the Overpass query") progress.setPercentage(0) server = self.getParameterValue(self.SERVER) query = self.getParameterValue(self.QUERY_STRING) nominatim = self.getParameterValue(self.NOMINATIM) # Extent of the layer extent = self.getParameterValue(self.EXTENT) if extent != "0,0,0,0": # x_min, x_max, y_min, y_max extent = [float(i) for i in extent.split(',')] # noinspection PyCallByClass geometry_extent = QgsGeometry.fromRect( QgsRectangle(extent[0], extent[2], extent[1], extent[3])) source_crs = iface.mapCanvas().mapRenderer().destinationCrs() crs_transform = QgsCoordinateTransform( source_crs, QgsCoordinateReferenceSystem("EPSG:4326")) geometry_extent.transform(crs_transform) extent = geometry_extent.boundingBox() else: extent = None if nominatim == "": nominatim = None # Make some transformation on the query ({{box}}, Nominatim, ... query = QueryPreparation(query, extent, nominatim) overpass_api = ConnexionOAPI(url=server, output="xml") progress.setInfo("Downloading data from Overpass") progress.setPercentage(5) osm_file = overpass_api.get_file_from_query(query.prepare_query()) # Set the output file for Processing progress.setPercentage(100) self.setOutputValue(self.OUTPUT_FILE, osm_file)
def processAlgorithm(self, progress): progress.setInfo("Preparing the Overpass query") progress.setPercentage(0) server = self.getParameterValue(self.SERVER) query = self.getParameterValue(self.QUERY_STRING) nominatim = self.getParameterValue(self.NOMINATIM) # Extent of the layer extent = self.getParameterValue(self.EXTENT) if extent != "0,0,0,0": # x_min, x_max, y_min, y_max extent = [float(i) for i in extent.split(',')] # noinspection PyCallByClass geometry_extent = QgsGeometry.fromRect( QgsRectangle(extent[0], extent[2], extent[1], extent[3])) source_crs = iface.mapCanvas().mapRenderer().destinationCrs() crs_transform = QgsCoordinateTransform( source_crs, QgsCoordinateReferenceSystem("EPSG:4326")) geometry_extent.transform(crs_transform) extent = geometry_extent.boundingBox() else: extent = None if nominatim == "": nominatim = None # Make some transformation on the query ({{box}}, Nominatim, ... query = prepare_query(query, extent, nominatim) overpass_api = ConnexionOAPI(url=server, output="xml") progress.setInfo("Downloading data from Overpass") progress.setPercentage(5) osm_file = overpass_api.get_file_from_query(query) # Set the output file for Processing progress.setPercentage(100) self.setOutputValue(self.OUTPUT_FILE, osm_file)