def get_last_wild(bioregion):
    if report_cache_exists(bioregion, 'wild_regions'):
        lastwild_tuples = get_report_cache(bioregion, 'wild_regions')
        return lastwild_tuples
    else:
        wild_regions = LastWild.objects.filter(geometry__bboverlaps=bioregion.output_geom)
        wild_region_tuples =  []
        for wild_region in wild_regions:
            if wild_region.geometry.valid:
                wild_geom = wild_region.geometry
            else:
                wild_geom = wild_region.geometry.buffer(0)
            if wild_geom.intersects(bioregion.output_geom):
                inter_geom = wild_geom.intersection(bioregion.output_geom)
                wild_region_tuples.append((inter_geom.area, wild_region.eco_name))
        #wild_region_tuples = [(wild_region.geometry.intersection(bioregion.output_geom).area, wild_region.eco_name) for wild_region in wild_regions if wild_region.geometry.intersects(bioregion.output_geom)]
        wild_region_dict = {}
        for area,name in wild_region_tuples:
            if name is not None:
                if name in wild_region_dict.keys():
                    wild_region_dict[name] += area
                else:
                    wild_region_dict[name] = area
        wild_region_tuples = [(name, convert_float_to_area_display_units(area)) for name,area in wild_region_dict.items()]
        wild_region_tuples.sort()
        wild_region_tuples = [(wild_tuple[0], wild_tuple[1], convert_sq_km_to_sq_mi(wild_tuple[1])) for wild_tuple in wild_region_tuples]
        create_report_cache(bioregion, dict(wild_regions=wild_region_tuples))
        return wild_region_tuples  
Beispiel #2
0
def get_marine_ecoregions(bioregion):
    if report_cache_exists(bioregion, 'marineregions'):
        marineregion_tuples = get_report_cache(bioregion, 'marineregions')
        return marineregion_tuples
    else:
        marineregions = MarineRegions.objects.filter(
            geometry__bboverlaps=bioregion.output_geom)
        marineregion_tuples = [
            (marineregion.geometry.intersection(bioregion.output_geom).area,
             marineregion.ecoregion) for marineregion in marineregions
            if marineregion.geometry.intersects(bioregion.output_geom)
        ]
        marineregion_dict = {}
        for area, name in marineregion_tuples:
            if name in marineregion_dict.keys():
                marineregion_dict[name] += area
            else:
                marineregion_dict[name] = area
        marineregion_tuples = [(name,
                                convert_float_to_area_display_units(area))
                               for name, area in marineregion_dict.items()]
        marineregion_tuples.sort()
        marineregion_tuples = [(marine_tuple[0], marine_tuple[1],
                                convert_sq_km_to_sq_mi(marine_tuple[1]))
                               for marine_tuple in marineregion_tuples]
        create_report_cache(bioregion, dict(marineregions=marineregion_tuples))
        return marineregion_tuples
Beispiel #3
0
def get_ecoregions(bioregion):
    if report_cache_exists(bioregion, 'ecoregions'):
        ecoregion_tuples = get_report_cache(bioregion, 'ecoregions')
        return ecoregion_tuples
    else:
        ecoregions = EcoRegions.objects.filter(
            geometry__bboverlaps=bioregion.output_geom)
        ecoregion_tuples = [
            (ecoregion.geometry.intersection(bioregion.output_geom).area,
             ecoregion.eco_name) for ecoregion in ecoregions
            if ecoregion.geometry.intersects(bioregion.output_geom)
        ]
        ecoregion_dict = {}
        for area, name in ecoregion_tuples:
            if name in ecoregion_dict.keys():
                ecoregion_dict[name] += area
            else:
                ecoregion_dict[name] = area
        ecoregion_tuples = [(name, convert_float_to_area_display_units(area))
                            for name, area in ecoregion_dict.items()]
        ecoregion_tuples.sort()
        ecoregion_tuples = [(eco_tuple[0], eco_tuple[1],
                             convert_sq_km_to_sq_mi(eco_tuple[1]))
                            for eco_tuple in ecoregion_tuples]
        #ecoregion_names = [name for (area, name) in ecoregion_tuples]
        create_report_cache(bioregion, dict(ecoregions=ecoregion_tuples))
        #just return the following for now (until we get caching in place)
        #ecoregion_names = ['Central and Southern Cascades forests', 'Central Pacific coastal forests', 'Willamette Valley forests', 'Puget lowland forests', 'Eastern Cascades forests', 'Klamath-Siskiyou forests', 'Snake-Columbia shrub steppe', 'Blue Mountains forests']
        return ecoregion_tuples
Beispiel #4
0
def get_last_wild(bioregion):
    if report_cache_exists(bioregion, 'wild_regions'):
        lastwild_tuples = get_report_cache(bioregion, 'wild_regions')
        return lastwild_tuples
    else:
        wild_regions = LastWild.objects.filter(
            geometry__bboverlaps=bioregion.output_geom)
        wild_region_tuples = []
        for wild_region in wild_regions:
            if wild_region.geometry.valid:
                wild_geom = wild_region.geometry
            else:
                wild_geom = wild_region.geometry.buffer(0)
            if wild_geom.intersects(bioregion.output_geom):
                inter_geom = wild_geom.intersection(bioregion.output_geom)
                wild_region_tuples.append(
                    (inter_geom.area, wild_region.eco_name))
        #wild_region_tuples = [(wild_region.geometry.intersection(bioregion.output_geom).area, wild_region.eco_name) for wild_region in wild_regions if wild_region.geometry.intersects(bioregion.output_geom)]
        wild_region_dict = {}
        for area, name in wild_region_tuples:
            if name is not None:
                if name in wild_region_dict.keys():
                    wild_region_dict[name] += area
                else:
                    wild_region_dict[name] = area
        wild_region_tuples = [(name, convert_float_to_area_display_units(area))
                              for name, area in wild_region_dict.items()]
        wild_region_tuples.sort()
        wild_region_tuples = [(wild_tuple[0], wild_tuple[1],
                               convert_sq_km_to_sq_mi(wild_tuple[1]))
                              for wild_tuple in wild_region_tuples]
        create_report_cache(bioregion, dict(wild_regions=wild_region_tuples))
        return wild_region_tuples
Beispiel #5
0
def get_watersheds(bioregion):
    if report_cache_exists(bioregion, 'watersheds'):
        watershed_tuples = get_report_cache(bioregion, 'watersheds')
        return watershed_tuples
    else:
        watersheds = Watersheds.objects.filter(
            geometry__bboverlaps=bioregion.output_geom)
        watershed_tuples = [
            (watershed.geometry.intersection(bioregion.output_geom).area,
             watershed.maj_name) for watershed in watersheds
            if watershed.geometry.intersects(bioregion.output_geom)
        ]
        watershed_dict = {}
        for area, name in watershed_tuples:
            if name in watershed_dict.keys():
                watershed_dict[name] += area
            else:
                watershed_dict[name] = area
        watershed_tuples = [(name, convert_float_to_area_display_units(area))
                            for name, area in watershed_dict.items()]
        watershed_tuples.sort()
        watershed_tuples = [(watershed_tuple[0], watershed_tuple[1],
                             convert_sq_km_to_sq_mi(watershed_tuple[1]))
                            for watershed_tuple in watershed_tuples]
        create_report_cache(bioregion, dict(watersheds=watershed_tuples))
        return watershed_tuples
Beispiel #6
0
def get_sea_rise_impacts(bioregion):
    s1_geom = RasterDataset.objects.get(name="sea_rise_1m")
    s3_geom = RasterDataset.objects.get(name="sea_rise_3m")
    s6_geom = RasterDataset.objects.get(name="sea_rise_6m")
    s1_stats = zonal_stats(bioregion.output_geom, s1_geom)
    s3_stats = zonal_stats(bioregion.output_geom, s3_geom)
    s6_stats = zonal_stats(bioregion.output_geom, s6_geom)
    land_loss_1m = s1_stats.sum * sea_level_grid_size
    land_loss_3m = s3_stats.sum * sea_level_grid_size
    land_loss_6m = s6_stats.sum * sea_level_grid_size
    land_loss_1m_km = int(convert_float_to_area_display_units(land_loss_1m))
    land_loss_1m_mi = int(convert_sq_km_to_sq_mi(land_loss_1m_km))
    land_loss_3m_km = int(convert_float_to_area_display_units(land_loss_3m))
    land_loss_3m_mi = int(convert_sq_km_to_sq_mi(land_loss_3m_km))
    land_loss_6m_km = int(convert_float_to_area_display_units(land_loss_6m))
    land_loss_6m_mi = int(convert_sq_km_to_sq_mi(land_loss_6m_km))
    return (land_loss_1m_km, land_loss_1m_mi), (land_loss_3m_km, land_loss_3m_mi), (land_loss_6m_km, land_loss_6m_mi)
Beispiel #7
0
def get_sea_rise_impacts(bioregion):
    s1_geom = RasterDataset.objects.get(name='sea_rise_1m')
    s3_geom = RasterDataset.objects.get(name='sea_rise_3m')
    s6_geom = RasterDataset.objects.get(name='sea_rise_6m')
    s1_stats = zonal_stats(bioregion.output_geom, s1_geom)
    s3_stats = zonal_stats(bioregion.output_geom, s3_geom)
    s6_stats = zonal_stats(bioregion.output_geom, s6_geom)
    land_loss_1m = s1_stats.sum * sea_level_grid_size
    land_loss_3m = s3_stats.sum * sea_level_grid_size
    land_loss_6m = s6_stats.sum * sea_level_grid_size
    land_loss_1m_km = int(convert_float_to_area_display_units(land_loss_1m))
    land_loss_1m_mi = int(convert_sq_km_to_sq_mi(land_loss_1m_km))
    land_loss_3m_km = int(convert_float_to_area_display_units(land_loss_3m))
    land_loss_3m_mi = int(convert_sq_km_to_sq_mi(land_loss_3m_km))
    land_loss_6m_km = int(convert_float_to_area_display_units(land_loss_6m))
    land_loss_6m_mi = int(convert_sq_km_to_sq_mi(land_loss_6m_km))
    return (land_loss_1m_km,
            land_loss_1m_mi), (land_loss_3m_km,
                               land_loss_3m_mi), (land_loss_6m_km,
                                                  land_loss_6m_mi)
def get_marine_ecoregions(bioregion):
    if report_cache_exists(bioregion, 'marineregions'):
        marineregion_tuples = get_report_cache(bioregion, 'marineregions')
        return marineregion_tuples
    else:
        marineregions = MarineRegions.objects.filter(geometry__bboverlaps=bioregion.output_geom)
        marineregion_tuples = [(marineregion.geometry.intersection(bioregion.output_geom).area, marineregion.ecoregion) for marineregion in marineregions if marineregion.geometry.intersects(bioregion.output_geom)]
        marineregion_dict = {}
        for area,name in marineregion_tuples:
            if name in marineregion_dict.keys():
                marineregion_dict[name] += area
            else:
                marineregion_dict[name] = area
        marineregion_tuples = [(name, convert_float_to_area_display_units(area)) for name,area in marineregion_dict.items()]
        marineregion_tuples.sort()
        marineregion_tuples = [(marine_tuple[0], marine_tuple[1], convert_sq_km_to_sq_mi(marine_tuple[1])) for marine_tuple in marineregion_tuples]
        create_report_cache(bioregion, dict(marineregions=marineregion_tuples))
        return marineregion_tuples    
def get_watersheds(bioregion):
    if report_cache_exists(bioregion, 'watersheds'):
        watershed_tuples = get_report_cache(bioregion, 'watersheds')
        return watershed_tuples
    else:
        watersheds = Watersheds.objects.filter(geometry__bboverlaps=bioregion.output_geom)
        watershed_tuples = [(watershed.geometry.intersection(bioregion.output_geom).area, watershed.maj_name) for watershed in watersheds if watershed.geometry.intersects(bioregion.output_geom)]
        watershed_dict = {}
        for area,name in watershed_tuples:
            if name in watershed_dict.keys():
                watershed_dict[name] += area
            else:
                watershed_dict[name] = area
        watershed_tuples = [(name, convert_float_to_area_display_units(area)) for name,area in watershed_dict.items()]
        watershed_tuples.sort()
        watershed_tuples = [(watershed_tuple[0], watershed_tuple[1], convert_sq_km_to_sq_mi(watershed_tuple[1])) for watershed_tuple in watershed_tuples]
        create_report_cache(bioregion, dict(watersheds=watershed_tuples))
        return watershed_tuples    
def get_ecoregions(bioregion):
    if report_cache_exists(bioregion, 'ecoregions'):
        ecoregion_tuples = get_report_cache(bioregion, 'ecoregions')
        return ecoregion_tuples
    else:
        ecoregions = EcoRegions.objects.filter(geometry__bboverlaps=bioregion.output_geom)
        ecoregion_tuples = [(ecoregion.geometry.intersection(bioregion.output_geom).area, ecoregion.eco_name) for ecoregion in ecoregions if ecoregion.geometry.intersects(bioregion.output_geom)]
        ecoregion_dict = {}
        for area,name in ecoregion_tuples:
            if name in ecoregion_dict.keys():
                ecoregion_dict[name] += area
            else:
                ecoregion_dict[name] = area
        ecoregion_tuples = [(name, convert_float_to_area_display_units(area)) for name,area in ecoregion_dict.items()]
        ecoregion_tuples.sort()
        ecoregion_tuples = [(eco_tuple[0], eco_tuple[1], convert_sq_km_to_sq_mi(eco_tuple[1])) for eco_tuple in ecoregion_tuples]
        #ecoregion_names = [name for (area, name) in ecoregion_tuples]
        create_report_cache(bioregion, dict(ecoregions=ecoregion_tuples))
        #just return the following for now (until we get caching in place)
        #ecoregion_names = ['Central and Southern Cascades forests', 'Central Pacific coastal forests', 'Willamette Valley forests', 'Puget lowland forests', 'Eastern Cascades forests', 'Klamath-Siskiyou forests', 'Snake-Columbia shrub steppe', 'Blue Mountains forests']
        return ecoregion_tuples    
def get_size(geom):
    area_km = int(round(geometry_area_in_display_units(geom)))
    area_mi = int(round(convert_sq_km_to_sq_mi(area_km)))
    return area_km, area_mi
def get_oceanic_area(bioregion):
    oceanic_geom = get_oceanic_geom(bioregion)
    oceanic_area_km = int(round(geometry_area_in_display_units(oceanic_geom)))
    oceanic_area_mi = int(round(convert_sq_km_to_sq_mi(oceanic_area_km)))
    return oceanic_area_km, oceanic_area_mi  
def get_terra_area(bioregion):
    terra_geom = get_terra_geom(bioregion)
    terra_area_km = int(round(geometry_area_in_display_units(terra_geom)))        
    terra_area_mi = int(round(convert_sq_km_to_sq_mi(terra_area_km)))
    return terra_area_km, terra_area_mi    
Beispiel #14
0
def get_oceanic_area(bioregion):
    oceanic_geom = get_oceanic_geom(bioregion)
    oceanic_area_km = int(round(geometry_area_in_display_units(oceanic_geom)))
    oceanic_area_mi = int(round(convert_sq_km_to_sq_mi(oceanic_area_km)))
    return oceanic_area_km, oceanic_area_mi
Beispiel #15
0
def get_terra_area(bioregion):
    terra_geom = get_terra_geom(bioregion)
    terra_area_km = int(round(geometry_area_in_display_units(terra_geom)))
    terra_area_mi = int(round(convert_sq_km_to_sq_mi(terra_area_km)))
    return terra_area_km, terra_area_mi
Beispiel #16
0
def get_size(geom):
    area_km = int(round(geometry_area_in_display_units(geom)))
    area_mi = int(round(convert_sq_km_to_sq_mi(area_km)))
    return area_km, area_mi