forked from edinburgh-university-OOSA/active_sensing
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Batch scripts updated and gridding script completed.
- Loading branch information
Showing
4 changed files
with
164 additions
and
1 deletion.
There are no files selected for viewing
Binary file not shown.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,69 @@ | ||
#!/bin/bash -f | ||
|
||
|
||
################# | ||
# Batch process # | ||
# GEDI data # | ||
################# | ||
|
||
|
||
# defaults | ||
output="allBiomass.txt" | ||
bin="/geos/netdata/avtrain/data/3d/active_sensing/week10/active_sensing" | ||
|
||
# Read the command line | ||
while [[ $# -gt 0 ]] | ||
do | ||
key="$1" | ||
case $key in | ||
-inDir) | ||
inDir="$2" | ||
shift;shift | ||
;; | ||
-output) | ||
output="$2" | ||
shift;shift | ||
;; | ||
-help) | ||
echo " " | ||
echo "Batch processing of GEDI biomass" | ||
echo " " | ||
echo "-inDir name; directory name to process all HDF5 files within" | ||
echo "-output name; output filename" | ||
echo " " | ||
exit | ||
;; | ||
*) | ||
echo $"Unrecognised option: $key" | ||
exit 1 | ||
esac | ||
done # command line reader | ||
|
||
|
||
# if a directory specified, read directory | ||
list="/tmp/gedoToProcess.$$.txt" | ||
pushd $inDir/ | ||
ls -l|grep ".metric.txt"|gawk '{printf("%s/%s\n",dir,$NF)}' dir="$inDir" > $list | ||
popd | ||
|
||
# clear old output | ||
if [ -e $output ];then | ||
rm $output | ||
fi | ||
|
||
# loop over input files | ||
temp="/tmp/workSpace.biomass.$$.txt" | ||
while read inName; do | ||
|
||
python3 $bin/predictBiomass.py --input $inName --outpout $temp | ||
cat $temp >> $output | ||
|
||
if [ -e $temp ];then | ||
rm $temp | ||
fi | ||
done < $list | ||
|
||
if [ -e $list ];then | ||
rm $list | ||
fi | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,94 @@ | ||
|
||
''' | ||
Grids biomass estimates | ||
''' | ||
|
||
############################################# | ||
import numpy as np | ||
import argparse | ||
import scipy.stats as stats | ||
|
||
|
||
############################################# | ||
|
||
class gediBiomass(object): | ||
'''Class to hold GEDI biomass estimates''' | ||
|
||
################################# | ||
|
||
def __init__(self,filename): | ||
'''Read footprint level file''' | ||
self.lon,self.lat,self.agbd=np.loadtxt=np.loadtxt(filename,usecols=(0,1,2),unpack=True, dtype=float,comments='#') | ||
|
||
|
||
################################# | ||
|
||
def gridAGBDmean(self,res,outName): | ||
'''Grid AGBD estimates by simple mean''' | ||
# determine number of cells | ||
minX=np.min(self.lon) | ||
maxX=np.max(self.lon) | ||
minY=np.min(self.lat) | ||
maxY=np.max(self.lat) | ||
nX=int((maxX-minX)/res+1) | ||
nY=int((maxY-minY)/res+1) | ||
# grid up | ||
meanAGBD,x0,y0,binnumber=stats.binned_statistic_2d(self.lon,self.lat,values=self.agbd,statistic='mean',bins=[np.arange(nX), np.arange(nY)]) | ||
# write header | ||
f=open(outName,'w') | ||
noData=-9999 | ||
header="NCOLS"+str(nX)+"\n" | ||
header=header+"NROWS"+str(nY)+"\n" | ||
header=header+"XLLCENTER"+str(minX)+"\n" | ||
header=header+"YLLCENTER"+str(minY)+"\n" | ||
header=header+"CELLSIZE"+str(res)+"\n" | ||
header=header+"NODATA_VALUE"+str(noData)+"\n" | ||
f.write(header) | ||
# remove nan | ||
meanAGBD[np.isnan(meanAGBD)]=noData | ||
# write data | ||
for j in range(nY-1,-1,-1): | ||
line="" | ||
for x in meanAGBD[j]: | ||
line=line+str(x)+" " | ||
line=line+"\n" | ||
f.write(line) | ||
f.close() | ||
print("Written to",outName) | ||
|
||
|
||
# end of gediBiomass | ||
############################################# | ||
|
||
|
||
########################################### | ||
# read the command line | ||
|
||
def gediCommands(): | ||
''' | ||
Read commandline arguments | ||
''' | ||
p = argparse.ArgumentParser(description=("Writes out properties of GEDI waveform files")) | ||
p.add_argument("--input",dest="inName",type=str,help=("Input GEDI metric filename")) | ||
p.add_argument("--output",dest="output",type=str,default='test.asc',help=("Output graph filename")) | ||
p.add_argument("--res",dest="res",type=float,default=100,help=("Output resolution")) | ||
cmdargs = p.parse_args() | ||
return cmdargs | ||
|
||
|
||
########################################### | ||
# the main block | ||
|
||
if __name__ == '__main__': | ||
# read the command line | ||
cmdargs=gediCommands() | ||
inName=cmdargs.inName | ||
output=cmdargs.output | ||
res=cmdargs.res | ||
|
||
# read data | ||
agbd=gediBiomass(inName) | ||
|
||
# grid data and write output | ||
agbd.gridAGBDmean(res,output) | ||
|