setFillValue subroutine

Set a Fill Value from a mask data in an array.

How to use

subroutine setFillValue(mask, idata[, num])
Parameters:
  • idata :: map to be masked [FPL defined type structure]
  • mask :: mask [FPL defined type structure]
  • num [optional] :: Parameter filtering according to mask
Call :

setFillValue(mask,map[,num])

[Code example] Masks a NetCDF dataset

Masks the 23 years of brazilian cattle productivity by Minas Gerais State.

program main
  use fpl
  implicit none

  !Structure declarations for CATTLE19902012.nc (3d dataset)
  !variable type: double
  !longitude and latitude type: double
  !time type: integer

  !Related article and original data download
  !Dias, L.C.P., Pimenta, F.M., Santos, A.B., Costa, M.H., Ladle, R.J. (2016). 
  !Patterns of land use, extensification and intensification of Brazilian agriculture. 
  !Global Change Biology. doi:10.1111/gcb.13314
  !http://onlinelibrary.wiley.com/doi/10.1111/gcb.13314/ful

  !Download: http://www.biosfera.dea.ufv.br/en-US/bancos
 
  !Stocking rate of cattle are in heads per hectare (head/ha)
  type(nc3d_double_lld_ti) :: cattle

  !Structure declarations for brazil_UF.nc (2d dataset)
  !variable type: byte
  !longitude and latitude datatype: double

  !Brazilian UF data
  type(nc2d_byte_lld) :: maskara

  !Auxiliary variables for time calculation
  real*4 :: start_time, end_time
  
  character(200) :: inputpath, outputpath, maskfile

  inputpath = "database/CATTLE19902012.nc"
  maskfile = "database/brazil_UF.nc"
  outputpath = "database/cattle19902012_mask.nc"
  
  cattle%varname = "Cattle"
  cattle%timename = "time"
  cattle%lonname = "lon"
  cattle%latname = "lat"
 
  maskara%varname = "UF"
  maskara%lonname = "lon"
  maskara%latname = "lat"
 
  write(*,*)"Readind data" 
  call readgrid(maskfile, maskara)                               !Read states data
  
  write(*,*)"Reading mask"
  call readgrid(inputpath, cattle)                               !Read cattle data

  write(*,*)"Setting FillValue"
  call setfvalue3d_bytedouble_lld_ti(maskara, cattle, 18)        !Masks the cattle data where the state map is equal to 18 (Brazil-MG).

  write(*,*) "Writing data"
  call writegrid(outputpath, cattle)                             !Saves the masked data

end program main
#RedHat based systems
gfortran -o setFillValue.out setFillValue.f90 -I/usr/lib64/gfortran/modules/ -lFPL

#Debian based systems
gfortran -o setFillValue.out setFillValue.f90 -I/usr/include/ -lFPL

Important

-I<dir> This option specifies where to put .mod files for compiled modules. It is also added to the list of directories to Influencing the linking step. See the GNU Fortran Compiler Documentation .

<dir> is defined in Makefile as $(FPL_moddir). See Build Library.

After compilation run the program ./setFillValue.out