## ----include = FALSE----------------------------------------------------------
knitr::opts_chunk$set(
  collapse = TRUE,
  comment = "#>"
)

## ----setup--------------------------------------------------------------------
library(vaster)

## -----------------------------------------------------------------------------
dimension <- c(10, 5)
extent <- c(0, 100, 0, 50)

gt <- geo_transform0(dimension, extent)
gt

## -----------------------------------------------------------------------------
gt <- c(0, 10, 0, 50, 0, -10)
dimension <- c(10, 5)

gt_dim_to_extent(gt, dimension)

## -----------------------------------------------------------------------------
extent_dim_to_gt(c(0, 100, 0, 50), c(10, 5))

## -----------------------------------------------------------------------------
dimension <- c(10, 5)
extent <- c(0, 100, 0, 50)

wf <- geo_world0(dimension, extent)
wf

## -----------------------------------------------------------------------------
## Full grid
dimension <- c(360, 180)
extent <- c(-180, 180, -90, 90)

## Subregion to read (Australia)
subextent <- c(110, 155, -45, -10)

rio <- rasterio0(dimension, extent, subextent)
rio

## ----eval = FALSE-------------------------------------------------------------
# ## With vapour package
# library(vapour)
# data <- vapour_read_raster(
#   "my_raster.tif",
#   window = rasterio0(dimension, extent, subextent)
# )
# 
# ## With stars package
# library(stars)
# rio <- rasterio0(dimension, extent, subextent)
# data <- stars::read_stars(
#   "my_raster.tif",
#   RasterIO = list(
#     nXOff = rio[1] + 1,  # stars uses 1-based
#     nYOff = rio[2] + 1,
#     nXSize = rio[3],
#     nYSize = rio[4]
#   )
# )

## -----------------------------------------------------------------------------
rio <- rasterio0(dimension, extent, subextent)
sfio <- rasterio_to_sfio(rio)
sfio

## ----eval = FALSE-------------------------------------------------------------
# ## Parse VRT and get extent
# vrt_file <- "path/to/mosaic.vrt"
# ext <- extent_vrt(vrt_file)
# ext

## -----------------------------------------------------------------------------
## Known raster properties (e.g., from gdalinfo)
full_dimension <- c(43200, 21600)  # global 30 arc-second grid
full_extent <- c(-180, 180, -90, 90)

## Regions of interest
regions <- list(
  europe = c(-10, 40, 35, 70),
  australia = c(110, 155, -45, -10),
  amazon = c(-80, -45, -20, 5)
)

## Pre-compute RasterIO parameters for each region
read_params <- lapply(regions, function(roi) {
  aligned <- align_extent(roi, full_dimension, full_extent)
  crop_dim <- extent_dimension(aligned, full_dimension, full_extent)
  list(
    rasterio = rasterio0(full_dimension, full_extent, aligned),
    dimension = crop_dim,
    extent = aligned
  )
})

## Check Amazon parameters
read_params$amazon

## -----------------------------------------------------------------------------
## Design a 1-degree global grid
target_res <- 1  # 1 degree cells
global_extent <- c(-180, 180, -90, 90)

## Compute dimensions from extent and resolution
dimension <- c(
  diff(global_extent[1:2]) / target_res,
  diff(global_extent[3:4]) / target_res
)
dimension

## Generate GeoTransform for GDAL
gt <- geo_transform0(dimension, global_extent)
gt

## Generate world file content
wf <- geo_world0(dimension, global_extent)
cat(wf, sep = "\n")

