Exemple #1
0
Extract, reproject, resample, and recalculate Landscan data set. 

Created on Thu Mar  5 08:28:07 2020

@author: twillia2
"""

import numpy as np
import subprocess as sp
import rasterio
import xarray as xr

from dask.distributed import Client
from gdalmethods import Data_Path, translate, warp, gdal_options

dpp = Data_Path("/scratch/twillia2/weto/populations/data")
dpc = Data_Path("/projects/rev/data/conus/")

# These come in ESRI grids, we can translate them to geotiffs
sample_src = '~/Downloads/landscan2016_cyprus/cyprus_pop'
sample_dst = dpp.join("test_translation.tif")
translate(sample_src, sample_dst, overwrite=True, format="GTiff")

# We want our geometries to match the exclusion datasets, like this one
template = rasterio.open(dpc.join("_windready_conus.tif"))

# Warp new sample to albers with nearest neighbor first, don't resample
src = dpp.join("rasters/wgs/landscan_2017/landscan_night_2017.tif")
dst = dpp.join("rasters/albers/landscan_near.tif")

# After a few resampling methods, nearest neighbor looks good enough
Exemple #2
0
Created on Fri Feb 14 09:18:28 2020

@author: twillia2
"""

import dask.array as da
import numpy as np
import xarray as xr

from dask.distributed import Client
from gdalmethods import Data_Path, to_raster, warp

# Data Paths
# dp = Data_Path("~/Box/WETO 1.2/data")
DP = Data_Path("/scratch/twillia2/weto/data")
EXL_PATH = DP.join("rasters", "core_exclusions_raster",
                   "alopez_core_exclusions.tif")
ROAD_PATH = DP.join("rasters", "core_exclusions_raster", "conus_roads.tif")
CONUS_PATH = DP.join("rasters", "albers", "90m", "conus.tif")
RAIL_PATH =  DP.join("rasters", "core_exclusions_raster", "conus_rail.tif")

# Best chunk size?
CHUNKS = {'band': 1, 'x': 5000, 'y': 5000}


def build_exclusions():
    """ Build exclusion file for the WETO rent map."""

    # Using the 'core exclusions raster' that antyhony put together.
    excl = xr.open_rasterio(EXL_PATH, chunks=CHUNKS)
Exemple #3
0
"""
Build overlapping wildlife range tiffs
"""

import dask.array as da
from itertools import combinations
import numpy as np
import os
import rasterio
import xarray as xr

from numpy.random import randint
from dask.distributed import Client
from gdalmethods import Data_Path, to_raster

DP = Data_Path("/projects/rev/data/conus/wildlife")
DP2 = Data_Path("/scratch/twillia2/weto/wildlife")

RANGE_CATEGORIES = {
    1: {
        "eastern_red": "bat_ranges/eastern_red_bat_range.tif",
        "hoary": "bat_ranges/hoary_range.tif",
        "silver": "bat_ranges/silver_range.tif",
        # "big_brown": "bat_ranges/.tif",
        "tricolor": "bat_ranges/tricolored_bat_extent.tif",
        "little_brown": "bat_ranges/little_brown_bat_extent.tif",
        "brazilian": "bat_ranges/brazilian_free_tail_range.tif"
    },
    2: {
        "indiana": "bat_ranges/spext_indiana_bat.tif",
        "long_eared": "bat_ranges/northern_long_eared_bat_extent.tif",
Exemple #4
0
"""

import fiona
import itertools
import multiprocessing as mp
import numpy as np
import rasterio
import sys
import p_tqdm

from gdalmethods import Data_Path
from rasterstats import zonal_stats
from tqdm import tqdm

# Paths
DPA = Data_Path("/scratch/twillia2/weto/populations/albers")
TIF = DPA.join("landscan_night_2017.tif")
SHP = DPA.join("sc_circle_single_buffer.gpkg")
NA = rasterio.open(TIF).nodata


def get_chunks(data, n):
    """Yield successive n-sized chunks from a slice-able iterable."""
    chunks = []
    for i in range(0, len(data), n):
        chunks.append(data[i:i + n])

    return chunks


def zonal_stats_partial(feats):
Exemple #5
0
"""

import os

import dask.array as da
import numpy as np
import xarray as xr

from osgeo import gdal

from dask.distributed import Client
from gdalmethods import Data_Path, to_raster
from tqdm import tqdm

# Data Paths
DP = Data_Path("/scratch/twillia2/weto/data")
DPM = Data_Path(DP.join("rasters/albers/acre/masks"))

# Set the chunk sizes
CHUNKS = {'band': 1, 'x': 5000, 'y': 5000}

# Reference geometry
REFERENCE = gdal.Open(DP.join("rasters/albers/acre/blm_codes.tif"))
PROJ = REFERENCE.GetProjection()
GEOM = REFERENCE.GetGeoTransform()


@da.as_gufunc(signature="(i)->(i)",
              output_dtypes=int,
              vectorize=True,
              allow_rechunk=True)
Exemple #6
0
Created on Thu Feb 27 08:56:48 2020

@author: twillia2
"""
import geopandas as gpd
import numpy as np
import pandas as pd
import subprocess as sp
import matplotlib.pyplot as plt
import os
import rasterio

from gdalmethods import Data_Path, to_geo, warp

# Data Paths
DP = Data_Path("/scratch/twillia2/weto/populations")
DPA = Data_Path(DP.join("albers"))
DPSC = Data_Path("/projects/rev/new_projects/ipm_wind/outputs")
DPTMP = Data_Path("/projects/rev/data/conus")
PROJ = ("+proj=aea +lat_0=40 +lon_0=-96 +lat_1=20 +lat_2=60 +x_0=0 +y_0=0 "
        "+ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")

# Reproject Supply Curve Table
if not os.path.exists(DPA.join("sc_gids_singles.gpkg")):
    sc = pd.read_csv(DPSC.join("outputs_sc.csv"))
    sc = sc[["sc_gid", "latitude", "longitude"]]
    sc = sc.drop_duplicates(keep="first", subset=["latitude", "longitude"])
    sc = sc.reset_index(drop=True)
    sc = to_geo(sc, loncol="longitude", latcol="latitude", epsg=4326)
    sc.to_file(DP.join("sc_gids_singles.gpkg"), driver="GPKG")
    src = DP.join("sc_gids_singles.gpkg")