annotate land_cover.py @ 0:d79c143be3a7 draft default tip

planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/earth commit 4cbace8c3a71b7a1638cfd44a21f5d4b84d2fd15
author ecology
date Mon, 21 Oct 2024 16:46:50 +0000
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
d79c143be3a7 planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/earth commit 4cbace8c3a71b7a1638cfd44a21f5d4b84d2fd15
ecology
parents:
diff changeset
1 # Land Cover TE Algorithm Without GEE
d79c143be3a7 planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/earth commit 4cbace8c3a71b7a1638cfd44a21f5d4b84d2fd15
ecology
parents:
diff changeset
2
d79c143be3a7 planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/earth commit 4cbace8c3a71b7a1638cfd44a21f5d4b84d2fd15
ecology
parents:
diff changeset
3 # How to Execute:
d79c143be3a7 planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/earth commit 4cbace8c3a71b7a1638cfd44a21f5d4b84d2fd15
ecology
parents:
diff changeset
4 # - Load the two images (.TIFF) of the rasters
d79c143be3a7 planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/earth commit 4cbace8c3a71b7a1638cfd44a21f5d4b84d2fd15
ecology
parents:
diff changeset
5 # to be processed in the "/data/land_cover/input" folder
d79c143be3a7 planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/earth commit 4cbace8c3a71b7a1638cfd44a21f5d4b84d2fd15
ecology
parents:
diff changeset
6 # - Setting the two filenames in the specific cell of this script (0)
d79c143be3a7 planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/earth commit 4cbace8c3a71b7a1638cfd44a21f5d4b84d2fd15
ecology
parents:
diff changeset
7 # - Run all cells of the script
d79c143be3a7 planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/earth commit 4cbace8c3a71b7a1638cfd44a21f5d4b84d2fd15
ecology
parents:
diff changeset
8 # - Check the script results in the "/data/land_cover/output" folder
d79c143be3a7 planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/earth commit 4cbace8c3a71b7a1638cfd44a21f5d4b84d2fd15
ecology
parents:
diff changeset
9 # - Land Cover Degradation "/data/land_cover/output/lc_dg.tiff"
d79c143be3a7 planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/earth commit 4cbace8c3a71b7a1638cfd44a21f5d4b84d2fd15
ecology
parents:
diff changeset
10 # - Land Cover Transition "/data/land_cover/output/lc_tr.tiff"
d79c143be3a7 planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/earth commit 4cbace8c3a71b7a1638cfd44a21f5d4b84d2fd15
ecology
parents:
diff changeset
11
d79c143be3a7 planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/earth commit 4cbace8c3a71b7a1638cfd44a21f5d4b84d2fd15
ecology
parents:
diff changeset
12 # Librairies import
d79c143be3a7 planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/earth commit 4cbace8c3a71b7a1638cfd44a21f5d4b84d2fd15
ecology
parents:
diff changeset
13 import argparse
d79c143be3a7 planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/earth commit 4cbace8c3a71b7a1638cfd44a21f5d4b84d2fd15
ecology
parents:
diff changeset
14 import json
d79c143be3a7 planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/earth commit 4cbace8c3a71b7a1638cfd44a21f5d4b84d2fd15
ecology
parents:
diff changeset
15 import os
d79c143be3a7 planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/earth commit 4cbace8c3a71b7a1638cfd44a21f5d4b84d2fd15
ecology
parents:
diff changeset
16 import sys
d79c143be3a7 planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/earth commit 4cbace8c3a71b7a1638cfd44a21f5d4b84d2fd15
ecology
parents:
diff changeset
17
d79c143be3a7 planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/earth commit 4cbace8c3a71b7a1638cfd44a21f5d4b84d2fd15
ecology
parents:
diff changeset
18 import matplotlib.pyplot as plt
d79c143be3a7 planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/earth commit 4cbace8c3a71b7a1638cfd44a21f5d4b84d2fd15
ecology
parents:
diff changeset
19
d79c143be3a7 planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/earth commit 4cbace8c3a71b7a1638cfd44a21f5d4b84d2fd15
ecology
parents:
diff changeset
20 import numpy as np
d79c143be3a7 planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/earth commit 4cbace8c3a71b7a1638cfd44a21f5d4b84d2fd15
ecology
parents:
diff changeset
21
d79c143be3a7 planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/earth commit 4cbace8c3a71b7a1638cfd44a21f5d4b84d2fd15
ecology
parents:
diff changeset
22 import rasterio
d79c143be3a7 planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/earth commit 4cbace8c3a71b7a1638cfd44a21f5d4b84d2fd15
ecology
parents:
diff changeset
23 from rasterio.plot import show
d79c143be3a7 planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/earth commit 4cbace8c3a71b7a1638cfd44a21f5d4b84d2fd15
ecology
parents:
diff changeset
24
d79c143be3a7 planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/earth commit 4cbace8c3a71b7a1638cfd44a21f5d4b84d2fd15
ecology
parents:
diff changeset
25 from te_schemas.land_cover import LCLegendNesting
d79c143be3a7 planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/earth commit 4cbace8c3a71b7a1638cfd44a21f5d4b84d2fd15
ecology
parents:
diff changeset
26 from te_schemas.land_cover import LCTransitionDefinitionDeg
d79c143be3a7 planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/earth commit 4cbace8c3a71b7a1638cfd44a21f5d4b84d2fd15
ecology
parents:
diff changeset
27
d79c143be3a7 planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/earth commit 4cbace8c3a71b7a1638cfd44a21f5d4b84d2fd15
ecology
parents:
diff changeset
28 # Methods to manage Rasters
d79c143be3a7 planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/earth commit 4cbace8c3a71b7a1638cfd44a21f5d4b84d2fd15
ecology
parents:
diff changeset
29
d79c143be3a7 planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/earth commit 4cbace8c3a71b7a1638cfd44a21f5d4b84d2fd15
ecology
parents:
diff changeset
30
d79c143be3a7 planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/earth commit 4cbace8c3a71b7a1638cfd44a21f5d4b84d2fd15
ecology
parents:
diff changeset
31 def remap(raster, problem_numbers, alternative_numbers):
d79c143be3a7 planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/earth commit 4cbace8c3a71b7a1638cfd44a21f5d4b84d2fd15
ecology
parents:
diff changeset
32 n_min, n_max = raster.min(), raster.max()
d79c143be3a7 planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/earth commit 4cbace8c3a71b7a1638cfd44a21f5d4b84d2fd15
ecology
parents:
diff changeset
33 replacer = np.arange(n_min, n_max + 1)
d79c143be3a7 planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/earth commit 4cbace8c3a71b7a1638cfd44a21f5d4b84d2fd15
ecology
parents:
diff changeset
34 mask = (problem_numbers >= n_min) & (problem_numbers <= n_max)
d79c143be3a7 planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/earth commit 4cbace8c3a71b7a1638cfd44a21f5d4b84d2fd15
ecology
parents:
diff changeset
35 replacer[problem_numbers[mask] - n_min] = alternative_numbers[mask]
d79c143be3a7 planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/earth commit 4cbace8c3a71b7a1638cfd44a21f5d4b84d2fd15
ecology
parents:
diff changeset
36 raster_replaced = replacer[raster - n_min]
d79c143be3a7 planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/earth commit 4cbace8c3a71b7a1638cfd44a21f5d4b84d2fd15
ecology
parents:
diff changeset
37 return raster_replaced
d79c143be3a7 planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/earth commit 4cbace8c3a71b7a1638cfd44a21f5d4b84d2fd15
ecology
parents:
diff changeset
38
d79c143be3a7 planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/earth commit 4cbace8c3a71b7a1638cfd44a21f5d4b84d2fd15
ecology
parents:
diff changeset
39
d79c143be3a7 planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/earth commit 4cbace8c3a71b7a1638cfd44a21f5d4b84d2fd15
ecology
parents:
diff changeset
40 def saveRaster(dataset, datasetPath, cols, rows, projection, namedataset=None):
d79c143be3a7 planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/earth commit 4cbace8c3a71b7a1638cfd44a21f5d4b84d2fd15
ecology
parents:
diff changeset
41 if namedataset:
d79c143be3a7 planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/earth commit 4cbace8c3a71b7a1638cfd44a21f5d4b84d2fd15
ecology
parents:
diff changeset
42 rasterSet = rasterio.open(datasetPath,
d79c143be3a7 planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/earth commit 4cbace8c3a71b7a1638cfd44a21f5d4b84d2fd15
ecology
parents:
diff changeset
43 'w',
d79c143be3a7 planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/earth commit 4cbace8c3a71b7a1638cfd44a21f5d4b84d2fd15
ecology
parents:
diff changeset
44 driver='GTiff',
d79c143be3a7 planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/earth commit 4cbace8c3a71b7a1638cfd44a21f5d4b84d2fd15
ecology
parents:
diff changeset
45 height=rows,
d79c143be3a7 planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/earth commit 4cbace8c3a71b7a1638cfd44a21f5d4b84d2fd15
ecology
parents:
diff changeset
46 width=cols,
d79c143be3a7 planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/earth commit 4cbace8c3a71b7a1638cfd44a21f5d4b84d2fd15
ecology
parents:
diff changeset
47 count=1,
d79c143be3a7 planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/earth commit 4cbace8c3a71b7a1638cfd44a21f5d4b84d2fd15
ecology
parents:
diff changeset
48 dtype=np.int8,
d79c143be3a7 planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/earth commit 4cbace8c3a71b7a1638cfd44a21f5d4b84d2fd15
ecology
parents:
diff changeset
49 crs=projection,
d79c143be3a7 planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/earth commit 4cbace8c3a71b7a1638cfd44a21f5d4b84d2fd15
ecology
parents:
diff changeset
50 transform=transform, )
d79c143be3a7 planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/earth commit 4cbace8c3a71b7a1638cfd44a21f5d4b84d2fd15
ecology
parents:
diff changeset
51 rasterSet.write(dataset, 1)
d79c143be3a7 planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/earth commit 4cbace8c3a71b7a1638cfd44a21f5d4b84d2fd15
ecology
parents:
diff changeset
52 rasterSet.close()
d79c143be3a7 planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/earth commit 4cbace8c3a71b7a1638cfd44a21f5d4b84d2fd15
ecology
parents:
diff changeset
53 else:
d79c143be3a7 planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/earth commit 4cbace8c3a71b7a1638cfd44a21f5d4b84d2fd15
ecology
parents:
diff changeset
54 rasterSet = rasterio.open(datasetPath,
d79c143be3a7 planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/earth commit 4cbace8c3a71b7a1638cfd44a21f5d4b84d2fd15
ecology
parents:
diff changeset
55 'w',
d79c143be3a7 planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/earth commit 4cbace8c3a71b7a1638cfd44a21f5d4b84d2fd15
ecology
parents:
diff changeset
56 driver='GTiff',
d79c143be3a7 planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/earth commit 4cbace8c3a71b7a1638cfd44a21f5d4b84d2fd15
ecology
parents:
diff changeset
57 height=rows,
d79c143be3a7 planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/earth commit 4cbace8c3a71b7a1638cfd44a21f5d4b84d2fd15
ecology
parents:
diff changeset
58 width=cols,
d79c143be3a7 planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/earth commit 4cbace8c3a71b7a1638cfd44a21f5d4b84d2fd15
ecology
parents:
diff changeset
59 count=1,
d79c143be3a7 planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/earth commit 4cbace8c3a71b7a1638cfd44a21f5d4b84d2fd15
ecology
parents:
diff changeset
60 dtype=np.int8,
d79c143be3a7 planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/earth commit 4cbace8c3a71b7a1638cfd44a21f5d4b84d2fd15
ecology
parents:
diff changeset
61 crs=projection,
d79c143be3a7 planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/earth commit 4cbace8c3a71b7a1638cfd44a21f5d4b84d2fd15
ecology
parents:
diff changeset
62 transform=transform, )
d79c143be3a7 planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/earth commit 4cbace8c3a71b7a1638cfd44a21f5d4b84d2fd15
ecology
parents:
diff changeset
63 rasterSet.write(dataset, 1)
d79c143be3a7 planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/earth commit 4cbace8c3a71b7a1638cfd44a21f5d4b84d2fd15
ecology
parents:
diff changeset
64 rasterSet.set_band_description(1, namedataset)
d79c143be3a7 planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/earth commit 4cbace8c3a71b7a1638cfd44a21f5d4b84d2fd15
ecology
parents:
diff changeset
65 rasterSet.close()
d79c143be3a7 planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/earth commit 4cbace8c3a71b7a1638cfd44a21f5d4b84d2fd15
ecology
parents:
diff changeset
66
d79c143be3a7 planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/earth commit 4cbace8c3a71b7a1638cfd44a21f5d4b84d2fd15
ecology
parents:
diff changeset
67
d79c143be3a7 planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/earth commit 4cbace8c3a71b7a1638cfd44a21f5d4b84d2fd15
ecology
parents:
diff changeset
68 def plot(ndviImage, cmap):
d79c143be3a7 planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/earth commit 4cbace8c3a71b7a1638cfd44a21f5d4b84d2fd15
ecology
parents:
diff changeset
69 src = rasterio.open(ndviImage, 'r')
d79c143be3a7 planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/earth commit 4cbace8c3a71b7a1638cfd44a21f5d4b84d2fd15
ecology
parents:
diff changeset
70 fig, ax = plt.subplots(1, figsize=(12, 12))
d79c143be3a7 planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/earth commit 4cbace8c3a71b7a1638cfd44a21f5d4b84d2fd15
ecology
parents:
diff changeset
71 show(src, cmap=cmap, ax=ax)
d79c143be3a7 planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/earth commit 4cbace8c3a71b7a1638cfd44a21f5d4b84d2fd15
ecology
parents:
diff changeset
72 ax.set_xlabel('Est')
d79c143be3a7 planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/earth commit 4cbace8c3a71b7a1638cfd44a21f5d4b84d2fd15
ecology
parents:
diff changeset
73 ax.set_ylabel('Nord')
d79c143be3a7 planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/earth commit 4cbace8c3a71b7a1638cfd44a21f5d4b84d2fd15
ecology
parents:
diff changeset
74 plt.show()
d79c143be3a7 planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/earth commit 4cbace8c3a71b7a1638cfd44a21f5d4b84d2fd15
ecology
parents:
diff changeset
75
d79c143be3a7 planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/earth commit 4cbace8c3a71b7a1638cfd44a21f5d4b84d2fd15
ecology
parents:
diff changeset
76
d79c143be3a7 planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/earth commit 4cbace8c3a71b7a1638cfd44a21f5d4b84d2fd15
ecology
parents:
diff changeset
77 def plotContour(ndviImage, cmap):
d79c143be3a7 planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/earth commit 4cbace8c3a71b7a1638cfd44a21f5d4b84d2fd15
ecology
parents:
diff changeset
78 src = rasterio.open(ndviImage, 'r')
d79c143be3a7 planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/earth commit 4cbace8c3a71b7a1638cfd44a21f5d4b84d2fd15
ecology
parents:
diff changeset
79 fig, ax = plt.subplots(1, figsize=(12, 12))
d79c143be3a7 planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/earth commit 4cbace8c3a71b7a1638cfd44a21f5d4b84d2fd15
ecology
parents:
diff changeset
80 show(src, cmap=cmap, contour=True, ax=ax)
d79c143be3a7 planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/earth commit 4cbace8c3a71b7a1638cfd44a21f5d4b84d2fd15
ecology
parents:
diff changeset
81 ax.set_xlabel('Est')
d79c143be3a7 planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/earth commit 4cbace8c3a71b7a1638cfd44a21f5d4b84d2fd15
ecology
parents:
diff changeset
82 ax.set_ylabel('Nord')
d79c143be3a7 planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/earth commit 4cbace8c3a71b7a1638cfd44a21f5d4b84d2fd15
ecology
parents:
diff changeset
83 plt.show()
d79c143be3a7 planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/earth commit 4cbace8c3a71b7a1638cfd44a21f5d4b84d2fd15
ecology
parents:
diff changeset
84
d79c143be3a7 planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/earth commit 4cbace8c3a71b7a1638cfd44a21f5d4b84d2fd15
ecology
parents:
diff changeset
85
d79c143be3a7 planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/earth commit 4cbace8c3a71b7a1638cfd44a21f5d4b84d2fd15
ecology
parents:
diff changeset
86 # Setting inputs
d79c143be3a7 planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/earth commit 4cbace8c3a71b7a1638cfd44a21f5d4b84d2fd15
ecology
parents:
diff changeset
87 command_line_args = sys.argv[1:]
d79c143be3a7 planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/earth commit 4cbace8c3a71b7a1638cfd44a21f5d4b84d2fd15
ecology
parents:
diff changeset
88
d79c143be3a7 planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/earth commit 4cbace8c3a71b7a1638cfd44a21f5d4b84d2fd15
ecology
parents:
diff changeset
89
d79c143be3a7 planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/earth commit 4cbace8c3a71b7a1638cfd44a21f5d4b84d2fd15
ecology
parents:
diff changeset
90 parser = argparse.ArgumentParser(description="landcover inputs and outputs")
d79c143be3a7 planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/earth commit 4cbace8c3a71b7a1638cfd44a21f5d4b84d2fd15
ecology
parents:
diff changeset
91 # Add arguments
d79c143be3a7 planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/earth commit 4cbace8c3a71b7a1638cfd44a21f5d4b84d2fd15
ecology
parents:
diff changeset
92 parser.add_argument("--raster_1", help="raster 1")
d79c143be3a7 planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/earth commit 4cbace8c3a71b7a1638cfd44a21f5d4b84d2fd15
ecology
parents:
diff changeset
93 parser.add_argument("--raster_2", help="raster 2")
d79c143be3a7 planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/earth commit 4cbace8c3a71b7a1638cfd44a21f5d4b84d2fd15
ecology
parents:
diff changeset
94 parser.add_argument("--json", help="json")
d79c143be3a7 planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/earth commit 4cbace8c3a71b7a1638cfd44a21f5d4b84d2fd15
ecology
parents:
diff changeset
95
d79c143be3a7 planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/earth commit 4cbace8c3a71b7a1638cfd44a21f5d4b84d2fd15
ecology
parents:
diff changeset
96 args = parser.parse_args(command_line_args)
d79c143be3a7 planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/earth commit 4cbace8c3a71b7a1638cfd44a21f5d4b84d2fd15
ecology
parents:
diff changeset
97
d79c143be3a7 planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/earth commit 4cbace8c3a71b7a1638cfd44a21f5d4b84d2fd15
ecology
parents:
diff changeset
98 # Parse the command line arguments
d79c143be3a7 planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/earth commit 4cbace8c3a71b7a1638cfd44a21f5d4b84d2fd15
ecology
parents:
diff changeset
99
d79c143be3a7 planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/earth commit 4cbace8c3a71b7a1638cfd44a21f5d4b84d2fd15
ecology
parents:
diff changeset
100 # Import data
d79c143be3a7 planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/earth commit 4cbace8c3a71b7a1638cfd44a21f5d4b84d2fd15
ecology
parents:
diff changeset
101
d79c143be3a7 planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/earth commit 4cbace8c3a71b7a1638cfd44a21f5d4b84d2fd15
ecology
parents:
diff changeset
102 path_raster_yi = args.raster_1
d79c143be3a7 planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/earth commit 4cbace8c3a71b7a1638cfd44a21f5d4b84d2fd15
ecology
parents:
diff changeset
103 path_raster_yf = args.raster_2
d79c143be3a7 planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/earth commit 4cbace8c3a71b7a1638cfd44a21f5d4b84d2fd15
ecology
parents:
diff changeset
104 fjson = args.json
d79c143be3a7 planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/earth commit 4cbace8c3a71b7a1638cfd44a21f5d4b84d2fd15
ecology
parents:
diff changeset
105 # Input Rasters
d79c143be3a7 planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/earth commit 4cbace8c3a71b7a1638cfd44a21f5d4b84d2fd15
ecology
parents:
diff changeset
106
d79c143be3a7 planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/earth commit 4cbace8c3a71b7a1638cfd44a21f5d4b84d2fd15
ecology
parents:
diff changeset
107 # Outputs
d79c143be3a7 planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/earth commit 4cbace8c3a71b7a1638cfd44a21f5d4b84d2fd15
ecology
parents:
diff changeset
108 out_dir = os.path.join(os.getcwd(), "data/land_cover/output/")
d79c143be3a7 planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/earth commit 4cbace8c3a71b7a1638cfd44a21f5d4b84d2fd15
ecology
parents:
diff changeset
109 if not os.path.exists(out_dir):
d79c143be3a7 planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/earth commit 4cbace8c3a71b7a1638cfd44a21f5d4b84d2fd15
ecology
parents:
diff changeset
110 os.makedirs(out_dir)
d79c143be3a7 planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/earth commit 4cbace8c3a71b7a1638cfd44a21f5d4b84d2fd15
ecology
parents:
diff changeset
111
d79c143be3a7 planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/earth commit 4cbace8c3a71b7a1638cfd44a21f5d4b84d2fd15
ecology
parents:
diff changeset
112 # Output Rasters
d79c143be3a7 planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/earth commit 4cbace8c3a71b7a1638cfd44a21f5d4b84d2fd15
ecology
parents:
diff changeset
113 path_lc_tr = os.path.join(out_dir, 'lc_tr.tiff')
d79c143be3a7 planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/earth commit 4cbace8c3a71b7a1638cfd44a21f5d4b84d2fd15
ecology
parents:
diff changeset
114 path_lc_bl = os.path.join(out_dir, 'lc_bl.tiff')
d79c143be3a7 planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/earth commit 4cbace8c3a71b7a1638cfd44a21f5d4b84d2fd15
ecology
parents:
diff changeset
115 path_lc_dg = os.path.join(out_dir, 'lc_dg.tiff')
d79c143be3a7 planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/earth commit 4cbace8c3a71b7a1638cfd44a21f5d4b84d2fd15
ecology
parents:
diff changeset
116 path_lc_tg = os.path.join(out_dir, 'lc_tg.tiff')
d79c143be3a7 planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/earth commit 4cbace8c3a71b7a1638cfd44a21f5d4b84d2fd15
ecology
parents:
diff changeset
117 path_change_yf_yi = os.path.join(out_dir, 'change_yf_yi.tiff')
d79c143be3a7 planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/earth commit 4cbace8c3a71b7a1638cfd44a21f5d4b84d2fd15
ecology
parents:
diff changeset
118 path_lc_baseline_esa = os.path.join(out_dir, 'lc_baseline_esa.tiff')
d79c143be3a7 planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/earth commit 4cbace8c3a71b7a1638cfd44a21f5d4b84d2fd15
ecology
parents:
diff changeset
119 path_lc_target_esa = os.path.join(out_dir, 'lc_target_esa.tiff')
d79c143be3a7 planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/earth commit 4cbace8c3a71b7a1638cfd44a21f5d4b84d2fd15
ecology
parents:
diff changeset
120 path_out_img = os.path.join(out_dir, 'stack.tiff')
d79c143be3a7 planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/earth commit 4cbace8c3a71b7a1638cfd44a21f5d4b84d2fd15
ecology
parents:
diff changeset
121
d79c143be3a7 planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/earth commit 4cbace8c3a71b7a1638cfd44a21f5d4b84d2fd15
ecology
parents:
diff changeset
122 # Contours
d79c143be3a7 planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/earth commit 4cbace8c3a71b7a1638cfd44a21f5d4b84d2fd15
ecology
parents:
diff changeset
123 contours_change_yf_yi = os.path.join(out_dir, '/change_yf_yi0.shp')
d79c143be3a7 planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/earth commit 4cbace8c3a71b7a1638cfd44a21f5d4b84d2fd15
ecology
parents:
diff changeset
124
d79c143be3a7 planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/earth commit 4cbace8c3a71b7a1638cfd44a21f5d4b84d2fd15
ecology
parents:
diff changeset
125
d79c143be3a7 planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/earth commit 4cbace8c3a71b7a1638cfd44a21f5d4b84d2fd15
ecology
parents:
diff changeset
126 # Parsing Inputs
d79c143be3a7 planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/earth commit 4cbace8c3a71b7a1638cfd44a21f5d4b84d2fd15
ecology
parents:
diff changeset
127 # Load static inputs
d79c143be3a7 planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/earth commit 4cbace8c3a71b7a1638cfd44a21f5d4b84d2fd15
ecology
parents:
diff changeset
128 # Transition Matrix, ESA Legend, IPCC Legend
d79c143be3a7 planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/earth commit 4cbace8c3a71b7a1638cfd44a21f5d4b84d2fd15
ecology
parents:
diff changeset
129 # Input Raster and Vector Paths
d79c143be3a7 planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/earth commit 4cbace8c3a71b7a1638cfd44a21f5d4b84d2fd15
ecology
parents:
diff changeset
130 params = json.load(open(fjson))
d79c143be3a7 planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/earth commit 4cbace8c3a71b7a1638cfd44a21f5d4b84d2fd15
ecology
parents:
diff changeset
131
d79c143be3a7 planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/earth commit 4cbace8c3a71b7a1638cfd44a21f5d4b84d2fd15
ecology
parents:
diff changeset
132 crs = params.get("crs")
d79c143be3a7 planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/earth commit 4cbace8c3a71b7a1638cfd44a21f5d4b84d2fd15
ecology
parents:
diff changeset
133
d79c143be3a7 planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/earth commit 4cbace8c3a71b7a1638cfd44a21f5d4b84d2fd15
ecology
parents:
diff changeset
134 trans_matrix_val = params.get("trans_matrix")
d79c143be3a7 planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/earth commit 4cbace8c3a71b7a1638cfd44a21f5d4b84d2fd15
ecology
parents:
diff changeset
135 trans_matrix = LCTransitionDefinitionDeg.Schema().load(trans_matrix_val)
d79c143be3a7 planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/earth commit 4cbace8c3a71b7a1638cfd44a21f5d4b84d2fd15
ecology
parents:
diff changeset
136
d79c143be3a7 planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/earth commit 4cbace8c3a71b7a1638cfd44a21f5d4b84d2fd15
ecology
parents:
diff changeset
137 esa_to_custom_nesting = LCLegendNesting.Schema().load(
d79c143be3a7 planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/earth commit 4cbace8c3a71b7a1638cfd44a21f5d4b84d2fd15
ecology
parents:
diff changeset
138 params.get("legend_nesting_esa_to_custom")
d79c143be3a7 planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/earth commit 4cbace8c3a71b7a1638cfd44a21f5d4b84d2fd15
ecology
parents:
diff changeset
139 )
d79c143be3a7 planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/earth commit 4cbace8c3a71b7a1638cfd44a21f5d4b84d2fd15
ecology
parents:
diff changeset
140
d79c143be3a7 planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/earth commit 4cbace8c3a71b7a1638cfd44a21f5d4b84d2fd15
ecology
parents:
diff changeset
141 ipcc_nesting = LCLegendNesting.Schema().load(
d79c143be3a7 planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/earth commit 4cbace8c3a71b7a1638cfd44a21f5d4b84d2fd15
ecology
parents:
diff changeset
142 params.get("legend_nesting_custom_to_ipcc")
d79c143be3a7 planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/earth commit 4cbace8c3a71b7a1638cfd44a21f5d4b84d2fd15
ecology
parents:
diff changeset
143 )
d79c143be3a7 planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/earth commit 4cbace8c3a71b7a1638cfd44a21f5d4b84d2fd15
ecology
parents:
diff changeset
144
d79c143be3a7 planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/earth commit 4cbace8c3a71b7a1638cfd44a21f5d4b84d2fd15
ecology
parents:
diff changeset
145 class_codes = sorted([c.code for c in esa_to_custom_nesting.parent.key])
d79c143be3a7 planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/earth commit 4cbace8c3a71b7a1638cfd44a21f5d4b84d2fd15
ecology
parents:
diff changeset
146 class_positions = [*range(1, len(class_codes) + 1)]
d79c143be3a7 planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/earth commit 4cbace8c3a71b7a1638cfd44a21f5d4b84d2fd15
ecology
parents:
diff changeset
147
d79c143be3a7 planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/earth commit 4cbace8c3a71b7a1638cfd44a21f5d4b84d2fd15
ecology
parents:
diff changeset
148 # Load dynamic inputs
d79c143be3a7 planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/earth commit 4cbace8c3a71b7a1638cfd44a21f5d4b84d2fd15
ecology
parents:
diff changeset
149 # Baseline ESA Raster
d79c143be3a7 planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/earth commit 4cbace8c3a71b7a1638cfd44a21f5d4b84d2fd15
ecology
parents:
diff changeset
150 raster_yi = rasterio.open(path_raster_yi)
d79c143be3a7 planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/earth commit 4cbace8c3a71b7a1638cfd44a21f5d4b84d2fd15
ecology
parents:
diff changeset
151 lc_baseline_esa = raster_yi.read(1)
d79c143be3a7 planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/earth commit 4cbace8c3a71b7a1638cfd44a21f5d4b84d2fd15
ecology
parents:
diff changeset
152 yi_dict_profile = dict(raster_yi.profile)
d79c143be3a7 planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/earth commit 4cbace8c3a71b7a1638cfd44a21f5d4b84d2fd15
ecology
parents:
diff changeset
153
d79c143be3a7 planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/earth commit 4cbace8c3a71b7a1638cfd44a21f5d4b84d2fd15
ecology
parents:
diff changeset
154 for k in yi_dict_profile:
d79c143be3a7 planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/earth commit 4cbace8c3a71b7a1638cfd44a21f5d4b84d2fd15
ecology
parents:
diff changeset
155 print(k.upper(), yi_dict_profile[k])
d79c143be3a7 planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/earth commit 4cbace8c3a71b7a1638cfd44a21f5d4b84d2fd15
ecology
parents:
diff changeset
156
d79c143be3a7 planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/earth commit 4cbace8c3a71b7a1638cfd44a21f5d4b84d2fd15
ecology
parents:
diff changeset
157 # Target ESA Raster
d79c143be3a7 planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/earth commit 4cbace8c3a71b7a1638cfd44a21f5d4b84d2fd15
ecology
parents:
diff changeset
158 raster_yf = rasterio.open(path_raster_yf)
d79c143be3a7 planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/earth commit 4cbace8c3a71b7a1638cfd44a21f5d4b84d2fd15
ecology
parents:
diff changeset
159 lc_target_esa = raster_yf.read(1)
d79c143be3a7 planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/earth commit 4cbace8c3a71b7a1638cfd44a21f5d4b84d2fd15
ecology
parents:
diff changeset
160 yf_dict_profile = dict(raster_yf.profile)
d79c143be3a7 planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/earth commit 4cbace8c3a71b7a1638cfd44a21f5d4b84d2fd15
ecology
parents:
diff changeset
161
d79c143be3a7 planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/earth commit 4cbace8c3a71b7a1638cfd44a21f5d4b84d2fd15
ecology
parents:
diff changeset
162 for k in yf_dict_profile:
d79c143be3a7 planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/earth commit 4cbace8c3a71b7a1638cfd44a21f5d4b84d2fd15
ecology
parents:
diff changeset
163 print(k.upper(), yf_dict_profile[k])
d79c143be3a7 planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/earth commit 4cbace8c3a71b7a1638cfd44a21f5d4b84d2fd15
ecology
parents:
diff changeset
164
d79c143be3a7 planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/earth commit 4cbace8c3a71b7a1638cfd44a21f5d4b84d2fd15
ecology
parents:
diff changeset
165 cols = raster_yi.width
d79c143be3a7 planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/earth commit 4cbace8c3a71b7a1638cfd44a21f5d4b84d2fd15
ecology
parents:
diff changeset
166 rows = raster_yf.height
d79c143be3a7 planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/earth commit 4cbace8c3a71b7a1638cfd44a21f5d4b84d2fd15
ecology
parents:
diff changeset
167 transform = raster_yi.transform
d79c143be3a7 planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/earth commit 4cbace8c3a71b7a1638cfd44a21f5d4b84d2fd15
ecology
parents:
diff changeset
168 projection = raster_yi.crs
d79c143be3a7 planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/earth commit 4cbace8c3a71b7a1638cfd44a21f5d4b84d2fd15
ecology
parents:
diff changeset
169
d79c143be3a7 planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/earth commit 4cbace8c3a71b7a1638cfd44a21f5d4b84d2fd15
ecology
parents:
diff changeset
170 # Setting up output
d79c143be3a7 planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/earth commit 4cbace8c3a71b7a1638cfd44a21f5d4b84d2fd15
ecology
parents:
diff changeset
171 saveRaster(lc_baseline_esa.astype('int8'),
d79c143be3a7 planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/earth commit 4cbace8c3a71b7a1638cfd44a21f5d4b84d2fd15
ecology
parents:
diff changeset
172 path_lc_baseline_esa,
d79c143be3a7 planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/earth commit 4cbace8c3a71b7a1638cfd44a21f5d4b84d2fd15
ecology
parents:
diff changeset
173 cols,
d79c143be3a7 planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/earth commit 4cbace8c3a71b7a1638cfd44a21f5d4b84d2fd15
ecology
parents:
diff changeset
174 rows,
d79c143be3a7 planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/earth commit 4cbace8c3a71b7a1638cfd44a21f5d4b84d2fd15
ecology
parents:
diff changeset
175 projection,
d79c143be3a7 planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/earth commit 4cbace8c3a71b7a1638cfd44a21f5d4b84d2fd15
ecology
parents:
diff changeset
176 "Land_cover_yi")
d79c143be3a7 planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/earth commit 4cbace8c3a71b7a1638cfd44a21f5d4b84d2fd15
ecology
parents:
diff changeset
177
d79c143be3a7 planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/earth commit 4cbace8c3a71b7a1638cfd44a21f5d4b84d2fd15
ecology
parents:
diff changeset
178 saveRaster(lc_target_esa.astype('int8'),
d79c143be3a7 planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/earth commit 4cbace8c3a71b7a1638cfd44a21f5d4b84d2fd15
ecology
parents:
diff changeset
179 path_lc_target_esa,
d79c143be3a7 planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/earth commit 4cbace8c3a71b7a1638cfd44a21f5d4b84d2fd15
ecology
parents:
diff changeset
180 cols,
d79c143be3a7 planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/earth commit 4cbace8c3a71b7a1638cfd44a21f5d4b84d2fd15
ecology
parents:
diff changeset
181 rows,
d79c143be3a7 planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/earth commit 4cbace8c3a71b7a1638cfd44a21f5d4b84d2fd15
ecology
parents:
diff changeset
182 projection,
d79c143be3a7 planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/earth commit 4cbace8c3a71b7a1638cfd44a21f5d4b84d2fd15
ecology
parents:
diff changeset
183 "Land_cover_yf")
d79c143be3a7 planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/earth commit 4cbace8c3a71b7a1638cfd44a21f5d4b84d2fd15
ecology
parents:
diff changeset
184
d79c143be3a7 planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/earth commit 4cbace8c3a71b7a1638cfd44a21f5d4b84d2fd15
ecology
parents:
diff changeset
185 # Algorithm execution
d79c143be3a7 planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/earth commit 4cbace8c3a71b7a1638cfd44a21f5d4b84d2fd15
ecology
parents:
diff changeset
186 # Transition codes are based on the class code indices
d79c143be3a7 planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/earth commit 4cbace8c3a71b7a1638cfd44a21f5d4b84d2fd15
ecology
parents:
diff changeset
187 # (i.e. their order when sorted by class code) -
d79c143be3a7 planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/earth commit 4cbace8c3a71b7a1638cfd44a21f5d4b84d2fd15
ecology
parents:
diff changeset
188 # not the class codes themselves.
d79c143be3a7 planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/earth commit 4cbace8c3a71b7a1638cfd44a21f5d4b84d2fd15
ecology
parents:
diff changeset
189 # So need to reclass the land cover used for the transition calculations
d79c143be3a7 planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/earth commit 4cbace8c3a71b7a1638cfd44a21f5d4b84d2fd15
ecology
parents:
diff changeset
190 # from the raw class codes to the positional indices of those class codes.
d79c143be3a7 planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/earth commit 4cbace8c3a71b7a1638cfd44a21f5d4b84d2fd15
ecology
parents:
diff changeset
191 # And before doing that, need to reclassified initial and
d79c143be3a7 planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/earth commit 4cbace8c3a71b7a1638cfd44a21f5d4b84d2fd15
ecology
parents:
diff changeset
192 # final layers to the IPCC (or custom) classes.
d79c143be3a7 planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/earth commit 4cbace8c3a71b7a1638cfd44a21f5d4b84d2fd15
ecology
parents:
diff changeset
193
d79c143be3a7 planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/earth commit 4cbace8c3a71b7a1638cfd44a21f5d4b84d2fd15
ecology
parents:
diff changeset
194 # Processing baseline raster
d79c143be3a7 planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/earth commit 4cbace8c3a71b7a1638cfd44a21f5d4b84d2fd15
ecology
parents:
diff changeset
195 bl_remap_1 = remap(lc_baseline_esa,
d79c143be3a7 planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/earth commit 4cbace8c3a71b7a1638cfd44a21f5d4b84d2fd15
ecology
parents:
diff changeset
196 np.asarray(esa_to_custom_nesting.get_list()[0]),
d79c143be3a7 planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/earth commit 4cbace8c3a71b7a1638cfd44a21f5d4b84d2fd15
ecology
parents:
diff changeset
197 np.asarray(esa_to_custom_nesting.get_list()[1]))
d79c143be3a7 planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/earth commit 4cbace8c3a71b7a1638cfd44a21f5d4b84d2fd15
ecology
parents:
diff changeset
198 lc_bl = remap(bl_remap_1, np.asarray(class_codes), np.asarray(class_positions))
d79c143be3a7 planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/earth commit 4cbace8c3a71b7a1638cfd44a21f5d4b84d2fd15
ecology
parents:
diff changeset
199
d79c143be3a7 planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/earth commit 4cbace8c3a71b7a1638cfd44a21f5d4b84d2fd15
ecology
parents:
diff changeset
200 saveRaster(lc_bl.astype('int8'),
d79c143be3a7 planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/earth commit 4cbace8c3a71b7a1638cfd44a21f5d4b84d2fd15
ecology
parents:
diff changeset
201 path_lc_bl,
d79c143be3a7 planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/earth commit 4cbace8c3a71b7a1638cfd44a21f5d4b84d2fd15
ecology
parents:
diff changeset
202 cols,
d79c143be3a7 planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/earth commit 4cbace8c3a71b7a1638cfd44a21f5d4b84d2fd15
ecology
parents:
diff changeset
203 rows,
d79c143be3a7 planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/earth commit 4cbace8c3a71b7a1638cfd44a21f5d4b84d2fd15
ecology
parents:
diff changeset
204 projection,
d79c143be3a7 planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/earth commit 4cbace8c3a71b7a1638cfd44a21f5d4b84d2fd15
ecology
parents:
diff changeset
205 "Land_cover_yi")
d79c143be3a7 planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/earth commit 4cbace8c3a71b7a1638cfd44a21f5d4b84d2fd15
ecology
parents:
diff changeset
206
d79c143be3a7 planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/earth commit 4cbace8c3a71b7a1638cfd44a21f5d4b84d2fd15
ecology
parents:
diff changeset
207 # Processing Target Raster
d79c143be3a7 planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/earth commit 4cbace8c3a71b7a1638cfd44a21f5d4b84d2fd15
ecology
parents:
diff changeset
208 tg_remap_1 = remap(lc_target_esa,
d79c143be3a7 planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/earth commit 4cbace8c3a71b7a1638cfd44a21f5d4b84d2fd15
ecology
parents:
diff changeset
209 np.asarray(esa_to_custom_nesting.get_list()[0]),
d79c143be3a7 planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/earth commit 4cbace8c3a71b7a1638cfd44a21f5d4b84d2fd15
ecology
parents:
diff changeset
210 np.asarray(esa_to_custom_nesting.get_list()[1]))
d79c143be3a7 planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/earth commit 4cbace8c3a71b7a1638cfd44a21f5d4b84d2fd15
ecology
parents:
diff changeset
211 lc_tg = remap(tg_remap_1, np.asarray(class_codes), np.asarray(class_positions))
d79c143be3a7 planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/earth commit 4cbace8c3a71b7a1638cfd44a21f5d4b84d2fd15
ecology
parents:
diff changeset
212
d79c143be3a7 planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/earth commit 4cbace8c3a71b7a1638cfd44a21f5d4b84d2fd15
ecology
parents:
diff changeset
213 saveRaster(lc_tg.astype('int8'),
d79c143be3a7 planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/earth commit 4cbace8c3a71b7a1638cfd44a21f5d4b84d2fd15
ecology
parents:
diff changeset
214 path_lc_tg,
d79c143be3a7 planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/earth commit 4cbace8c3a71b7a1638cfd44a21f5d4b84d2fd15
ecology
parents:
diff changeset
215 cols,
d79c143be3a7 planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/earth commit 4cbace8c3a71b7a1638cfd44a21f5d4b84d2fd15
ecology
parents:
diff changeset
216 rows,
d79c143be3a7 planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/earth commit 4cbace8c3a71b7a1638cfd44a21f5d4b84d2fd15
ecology
parents:
diff changeset
217 projection,
d79c143be3a7 planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/earth commit 4cbace8c3a71b7a1638cfd44a21f5d4b84d2fd15
ecology
parents:
diff changeset
218 "Land_cover_yf")
d79c143be3a7 planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/earth commit 4cbace8c3a71b7a1638cfd44a21f5d4b84d2fd15
ecology
parents:
diff changeset
219
d79c143be3a7 planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/earth commit 4cbace8c3a71b7a1638cfd44a21f5d4b84d2fd15
ecology
parents:
diff changeset
220 # Processing Transition Map
d79c143be3a7 planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/earth commit 4cbace8c3a71b7a1638cfd44a21f5d4b84d2fd15
ecology
parents:
diff changeset
221 # Compute transition map (first digit for baseline land cover,
d79c143be3a7 planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/earth commit 4cbace8c3a71b7a1638cfd44a21f5d4b84d2fd15
ecology
parents:
diff changeset
222 # and second digit for target year land cover)
d79c143be3a7 planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/earth commit 4cbace8c3a71b7a1638cfd44a21f5d4b84d2fd15
ecology
parents:
diff changeset
223 lc_tr = (lc_bl * esa_to_custom_nesting.parent.get_multiplier()) + lc_tg
d79c143be3a7 planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/earth commit 4cbace8c3a71b7a1638cfd44a21f5d4b84d2fd15
ecology
parents:
diff changeset
224
d79c143be3a7 planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/earth commit 4cbace8c3a71b7a1638cfd44a21f5d4b84d2fd15
ecology
parents:
diff changeset
225 # Compute land cover transition
d79c143be3a7 planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/earth commit 4cbace8c3a71b7a1638cfd44a21f5d4b84d2fd15
ecology
parents:
diff changeset
226 # Remap persistence classes so they are sequential.
d79c143be3a7 planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/earth commit 4cbace8c3a71b7a1638cfd44a21f5d4b84d2fd15
ecology
parents:
diff changeset
227 # This makes it easier to assign a clear color ramp in QGIS.
d79c143be3a7 planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/earth commit 4cbace8c3a71b7a1638cfd44a21f5d4b84d2fd15
ecology
parents:
diff changeset
228 lc_tr_pre_remap = remap(lc_tr,
d79c143be3a7 planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/earth commit 4cbace8c3a71b7a1638cfd44a21f5d4b84d2fd15
ecology
parents:
diff changeset
229 np.asarray(trans_matrix.get_persistence_list()[0]),
d79c143be3a7 planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/earth commit 4cbace8c3a71b7a1638cfd44a21f5d4b84d2fd15
ecology
parents:
diff changeset
230 np.asarray(trans_matrix.get_persistence_list()[1]))
d79c143be3a7 planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/earth commit 4cbace8c3a71b7a1638cfd44a21f5d4b84d2fd15
ecology
parents:
diff changeset
231
d79c143be3a7 planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/earth commit 4cbace8c3a71b7a1638cfd44a21f5d4b84d2fd15
ecology
parents:
diff changeset
232 saveRaster(lc_tr_pre_remap.astype('int8'),
d79c143be3a7 planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/earth commit 4cbace8c3a71b7a1638cfd44a21f5d4b84d2fd15
ecology
parents:
diff changeset
233 path_lc_tr,
d79c143be3a7 planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/earth commit 4cbace8c3a71b7a1638cfd44a21f5d4b84d2fd15
ecology
parents:
diff changeset
234 cols,
d79c143be3a7 planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/earth commit 4cbace8c3a71b7a1638cfd44a21f5d4b84d2fd15
ecology
parents:
diff changeset
235 rows,
d79c143be3a7 planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/earth commit 4cbace8c3a71b7a1638cfd44a21f5d4b84d2fd15
ecology
parents:
diff changeset
236 projection,
d79c143be3a7 planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/earth commit 4cbace8c3a71b7a1638cfd44a21f5d4b84d2fd15
ecology
parents:
diff changeset
237 "Land_cover_transitions_yi-yf")
d79c143be3a7 planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/earth commit 4cbace8c3a71b7a1638cfd44a21f5d4b84d2fd15
ecology
parents:
diff changeset
238
d79c143be3a7 planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/earth commit 4cbace8c3a71b7a1638cfd44a21f5d4b84d2fd15
ecology
parents:
diff changeset
239 # Compute land cover degradation
d79c143be3a7 planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/earth commit 4cbace8c3a71b7a1638cfd44a21f5d4b84d2fd15
ecology
parents:
diff changeset
240 # definition of land cover transitions as degradation (-1),
d79c143be3a7 planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/earth commit 4cbace8c3a71b7a1638cfd44a21f5d4b84d2fd15
ecology
parents:
diff changeset
241 # improvement (1), or no relevant change (0)
d79c143be3a7 planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/earth commit 4cbace8c3a71b7a1638cfd44a21f5d4b84d2fd15
ecology
parents:
diff changeset
242 lc_dg = remap(lc_tr,
d79c143be3a7 planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/earth commit 4cbace8c3a71b7a1638cfd44a21f5d4b84d2fd15
ecology
parents:
diff changeset
243 np.asarray(trans_matrix.get_list()[0]),
d79c143be3a7 planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/earth commit 4cbace8c3a71b7a1638cfd44a21f5d4b84d2fd15
ecology
parents:
diff changeset
244 np.asarray(trans_matrix.get_list()[1]))
d79c143be3a7 planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/earth commit 4cbace8c3a71b7a1638cfd44a21f5d4b84d2fd15
ecology
parents:
diff changeset
245
d79c143be3a7 planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/earth commit 4cbace8c3a71b7a1638cfd44a21f5d4b84d2fd15
ecology
parents:
diff changeset
246 saveRaster(lc_dg.astype('int8'),
d79c143be3a7 planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/earth commit 4cbace8c3a71b7a1638cfd44a21f5d4b84d2fd15
ecology
parents:
diff changeset
247 path_lc_dg,
d79c143be3a7 planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/earth commit 4cbace8c3a71b7a1638cfd44a21f5d4b84d2fd15
ecology
parents:
diff changeset
248 cols,
d79c143be3a7 planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/earth commit 4cbace8c3a71b7a1638cfd44a21f5d4b84d2fd15
ecology
parents:
diff changeset
249 rows,
d79c143be3a7 planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/earth commit 4cbace8c3a71b7a1638cfd44a21f5d4b84d2fd15
ecology
parents:
diff changeset
250 projection,
d79c143be3a7 planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/earth commit 4cbace8c3a71b7a1638cfd44a21f5d4b84d2fd15
ecology
parents:
diff changeset
251 "Land_cover_degradation")
d79c143be3a7 planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/earth commit 4cbace8c3a71b7a1638cfd44a21f5d4b84d2fd15
ecology
parents:
diff changeset
252
d79c143be3a7 planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/earth commit 4cbace8c3a71b7a1638cfd44a21f5d4b84d2fd15
ecology
parents:
diff changeset
253 # Compute Mutlibands stack
d79c143be3a7 planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/earth commit 4cbace8c3a71b7a1638cfd44a21f5d4b84d2fd15
ecology
parents:
diff changeset
254 # Land Cover Degradation + Baseline ESA
d79c143be3a7 planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/earth commit 4cbace8c3a71b7a1638cfd44a21f5d4b84d2fd15
ecology
parents:
diff changeset
255 # + Target ESA + Land Cover Transition
d79c143be3a7 planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/earth commit 4cbace8c3a71b7a1638cfd44a21f5d4b84d2fd15
ecology
parents:
diff changeset
256 dg_raster = rasterio.open(path_lc_dg, "r")
d79c143be3a7 planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/earth commit 4cbace8c3a71b7a1638cfd44a21f5d4b84d2fd15
ecology
parents:
diff changeset
257 dg = dg_raster.read(1, masked=True)
d79c143be3a7 planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/earth commit 4cbace8c3a71b7a1638cfd44a21f5d4b84d2fd15
ecology
parents:
diff changeset
258 baseline_esa = rasterio.open(path_lc_baseline_esa, "r").read(1, masked=True)
d79c143be3a7 planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/earth commit 4cbace8c3a71b7a1638cfd44a21f5d4b84d2fd15
ecology
parents:
diff changeset
259 target_esa = rasterio.open(path_lc_target_esa, "r").read(1, masked=True)
d79c143be3a7 planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/earth commit 4cbace8c3a71b7a1638cfd44a21f5d4b84d2fd15
ecology
parents:
diff changeset
260 tr = rasterio.open(path_lc_tr, "r").read(1, masked=True)
d79c143be3a7 planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/earth commit 4cbace8c3a71b7a1638cfd44a21f5d4b84d2fd15
ecology
parents:
diff changeset
261
d79c143be3a7 planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/earth commit 4cbace8c3a71b7a1638cfd44a21f5d4b84d2fd15
ecology
parents:
diff changeset
262 band_list = [dg, lc_baseline_esa, lc_target_esa, tr]
d79c143be3a7 planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/earth commit 4cbace8c3a71b7a1638cfd44a21f5d4b84d2fd15
ecology
parents:
diff changeset
263 out_meta = dg_raster.meta.copy()
d79c143be3a7 planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/earth commit 4cbace8c3a71b7a1638cfd44a21f5d4b84d2fd15
ecology
parents:
diff changeset
264 out_meta.update({"count": 4})
d79c143be3a7 planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/earth commit 4cbace8c3a71b7a1638cfd44a21f5d4b84d2fd15
ecology
parents:
diff changeset
265
d79c143be3a7 planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/earth commit 4cbace8c3a71b7a1638cfd44a21f5d4b84d2fd15
ecology
parents:
diff changeset
266 with rasterio.open(path_out_img, 'w', **out_meta) as dest:
d79c143be3a7 planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/earth commit 4cbace8c3a71b7a1638cfd44a21f5d4b84d2fd15
ecology
parents:
diff changeset
267 for band_nr, src in enumerate(band_list, start=1):
d79c143be3a7 planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/earth commit 4cbace8c3a71b7a1638cfd44a21f5d4b84d2fd15
ecology
parents:
diff changeset
268 dest.write(src, band_nr)