adamhsparks/fifo
1
1
Fork
You've already forked fifo
0
'Fly in fly out' to Mine Your Valuable Data and Extract What You Need from Your Australian Georeferenced Datasets https://adamhsparks.codeberg.page/fifo
  • R 100%
2026年06月09日 20:33:40 +08:00
.woodpecker add CI config yaml file 2025年08月12日 12:58:52 +08:00
inst grammar, wordlist updates 2025年11月24日 16:34:50 +08:00
man chore: update documentation 2026年06月09日 17:24:47 +08:00
pkgdown update documentation to reflect new functionality accepting sf objects 2025年11月24日 16:32:17 +08:00
R chore: redocument package 2026年06月09日 20:33:35 +08:00
tests feat: unquote names 2026年06月09日 17:25:04 +08:00
vignettes update vignette 2025年11月29日 12:03:18 +08:00
.gitattributes better testing 2024年11月19日 08:38:42 +08:00
.gitignore use precompiled vignette to avoid issues with API keys 2025年05月06日 10:17:05 +08:00
.Rbuildignore chore: update .rbuildignore 2026年06月09日 17:24:06 +08:00
air.toml format with Air and desc::desc_normalise() 2025年03月03日 14:48:55 +08:00
CODE_OF_CONDUCT.md Update CoC 2024年12月08日 17:33:54 +08:00
codemeta.json chore: update codemeta.json 2026年06月09日 20:33:40 +08:00
CONTRIBUTING.md tidy contributing.md 2025年07月11日 14:02:16 +08:00
DESCRIPTION chore: increment version number 2026年05月28日 10:54:59 +08:00
LICENSE.md add license.md 2024年11月18日 18:45:40 +08:00
NAMESPACE debug, passes R checks now 2025年11月28日 16:52:47 +08:00
NEWS.md chore: update NEWS.md 2026年05月28日 10:55:05 +08:00
README.md specify can use {sf} objects 2025年11月28日 11:23:02 +08:00
README.Rmd specify can use {sf} objects 2025年11月28日 11:23:02 +08:00

title output
github_document

{fifo}: 'Fly in, fly out' to extract the valuable data you need from your georeferenced datasets for Australia

Project Status: Active – The project has reached a stable, usable state and is being actively developed.

About {fifo}

{fifo} is a re-imagined fork of {extractOz} that is under active development providing a unified interface to extract data from georeferenced Australian data sets using GPS points, i.e., latitude and longitude coordinates, that include all the data that the original {extractOz} supports and more:

  • Australian Agricultural and Grazing Industries Survey (AAGIS) regions via {read.abares};
  • Australian topsoil layer 1 thickness via {read.abares};
  • Grains Research and Development Corporation (GRDC) Agroecoregions via this package;
  • Australia's Terrestrial Ecosystem Research Network (TERN) data including:
    • Soil Moisture (SMIPS) via {nert};
    • Australian Soil Class (ASC) via {nert};
  • Digital Atlas of Australian Soils via this package;
  • Queensland's Scientific Information for Land Owners (SILO) weather data including:
    • SILO's Data Drill 5km x 5km gridded weather data via {weatherOz};
    • SILO's Patched Point station-based weather data via {weatherOz};
  • Your own geospatial data layer.

{fifo} is named after a work arrangement commonly used in Australian mining where an employer will temporarily transport employees to a work location or site of work, typically a mine, and transport them back for a period of rest.

Differences With {extractOz}

{fifo}

  • uses xy rather than x as the primary function argument to provide the geo-locations of interest;
  • uses locations rather than names to denote the named geo-locations of the paired lon lat values to avoid confusion with base R functionality;
  • provides access to TERN data ({extractOz} does not);
  • provides access to ABARES data ({extractOz} does not); and
  • allows direct use of data.frame, including {sf}, objects for extraction rather than requiring a list of lon and lat values;
  • has stricter checks of user-inputs that use {cli} and {rlang} for clearer and more informative messages for users about what went wrong;
  • removes the ability to crop DAAS soil order by the GRDC Agroecozones; and
  • has comprehensive test coverage, >98% of the package is covered.

Quick Start

Installation

The preferred method is to install through R-Universe like so:

# Enable this universe
options(repos = c(
 adamhsparks = "https://adamhsparks.r-universe.dev",
 CRAN = "https://cloud.r-project.org"))
# Install
install.packages("fifo")

Load the packages necessary to execute the examples that follow.

library(fifo)
library(dplyr)

Using {fifo}

Create Locations in WA and NSW

locs <- list(
 "Merredin" = c(x = 118.28, y = -31.48),
 "Corrigin" = c(x = 117.87, y = -32.33),
 "Tamworth" = c(x = 150.84, y = -31.07)
)

Extract the GRDC AgroEcological Zones

See the help for extract_ae_zone for more help on how to use this function.

z <- extract_ae_zone(xy = locs)

Extract the Soil Order

See the help for extract_soil_order for more help on how to use this function.

s <- extract_daas_soil_order(xy = locs)
## Reading layer `soilAtlas2M_ASC_Conversion' from data source 
## `/vsizip///var/folders/r4/wwsd3hsn48j5gck6qv6npkpc0000gr/T//RtmpPUk87X/6f804e8b-2de9-4c88-adfa-918ec327c32f.zip/SoilAtlas2M_ASC_Conversion_v01/soilAtlas2M_ASC_Conversion.shp' 
## using driver `ESRI Shapefile'
## Simple feature collection with 22584 features and 7 fields
## Geometry type: POLYGON
## Dimension: XY
## Bounding box: xmin: 112.8959 ymin: -43.63287 xmax: 153.6362 ymax: -10.49096
## Geodetic CRS: GDA94

Get Weather Data for These Locations in 2020

Using the previously used list of GPS points, fetch weather data from SILO for 2020. This example uses a locally-stored API key found in the .Renviron file. See the help for extract_patched_point for more help on how to use this function.

three_sites <-
 extract_patched_point(
 xy = locs,
 start_date = "20200101",
 end_date = "20201231",
 api_key = Sys.getenv("SILO_API_KEY")
 )
## You have requested station observation data but some rows in this
## dataset have data codes for interpolated data.
## Check the 'data_source' columns and `get_patched_point()` or
## `get_data_drill()` documentation for further details on codes and
## references.
## 
## You have requested station observation data but some rows in this
## dataset have data codes for interpolated data.
## Check the 'data_source' columns and `get_patched_point()` or
## `get_data_drill()` documentation for further details on codes and
## references.

Join the Weather Data with AE Zone, Soil Order and Site Information

Now using dplyr::left_join, create a single data.frame of the location, GPS coordinates, agroecological zone and weather data.

left_join(z, three_sites, by = c(
 "location" = "location",
 "x" = "x",
 "y" = "y"
)) %>%
 left_join(s)
## Joining with `by = join_by(location, x, y)`
## location x y ae_zone station_code station_name
## <char> <num> <num> <char> <char> <char>
## 1: Corrigin 117.87 -32.33 WA Central 010536 Corrigin
## 2: Corrigin 117.87 -32.33 WA Central 010536 Corrigin
## 3: Corrigin 117.87 -32.33 WA Central 010536 Corrigin
## 4: Corrigin 117.87 -32.33 WA Central 010536 Corrigin
## 5: Corrigin 117.87 -32.33 WA Central 010536 Corrigin
## --- 
## 1094: Tamworth 150.84 -31.07 NSW NE/Qld SE 055325 Tamworth Airport AWS
## 1095: Tamworth 150.84 -31.07 NSW NE/Qld SE 055325 Tamworth Airport AWS
## 1096: Tamworth 150.84 -31.07 NSW NE/Qld SE 055325 Tamworth Airport AWS
## 1097: Tamworth 150.84 -31.07 NSW NE/Qld SE 055325 Tamworth Airport AWS
## 1098: Tamworth 150.84 -31.07 NSW NE/Qld SE 055325 Tamworth Airport AWS
## distance year day date air_tmax air_tmax_source air_tmin
## <num> <num> <int> <Date> <num> <int> <num>
## 1: 0.3 2020 1 2020年01月01日 37.4 25 15.3
## 2: 0.3 2020 2 2020年01月02日 23.0 0 16.0
## 3: 0.3 2020 3 2020年01月03日 26.0 0 12.5
## 4: 0.3 2020 4 2020年01月04日 34.0 0 8.0
## 5: 0.3 2020 5 2020年01月05日 38.0 0 12.0
## --- 
## 1094: 0.6 2020 27 2020年12月27日 29.8 0 15.0
## 1095: 0.6 2020 28 2020年12月28日 26.8 0 18.3
## 1096: 0.6 2020 29 2020年12月29日 28.9 0 17.5
## 1097: 0.6 2020 30 2020年12月30日 29.4 0 14.9
## 1098: 0.6 2020 31 2020年12月31日 30.0 0 16.1
## air_tmin_source elev_m et_morton_actual et_morton_actual_source
## <int> <char> <num> <int>
## 1: 25 295.0 m 3.3 26
## 2: 25 295.0 m 6.4 26
## 3: 0 295.0 m 3.4 26
## 4: 0 295.0 m 4.6 26
## 5: 0 295.0 m 7.4 26
## --- 
## 1094: 0 394.9 m 5.5 26
## 1095: 0 394.9 m 4.1 26
## 1096: 0 394.9 m 2.6 26
## 1097: 0 394.9 m 6.6 26
## 1098: 0 394.9 m 6.2 26
## et_morton_potential et_morton_potential_source et_morton_wet
## <num> <int> <num>
## 1: 11.0 26 7.2
## 2: 6.4 26 6.4
## 3: 7.3 26 5.4
## 4: 8.4 26 6.5
## 5: 8.8 26 8.1
## --- 
## 1094: 6.9 26 6.2
## 1095: 4.9 26 4.5
## 1096: 5.3 26 3.9
## 1097: 6.6 26 6.6
## 1098: 8.1 26 7.1
## et_morton_wet_source et_short_crop et_short_crop_source et_tall_crop
## <int> <num> <int> <num>
## 1: 26 8.0 26 10.4
## 2: 26 4.4 26 4.7
## 3: 26 5.4 26 6.7
## 4: 26 7.0 26 8.9
## 5: 26 7.3 26 9.0
## --- 
## 1094: 26 5.3 26 6.3
## 1095: 26 3.5 26 4.2
## 1096: 26 3.8 26 4.8
## 1097: 26 5.2 26 5.9
## 1098: 26 6.0 26 7.1
## et_tall_crop_source evap_comb evap_comb_source evap_morton_lake
## <int> <num> <int> <num>
## 1: 26 9.5 25 8.1
## 2: 26 10.4 0 6.6
## 3: 26 8.0 0 6.2
## 4: 26 8.0 0 7.5
## 5: 26 10.6 0 8.4
## --- 
## 1094: 26 5.5 25 6.3
## 1095: 26 3.6 25 4.5
## 1096: 26 2.6 25 4.0
## 1097: 26 4.3 25 6.8
## 1098: 26 5.0 25 7.3
## evap_morton_lake_source evap_pan evap_pan_source evap_syn evap_syn_source
## <int> <num> <int> <num> <int>
## 1: 26 9.5 25 11.1 26
## 2: 26 10.4 0 7.2 26
## 3: 26 8.0 0 8.3 26
## 4: 26 8.0 0 10.1 26
## 5: 26 10.6 0 10.4 26
## --- 
## 1094: 26 5.5 25 6.7 26
## 1095: 26 3.6 25 4.5 26
## 1096: 26 2.6 25 5.1 26
## 1097: 26 4.3 25 6.5 26
## 1098: 26 5.0 25 7.5 26
## extracted station_y station_x mslp mslp_source radiation
## <Date> <num> <num> <num> <int> <num>
## 1: 2025年11月27日 -32.3292 117.8733 1012.7 25 31.0
## 2: 2025年11月27日 -32.3292 117.8733 1010.8 0 27.1
## 3: 2025年11月27日 -32.3292 117.8733 1017.2 0 26.8
## 4: 2025年11月27日 -32.3292 117.8733 1020.9 0 30.9
## 5: 2025年11月27日 -32.3292 117.8733 1015.9 0 30.8
## --- 
## 1094: 2025年11月27日 -31.0742 150.8362 1015.7 0 24.9
## 1095: 2025年11月27日 -31.0742 150.8362 1012.7 0 15.7
## 1096: 2025年11月27日 -31.0742 150.8362 1011.4 0 14.0
## 1097: 2025年11月27日 -31.0742 150.8362 1014.2 0 26.4
## 1098: 2025年11月27日 -31.0742 150.8362 1015.8 0 28.7
## radiation_source rainfall rainfall_source rh_tmax rh_tmax_source rh_tmin
## <int> <num> <int> <num> <int> <num>
## 1: 42 0.0 0 22.6 26 83.5
## 2: 42 0.0 0 71.2 26 100.0
## 3: 42 0.0 0 37.5 26 87.0
## 4: 42 0.0 0 26.3 26 100.0
## 5: 42 0.0 0 33.4 26 100.0
## --- 
## 1094: 42 2.0 0 46.5 26 100.0
## 1095: 42 10.2 0 61.9 26 100.0
## 1096: 42 1.0 0 50.0 26 99.6
## 1097: 42 18.8 0 52.7 26 100.0
## 1098: 42 0.0 0 44.5 26 100.0
## rh_tmin_source vp vp_deficit vp_deficit_source vp_source
## <int> <num> <num> <int> <int>
## 1: 26 14.5 32.7 26 25
## 2: 26 20.0 5.2 26 0
## 3: 26 12.6 14.9 26 0
## 4: 26 14.0 22.7 26 0
## 5: 26 22.1 24.1 26 0
## --- 
## 1094: 26 19.5 14.3 26 0
## 1095: 26 21.8 9.3 26 0
## 1096: 26 19.9 13.8 26 0
## 1097: 26 21.6 11.6 26 0
## 1098: 26 18.9 15.8 26 0
## daas_soil_order
## <char>
## 1: Sodosol
## 2: Sodosol
## 3: Sodosol
## 4: Sodosol
## 5: Sodosol
## --- 
## 1094: Dermosol
## 1095: Dermosol
## 1096: Dermosol
## 1097: Dermosol
## 1098: Dermosol

A Note on API Keys

The examples in this README assume that you have stored your API key(s) in your .Renviron file. See Chapter 8 in "What They Forgot to Teach You About R" by Bryan et al. for more on storing details in your .Renviron if you are unfamiliar.

Note for Linux Installers

If you are using Linux, you will likely need to install several system-level libraries. For Nectar with a fresh Ubuntu image, you can use the following command to install system libraries to install {pak} and then install {fifo}. In your Linux terminal (not your R console, the "terminal" tab in RStudio should do here in most cases) type:

sudo apt update && sudo apt install libcurl4-openssl-dev libgdal-dev gdal-bin libgeos-dev libproj-dev libsqlite3-dev libudunits2-dev libxml2-dev

Meta

Code of Conduct

Please note that the {fifo} project is released with a Contributor Code of Conduct. By contributing to this project, you agree to abide by its terms.

Contributing

Please note that the {fifo} project has a Contributing guide, please refer to it before contributing to this project.