def download_exposure(command_line_arguments): """Download OSM resources. Download layers from OSM within the download extent. This function might generate a popup. .. versionadded:: 3.2 :param command_line_arguments: User inputs. :type command_line_arguments: CommandLineArguments """ extent = [ float(command_line_arguments.extent[0]), float(command_line_arguments.extent[1]), float(command_line_arguments.extent[2]), float(command_line_arguments.extent[3]), ] # make a temporary directory for exposure download command_line_arguments.exposure = tempfile.mkdtemp() + "/exposure" print "temp directory: " + command_line_arguments.exposure if validate_geo_array(extent): print "Exposure download extent is valid" else: print "Exposure is invalid" print str(extent) download(command_line_arguments.exposure_layers, command_line_arguments.exposure, extent) if os.path.exists(command_line_arguments.exposure + ".shp"): print "download successful" command_line_arguments.exposure += ".shp"
def download_exposure(command_line_arguments): """Download OSM resources. Download layers from OSM within the download extent. This function might generate a popup. .. versionadded:: 3.2 :param command_line_arguments: User inputs. :type command_line_arguments: CommandLineArguments """ extent = [ float(command_line_arguments.extent[0]), float(command_line_arguments.extent[1]), float(command_line_arguments.extent[2]), float(command_line_arguments.extent[3]) ] # make a temporary directory for exposure download command_line_arguments.exposure = tempfile.mkdtemp() + '/exposure' print 'temp directory: ' + command_line_arguments.exposure if validate_geo_array(extent): print "Exposure download extent is valid" else: print "Exposure is invalid" print str(extent) download(command_line_arguments.exposure_layers, command_line_arguments.exposure, extent) if os.path.exists(command_line_arguments.exposure + '.shp'): print "download successful" command_line_arguments.exposure += '.shp'
def test_validate_geo_array(self): """Test validate geographic extent method. .. versionadded:: 3.2 """ # Normal case min_longitude = 20.389938354492188 min_latitude = -34.10782492987083 max_longitude = 20.712661743164062 max_latitude = -34.008273470938335 extent = [min_longitude, min_latitude, max_longitude, max_latitude] self.assertTrue(validate_geo_array(extent)) # min_latitude >= max_latitude min_latitude = 34.10782492987083 max_latitude = -34.008273470938335 min_longitude = 20.389938354492188 max_longitude = 20.712661743164062 extent = [min_longitude, min_latitude, max_longitude, max_latitude] self.assertFalse(validate_geo_array(extent)) # min_longitude >= max_longitude min_latitude = -34.10782492987083 max_latitude = -34.008273470938335 min_longitude = 34.10782492987083 max_longitude = -34.008273470938335 extent = [min_longitude, min_latitude, max_longitude, max_latitude] self.assertFalse(validate_geo_array(extent)) # min_latitude < -90 or > 90 min_latitude = -134.10782492987083 max_latitude = -34.008273470938335 min_longitude = 20.389938354492188 max_longitude = 20.712661743164062 extent = [min_longitude, min_latitude, max_longitude, max_latitude] self.assertFalse(validate_geo_array(extent)) # max_latitude < -90 or > 90 min_latitude = -9.10782492987083 max_latitude = 91.10782492987083 min_longitude = 20.389938354492188 max_longitude = 20.712661743164062 extent = [min_longitude, min_latitude, max_longitude, max_latitude] self.assertFalse(validate_geo_array(extent)) # min_longitude < -180 or > 180 min_latitude = -34.10782492987083 max_latitude = -34.008273470938335 min_longitude = -184.10782492987083 max_longitude = 20.712661743164062 extent = [min_longitude, min_latitude, max_longitude, max_latitude] self.assertFalse(validate_geo_array(extent)) # max_longitude < -180 or > 180 min_latitude = -34.10782492987083 max_latitude = -34.008273470938335 min_longitude = 20.389938354492188 max_longitude = 180.712661743164062 extent = [min_longitude, min_latitude, max_longitude, max_latitude] self.assertFalse(validate_geo_array(extent))
def download_exposure(cli_arguments): """Download OSM resources. Download layers from OSM within the download extent. This function might generate a popup. .. versionadded:: 3.2 :param cli_arguments: User inputs. :type cli_arguments: CommandLineArguments """ extent = [ float(cli_arguments.extent[0]), float(cli_arguments.extent[1]), float(cli_arguments.extent[2]), float(cli_arguments.extent[3]) ] if not os.path.exists(cli_arguments.output_dir): os.makedirs(cli_arguments.output_dir) download_path = os.path.join( cli_arguments.output_dir, cli_arguments.exposure_type) if validate_geo_array(extent): download( cli_arguments.exposure_type, download_path, extent) if os.path.exists(download_path + '.shp'): download_path += '.shp' cli_arguments.exposure_path = download_path print 'Download successful' print 'Output: ' + cli_arguments.exposure_path else: print 'Exposure download extent is invalid' print str(extent)
def accept(self): """Do osm download and display it in QGIS.""" error_dialog_title = self.tr('InaSAFE OpenStreetMap Downloader Error') # Lock the bounding_box_group self.bounding_box_group.setDisabled(True) # Get the extent y_minimum = self.y_minimum.value() y_maximum = self.y_maximum.value() x_minimum = self.x_minimum.value() x_maximum = self.x_maximum.value() extent = [x_minimum, y_minimum, x_maximum, y_maximum] # Validate extent valid_flag = validate_geo_array(extent) if not valid_flag: message = self.tr( 'The bounding box is not valid. Please make sure it is ' 'valid or check your projection!') # noinspection PyCallByClass,PyTypeChecker,PyArgumentList display_warning_message_box(self, error_dialog_title, message) # Unlock the bounding_box_group self.bounding_box_group.setEnabled(True) return # Validate features feature_types = self.get_checked_features() if len(feature_types) < 1: message = self.tr( 'No feature selected. ' 'Please make sure you have checked one feature.') # noinspection PyCallByClass,PyTypeChecker,PyArgumentList display_warning_message_box(self, error_dialog_title, message) # Unlock the bounding_box_group self.bounding_box_group.setEnabled(True) return try: self.save_state() self.require_directory() for feature_type in feature_types: output_directory = self.output_directory.text() output_prefix = self.filename_prefix.text() overwrite = self.overwrite_flag.isChecked() output_base_file_path = self.get_output_base_path( output_directory, output_prefix, feature_type, overwrite) download( feature_type, output_base_file_path, extent, self.progress_dialog) try: self.load_shapefile(feature_type, output_base_file_path) except FileMissingError as exception: display_warning_message_box( self, error_dialog_title, exception.message) self.done(QDialog.Accepted) self.rectangle_map_tool.reset() except CanceledImportDialogError: # don't show anything because this exception raised # when user canceling the import process directly pass except Exception as exception: # pylint: disable=broad-except # noinspection PyCallByClass,PyTypeChecker,PyArgumentList display_warning_message_box( self, error_dialog_title, exception.message) self.progress_dialog.cancel() finally: # Unlock the bounding_box_group self.bounding_box_group.setEnabled(True)
def accept(self): """Do osm download and display it in QGIS.""" error_dialog_title = self.tr('InaSAFE OpenStreetMap Downloader Error') # Lock the bounding_box_group self.bounding_box_group.setDisabled(True) # Get the extent y_minimum = self.y_minimum.value() y_maximum = self.y_maximum.value() x_minimum = self.x_minimum.value() x_maximum = self.x_maximum.value() extent = [x_minimum, y_minimum, x_maximum, y_maximum] # Validate extent valid_flag = validate_geo_array(extent) if not valid_flag: message = self.tr( 'The bounding box is not valid. Please make sure it is ' 'valid or check your projection!') # noinspection PyCallByClass,PyTypeChecker,PyArgumentList display_warning_message_box(self, error_dialog_title, message) # Unlock the bounding_box_group self.bounding_box_group.setEnabled(True) return # Validate features feature_types = self.get_checked_features() if len(feature_types) < 1: message = self.tr('No feature selected. ' 'Please make sure you have checked one feature.') # noinspection PyCallByClass,PyTypeChecker,PyArgumentList display_warning_message_box(self, error_dialog_title, message) # Unlock the bounding_box_group self.bounding_box_group.setEnabled(True) return if self.radio_custom.isChecked(): server_url = self.line_edit_custom.text() if not server_url: # It's the place holder. server_url = STAGING_SERVER else: server_url = PRODUCTION_SERVER try: self.save_state() self.require_directory() # creating progress dialog for download self.progress_dialog = QProgressDialog(self) self.progress_dialog.setAutoClose(False) self.progress_dialog.setWindowTitle(self.windowTitle()) for feature_type in feature_types: output_directory = self.output_directory.text() if output_directory == '': output_directory = temp_dir(sub_dir='work') output_prefix = self.filename_prefix.text() overwrite = self.overwrite_flag.isChecked() output_base_file_path = self.get_output_base_path( output_directory, output_prefix, feature_type, overwrite) # noinspection PyTypeChecker download(feature_type, output_base_file_path, extent, self.progress_dialog, server_url) try: self.load_shapefile(feature_type, output_base_file_path) except FileMissingError as exception: display_warning_message_box(self, error_dialog_title, str(exception)) self.done(QDialog.Accepted) self.rectangle_map_tool.reset() except CanceledImportDialogError: # don't show anything because this exception raised # when user canceling the import process directly pass except Exception as exception: # pylint: disable=broad-except # noinspection PyCallByClass,PyTypeChecker,PyArgumentList display_warning_message_box(self, error_dialog_title, str(exception)) self.progress_dialog.cancel() self.progress_dialog.deleteLater() finally: # Unlock the bounding_box_group self.bounding_box_group.setEnabled(True)
def accept(self): """Do osm download and display it in QGIS.""" error_dialog_title = self.tr('InaSAFE OpenStreetMap Downloader Error') # Lock the bounding_box_group self.bounding_box_group.setDisabled(True) # Get the extent y_minimum = self.y_minimum.value() y_maximum = self.y_maximum.value() x_minimum = self.x_minimum.value() x_maximum = self.x_maximum.value() extent = [x_minimum, y_minimum, x_maximum, y_maximum] # Validate extent valid_flag = validate_geo_array(extent) if not valid_flag: message = self.tr( 'The bounding box is not valid. Please make sure it is ' 'valid or check your projection!') # noinspection PyCallByClass,PyTypeChecker,PyArgumentList display_warning_message_box(self, error_dialog_title, message) # Unlock the bounding_box_group self.bounding_box_group.setEnabled(True) return # Validate features feature_types = self.get_checked_features() if len(feature_types) < 1: message = self.tr('No feature selected. ' 'Please make sure you have checked one feature.') # noinspection PyCallByClass,PyTypeChecker,PyArgumentList display_warning_message_box(self, error_dialog_title, message) # Unlock the bounding_box_group self.bounding_box_group.setEnabled(True) return try: self.save_state() self.require_directory() for feature_type in feature_types: output_directory = self.output_directory.text() output_prefix = self.filename_prefix.text() overwrite = self.overwrite_flag.isChecked() output_base_file_path = self.get_output_base_path( output_directory, output_prefix, feature_type, overwrite) # noinspection PyTypeChecker download(feature_type, output_base_file_path, extent, self.progress_dialog) try: self.load_shapefile(feature_type, output_base_file_path) except FileMissingError as exception: display_warning_message_box(self, error_dialog_title, exception.message) self.done(QDialog.Accepted) self.rectangle_map_tool.reset() except CanceledImportDialogError: # don't show anything because this exception raised # when user canceling the import process directly pass except Exception as exception: # pylint: disable=broad-except # noinspection PyCallByClass,PyTypeChecker,PyArgumentList display_warning_message_box(self, error_dialog_title, exception.message) self.progress_dialog.cancel() finally: # Unlock the bounding_box_group self.bounding_box_group.setEnabled(True)