def test_correct_geometries_cli(tmpdir): from rgitools.cli import correct_geometries rgi_dir = os.path.join(str(tmpdir), 'RGIV60') rgi_reg_dir = os.path.join(str(tmpdir), 'RGIV60', '06_rgi60_Iceland') mkdir(rgi_reg_dir) for e in ['.shp', '.prj', '.dbf', '.shx']: shutil.copyfile(get_demo_file('RGI6_icecap' + e), os.path.join(rgi_reg_dir, '06_rgi60_Iceland' + e)) out_dir = os.path.join(str(tmpdir), 'RGIV61') def replace(s): return s.replace('rgi60', 'rgi61') correct_geometries.run(rgi_dir, out_dir, replace_str=replace) outf = os.path.join(out_dir, '06_rgi61_Iceland', '06_rgi61_Iceland.shp') assert os.path.exists(outf) # All df = get_iceland_df() out = gpd.read_file(outf) assert len(out) == len(df) assert np.all(g.is_valid for g in out.geometry) assert np.any(out.check_geom != '')
def test_hypsometries_cli(tmpdir): from rgitools.cli import compute_hypsometries, correct_geometries rgi_dir = os.path.join(str(tmpdir), 'RGIV60') rgi_reg_dir = os.path.join(str(tmpdir), 'RGIV60', '11_rgi60_Europe') mkdir(rgi_reg_dir) for e in ['.shp', '.prj', '.dbf', '.shx']: shutil.copyfile(get_demo_file('rgi_oetztal' + e), os.path.join(rgi_reg_dir, '11_rgi60_Europe' + e)) tmp_dir = os.path.join(str(tmpdir), 'RGIV61') def replace(s): return s.replace('rgi60', 'rgi61') correct_geometries.run(rgi_dir, tmp_dir, replace_str=replace) outf = os.path.join(tmp_dir, '11_rgi61_Europe', '11_rgi61_Europe.shp') assert os.path.exists(outf) # All df = gpd.read_file(get_demo_file('rgi_oetztal.shp')) out = gpd.read_file(outf) assert len(out) == len(df) assert np.all(g.is_valid for g in out.geometry) assert np.any(out.check_geom != '') out_dir = os.path.join(str(tmpdir), 'RGIV62') def replace(s): return s.replace('rgi61', 'rgi62') compute_hypsometries.run(tmp_dir, out_dir, replace_str=replace, set_oggm_params=set_oggm_params) outf = os.path.join(out_dir, '11_rgi62_Europe', '11_rgi62_Europe.shp') assert os.path.exists(outf) outf = os.path.join(out_dir, '11_rgi62_Europe', '11_rgi62_Europe_hypso.csv') assert os.path.exists(outf) outf = os.path.join(out_dir, '11_rgi62_Europe', '11_rgi62_Europe_hypso.csv') assert os.path.exists(outf)
def test_intersects_cli(tmpdir): from rgitools.cli import compute_intersects rgi_dir = os.path.join(str(tmpdir), 'RGIV60') rgi_reg_dir = os.path.join(str(tmpdir), 'RGIV60', '06_rgi60_Iceland') mkdir(rgi_reg_dir) for e in ['.shp', '.prj', '.dbf', '.shx']: shutil.copyfile(get_demo_file('RGI6_icecap' + e), os.path.join(rgi_reg_dir, '06_rgi60_Iceland' + e)) out_dir = os.path.join(str(tmpdir), 'RGIV60_intersects') compute_intersects.run(rgi_dir, out_dir) assert os.path.exists( os.path.join(out_dir, '06_rgi60_Iceland', 'intersects_06_rgi60_Iceland.shp'))
def test_zip_cli(tmpdir): from rgitools.cli import zip_rgi_dir rgi_dir = os.path.join(str(tmpdir), 'rgi_61') outf = os.path.join(str(tmpdir), 'rgi_61') regdirs = ['06_rgi61_Iceland', '07_rgi61_Scandinavia'] for regdir in regdirs: rgi_reg_dir = os.path.join(rgi_dir, regdir) mkdir(rgi_reg_dir) for e in ['.shp', '.prj', '.dbf', '.shx']: shutil.copyfile(get_demo_file('RGI6_icecap' + e), os.path.join(rgi_reg_dir, '01_rgi61_Iceland' + e)) zip_rgi_dir.run(rgi_dir, outf) assert os.path.exists(outf)
def set_oggm_params(cfg): cfg.PATHS['dem_file'] = get_demo_file('srtm_oetztal.tif')
def set_oggm_params(cfg): cfg.PATHS['dem_file'] = get_demo_file('srtm_oetztal.tif') cfg.PARAMS['use_multiprocessing'] = False
def test_hypsometry(tmpdir): from oggm.utils import rmsd rgi_df = gpd.read_file(get_demo_file('rgi_oetztal.shp')) rgi_df = rgi_df.loc[['_d' not in rid for rid in rgi_df.RGIId]] outf = os.path.join(str(tmpdir), 'rgi_62') # Make if fail somewhere from shapely.affinity import translate geo = rgi_df.iloc[0, -1] rgi_df.iloc[0, -1] = translate(geo, xoff=10) rgi_df.loc[1, 'RGIFlag'] = '2909' def set_oggm_params(cfg): cfg.PATHS['dem_file'] = get_demo_file('srtm_oetztal.tif') cfg.PARAMS['use_multiprocessing'] = False df, gdf = funcs.hypsometries(rgi_df, set_oggm_params=set_oggm_params, to_file=outf) assert np.all(df.loc[0, df.columns[3:]] == -9) assert np.all(df.loc[1, df.columns[3:]] == -9) assert not np.isfinite(gdf.loc[0, 'Aspect']) assert gdf.loc[1, 'Aspect'] == rgi_df.loc[1, 'Aspect'] df = df.iloc[2:] assert np.all(df[df.columns[3:]].sum(axis=1) == 1000) gdf = gdf.iloc[2:] rgi_df = rgi_df.iloc[2:] assert rmsd(gdf['Zmed'], rgi_df['Zmed']) < 25 assert rmsd(gdf['Zmin'], rgi_df['Zmin']) < 25 assert rmsd(gdf['Zmax'], rgi_df['Zmax']) < 25 assert rmsd(gdf['Slope'], rgi_df['Slope']) < 1 # For aspect test for cos / sin because of 0 360 thing us = np.cos(np.deg2rad(gdf.Aspect)) ref = np.cos(np.deg2rad(rgi_df.Aspect)) assert rmsd(us, ref) < 0.3 us = np.sin(np.deg2rad(gdf.Aspect)) ref = np.sin(np.deg2rad(rgi_df.Aspect)) assert rmsd(us, ref) < 0.3 ## df = pd.read_csv(outf + '_hypso.csv') gdf = gpd.read_file(outf + '.shp') assert np.all(df.loc[0, df.columns[3:]] == -9) assert np.all(df.loc[1, df.columns[3:]] == -9) assert not np.isfinite(gdf.loc[0, 'Aspect']) df = df.iloc[2:] assert np.all(df[df.columns[3:]].sum(axis=1) == 1000) gdf = gdf.iloc[2:] assert rmsd(gdf['Zmed'], rgi_df['Zmed']) < 25 assert rmsd(gdf['Zmin'], rgi_df['Zmin']) < 25 assert rmsd(gdf['Zmax'], rgi_df['Zmax']) < 25 assert rmsd(gdf['Slope'], rgi_df['Slope']) < 1 # For aspect test for cos / sin because of 0 360 thing us = np.cos(np.deg2rad(gdf.Aspect)) ref = np.cos(np.deg2rad(rgi_df.Aspect)) assert rmsd(us, ref) < 0.3 us = np.sin(np.deg2rad(gdf.Aspect)) ref = np.sin(np.deg2rad(rgi_df.Aspect)) assert rmsd(us, ref) < 0.3
def get_iceland_df(reduced=False): df = gpd.read_file(get_demo_file('RGI6_icecap.shp')) if reduced: df = df.loc[(df.CenLon < -19.45) & (df.CenLat < 63.7)] return df