本文整理汇总了Python中safe.impact_function.impact_function.ImpactFunction.requested_extent方法的典型用法代码示例。如果您正苦于以下问题:Python ImpactFunction.requested_extent方法的具体用法?Python ImpactFunction.requested_extent怎么用?Python ImpactFunction.requested_extent使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类safe.impact_function.impact_function.ImpactFunction
的用法示例。
在下文中一共展示了ImpactFunction.requested_extent方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: prepare_impact_function
# 需要导入模块: from safe.impact_function.impact_function import ImpactFunction [as 别名]
# 或者: from safe.impact_function.impact_function.ImpactFunction import requested_extent [as 别名]
def prepare_impact_function(self):
"""Create analysis as a representation of current situation of IFCW."""
# Impact Functions
impact_function = ImpactFunction()
impact_function.callback = self.progress_callback
# Layers
impact_function.hazard = self.parent.hazard_layer
impact_function.exposure = self.parent.exposure_layer
aggregation = self.parent.aggregation_layer
if aggregation:
impact_function.aggregation = aggregation
impact_function.use_selected_features_only = (
setting('useSelectedFeaturesOnly', False, bool))
else:
mode = setting('analysis_extents_mode')
if self.extent.user_extent:
# This like a hack to transform a geometry to a rectangle.
# self.extent.user_extent is a QgsGeometry.
# impact_function.requested_extent needs a QgsRectangle.
wkt = self.extent.user_extent.exportToWkt()
impact_function.requested_extent = wkt_to_rectangle(wkt)
impact_function.requested_extent_crs = self.extent.crs
elif mode == HAZARD_EXPOSURE_VIEW:
impact_function.requested_extent = (
self.iface.mapCanvas().extent())
impact_function.requested_extent_crs = self.extent.crs
# We don't have any checkbox in the wizard for the debug mode.
impact_function.debug_mode = False
return impact_function
示例2: impact_function_setup
# 需要导入模块: from safe.impact_function.impact_function import ImpactFunction [as 别名]
# 或者: from safe.impact_function.impact_function.ImpactFunction import requested_extent [as 别名]
def impact_function_setup(
command_line_arguments, hazard, exposure, aggregation=None):
"""Sets up an analysis object.
.. versionadded:: 3.2
:param command_line_arguments: User inputs.
:type command_line_arguments: CommandLineArguments
:param hazard: Hazard layer
:type hazard: QgsLayer
:param exposure: Exposure Layer
:type exposure: QgsLayer
:param aggregation: Aggregation Layer
:type aggregation: QgsLayer
:raises: Exception
"""
# IF
impact_function = ImpactFunction()
impact_function.hazard = hazard
impact_function.exposure = exposure
impact_function.aggregation = aggregation
impact_function.map_canvas = CANVAS
# QSetting context
settings = QSettings()
crs = settings.value('inasafe/user_extent_crs', '', type=str)
impact_function.requested_extent_crs = QgsCoordinateReferenceSystem(crs)
try:
impact_function.requested_extent = QgsRectangle(
float(command_line_arguments.extent[0]),
float(command_line_arguments.extent[1]),
float(command_line_arguments.extent[2]),
float(command_line_arguments.extent[3])
)
except AttributeError:
print "No extents"
pass
return impact_function
示例3: run_task
# 需要导入模块: from safe.impact_function.impact_function import ImpactFunction [as 别名]
# 或者: from safe.impact_function.impact_function.ImpactFunction import requested_extent [as 别名]
def run_task(self, task_item, status_item, count=0, index=''):
"""Run a single task.
:param task_item: Table task_item containing task name / details.
:type task_item: QTableWidgetItem
:param status_item: Table task_item that holds the task status.
:type status_item: QTableWidgetItem
:param count: Count of scenarios that have been run already.
:type count:
:param index: The index for the table item that will be run.
:type index: int
:returns: Flag indicating if the task succeeded or not.
:rtype: bool
"""
self.enable_busy_cursor()
for layer_group in self.layer_group_container:
layer_group.setItemVisibilityChecked(False)
# set status to 'running'
status_item.setText(self.tr('Running'))
# .. see also:: :func:`appendRow` to understand the next 2 lines
variant = task_item.data(QtCore.Qt.UserRole)
value = variant[0]
result = True
if isinstance(value, str):
filename = value
# run script
try:
self.run_script(filename)
# set status to 'OK'
status_item.setText(self.tr('Script OK'))
except Exception as e: # pylint: disable=W0703
# set status to 'fail'
status_item.setText(self.tr('Script Fail'))
LOGGER.exception(
'Running macro failed. The exception: ' + str(e))
result = False
elif isinstance(value, dict):
# start in new project if toggle is active
if self.start_in_new_project:
self.iface.newProject()
# create layer group
group_name = value['scenario_name']
self.layer_group = self.root.addGroup(group_name)
self.layer_group_container.append(self.layer_group)
# Its a dict containing files for a scenario
success, parameters = self.prepare_task(value)
if not success:
# set status to 'running'
status_item.setText(self.tr('Please update scenario'))
self.disable_busy_cursor()
return False
directory = self.output_directory.text()
if self.scenario_directory_radio.isChecked():
directory = self.source_directory.text()
output_directory = os.path.join(directory, group_name)
if not os.path.exists(output_directory):
os.makedirs(output_directory)
# If impact function parameters loaded successfully, initiate IF.
impact_function = ImpactFunction()
impact_function.datastore = Folder(output_directory)
impact_function.datastore.default_vector_format = "geojson"
impact_function.hazard = parameters[layer_purpose_hazard['key']]
impact_function.exposure = (
parameters[layer_purpose_exposure['key']])
if parameters[layer_purpose_aggregation['key']]:
impact_function.aggregation = (
parameters[layer_purpose_aggregation['key']])
elif parameters['extent']:
impact_function.requested_extent = parameters['extent']
impact_function.crs = parameters['crs']
prepare_status, prepare_message = impact_function.prepare()
if prepare_status == PREPARE_SUCCESS:
LOGGER.info('Impact function ready')
status, message = impact_function.run()
if status == ANALYSIS_SUCCESS:
status_item.setText(self.tr('Analysis Success'))
impact_layer = impact_function.impact
if impact_layer.isValid():
layer_list = [
impact_layer,
impact_function.analysis_impacted,
parameters[layer_purpose_hazard['key']],
parameters[layer_purpose_exposure['key']],
parameters[layer_purpose_aggregation['key']]]
QgsProject.instance().addMapLayers(
layer_list, False)
for layer in layer_list:
self.layer_group.addLayer(layer)
#.........这里部分代码省略.........
示例4: test_minimum_extent
# 需要导入模块: from safe.impact_function.impact_function import ImpactFunction [as 别名]
# 或者: from safe.impact_function.impact_function.ImpactFunction import requested_extent [as 别名]
def test_minimum_extent(self):
"""Test we can compute the minimum extent in the IF."""
# Without aggregation layer
hazard_layer = load_test_vector_layer(
'hazard', 'flood_multipart_polygons.shp')
exposure_layer = load_test_vector_layer('exposure', 'roads.shp')
impact_function = ImpactFunction()
impact_function.exposure = exposure_layer
impact_function.hazard = hazard_layer
status, message = impact_function.prepare()
self.assertEqual(PREPARE_SUCCESS, status, message)
message = (
'Test about the minimum extent without an aggregation layer is '
'failing.')
self.assertTrue(
compare_wkt(
'Polygon (('
'106.8080099999999959 -6.19531000000000009, '
'106.8080099999999959 -6.16752599999999962, '
'106.83456946836641066 -6.16752599999999962, '
'106.83456946836641066 -6.19531000000000009, '
'106.8080099999999959 -6.19531000000000009))',
impact_function.analysis_extent.exportToWkt()),
message
)
# Without aggregation layer but with a requested_extent
hazard_layer = load_test_vector_layer(
'hazard', 'flood_multipart_polygons.shp')
exposure_layer = load_test_vector_layer('exposure', 'roads.shp')
impact_function = ImpactFunction()
impact_function.exposure = exposure_layer
impact_function.hazard = hazard_layer
impact_function.requested_extent = wkt_to_rectangle(
'POLYGON (('
'106.772279 -6.237576, '
'106.772279 -6.165415, '
'106.885165 -6.165415, '
'106.885165 -6.237576, '
'106.772279 -6.237576'
'))')
impact_function.requested_extent_crs = QgsCoordinateReferenceSystem(
4326)
status, message = impact_function.prepare()
self.assertEqual(PREPARE_SUCCESS, status, message)
message = (
'Test about the minimum extent without an aggregation layer but '
'with a requested extent is failing.')
self.assertTrue(
compare_wkt(
'Polygon (('
'106.8080099999999959 -6.19531000000000009, '
'106.8080099999999959 -6.16752599999999962, '
'106.83456946836641066 -6.16752599999999962, '
'106.83456946836641066 -6.19531000000000009, '
'106.8080099999999959 -6.19531000000000009))',
impact_function.analysis_extent.exportToWkt()),
message
)
# With an aggregation layer, without selection
hazard_layer = load_test_vector_layer(
'gisv4', 'hazard', 'classified_vector.geojson')
exposure_layer = load_test_vector_layer(
'gisv4', 'exposure', 'building-points.geojson')
aggregation_layer = load_test_vector_layer(
'gisv4', 'aggregation', 'small_grid.geojson')
impact_function = ImpactFunction()
impact_function.aggregation = aggregation_layer
impact_function.exposure = exposure_layer
impact_function.hazard = hazard_layer
impact_function.use_selected_features_only = False
impact_function.aggregation.select(0)
status, message = impact_function.prepare()
self.assertEqual(PREPARE_SUCCESS, status, message)
message = (
'Test about the minimum extent with an aggregation layer is '
'failing.')
self.assertTrue(
compare_wkt(
'Polygon ((106.9033179652593617 -6.18324454090033182, '
'106.90331796525939012 -6.2725478115989306, '
'106.72365490843547775 -6.2725478115989306, '
'106.72365490843547775 -6.18324645462287137, '
'106.72365490843547775 -6.09392810187095257, '
'106.81348643684744104 -6.09392810187095257, '
'106.9033179652593617 -6.09392810187095257, '
'106.9033179652593617 -6.18324454090033182))',
impact_function.analysis_extent.exportToWkt()),
message
)
# With an aggregation layer, with selection
impact_function.use_selected_features_only = True
impact_function.aggregation = aggregation_layer
status, message = impact_function.prepare()
self.assertEqual(PREPARE_SUCCESS, status, message)
message = (
'Test about the minimum extent with an aggregation layer and '
#.........这里部分代码省略.........