Ejemplo n.º 1
0
def export_dmg_xml(key, dstore, damage_states, dmg_data, suffix):
    """
    Export damage outputs in XML format.

    :param key:
        dmg_dist_per_asset|dmg_dist_per_taxonomy|dmg_dist_total|collapse_map
    :param dstore:
        the datastore
    :param damage_states:
        the list of damage states
    :param dmg_data:
        a list [(loss_type, unit, asset_ref, mean, stddev), ...]
    :param suffix:
        a suffix specifying the GSIM realization
    """
    dest = dstore.export_path('%s%s.%s' % (key[0], suffix, key[1]))
    risk_writers.DamageWriter(damage_states).to_nrml(key[0], dmg_data, dest)
    return AccumDict({key: [dest]})
Ejemplo n.º 2
0
def export_dmg_xml(key, dstore, damage_states, dmg_data, lt, rlz):
    """
    Export damage outputs in XML format.

    :param key:
        dmg_dist_per_asset|dmg_dist_per_taxonomy|dmg_dist_total|collapse_map
    :param dstore:
        the datastore
    :param damage_states:
        the list of damage states
    :param dmg_data:
        a list [(loss_type, unit, asset_ref, mean, stddev), ...]
    :param lt:
        loss type string
    :param rlz:
        a realization object
    """
    dest = dstore.build_fname('%s-%s' % (key[0], lt), rlz, key[1])
    risk_writers.DamageWriter(damage_states).to_nrml(key[0], dmg_data, dest)
    return AccumDict({key: [dest]})
Ejemplo n.º 3
0
def export_dmg_dist(key, output, target):
    """
    Export the damage distribution identified
    by the given output to the `target`.

    :param output:
        DB output record which identifies the distribution. A
        :class:`openquake.engine.db.models.Output` object.
    :param target:
        Destination directory of the exported file, or a file-like object
    """
    job = output.oq_job
    dest = _get_result_export_dest(target, output)
    damage_states = list(
        models.DmgState.objects.filter(
            risk_calculation__id=job.id).order_by('lsi'))
    writer = risk_writers.DamageWriter(damage_states)
    damagecls = DAMAGE[key[0]]
    if key[0] == 'collapse_map':
        data = damagecls.objects.filter(dmg_state=damage_states[-1])
    else:
        data = damagecls.objects.filter(dmg_state__risk_calculation__id=job.id)
    writer.to_nrml(key[0], data, dest)
    return dest
Ejemplo n.º 4
0
        data = [
            BCR_NODE(asset_ref="asset_1",
                     location=writers.Site(1.0, 1.5),
                     bcr=15.23,
                     average_annual_loss_original=10.5,
                     average_annual_loss_retrofitted=20.5)
        ]

        writer.serialize(data)

        _utils.assert_xml_equal(expected, self.filename)


######################## Scenario Damage Writers #########################

dw = writers.DamageWriter([NO_DAMAGE, SLIGHT, MODERATE, EXTENSIVE, COMPLETE])


class DamageWriterTestCase(unittest.TestCase):
    def test_dmg_total_node(self):
        data = itertools.starmap(DMG_DIST_TOTAL, [
            (NO_DAMAGE, 1.0, 1.6),
            (SLIGHT, 34.8, 18.3),
            (MODERATE, 64.2, 19.8),
            (EXTENSIVE, 64.3, 19.7),
            (COMPLETE, 64.3, 19.7),
        ])
        check_equal(__file__, 'expected_dmg_total.xml',
                    dw.to_nrml('dmg_dist_total', data))

    def test_dmg_per_taxonomy_node(self):