{
  "_id": "6acf4c71d9de2f3f33fca810",
  "Package": "grout",
  "Title": "Abstract Raster Tiling Schemes",
  "Version": "0.1.0.9001",
  "Authors@R": "person(\"Michael D.\", \"Sumner\", email = \"mdsumner@gmail.com\",\nrole = c(\"aut\", \"cre\", \"cph\"), comment = c(ORCID = \"0000-0002-2471-7511\"))",
  "Description": "Impose a tiling scheme on a raster grid defined by its\ndimension and extent. Computes tile counts, pixel offsets\n(suitable for spatial library windowed reads), and geographic\nextents for each tile. Also supports standard Web Mercator and\ngeodetic tiling profiles with zoom levels, and provides a\nspatial map of what each chunk covers for interrogating virtual\nraster stores. Based on the analysis of Lamb (1994, ISBN-13:\n978-0748403158) \"Tiling very large rasters\" in 'Advances in GIS\nResearch: Proceedings of the Sixth International Symposium on\nSpatial Data Handling', volume 1, pages 449-461.",
  "License": "GPL-3",
  "Encoding": "UTF-8",
  "URL": "https://github.com/hypertidy/grout",
  "BugReports": "https://github.com/hypertidy/grout/issues",
  "Config/testthat/edition": "3",
  "Config/roxygen2/version": "8.1.0",
  "Repository": "https://hypertidy.r-universe.dev",
  "Date/Publication": "2026-09-20 04:51:21 UTC",
  "RemoteUrl": "https://github.com/hypertidy/grout",
  "RemoteRef": "HEAD",
  "RemoteSha": "c2e52adb3aad6600d0873772336564db3434f4b6",
  "NeedsCompilation": "no",
  "Packaged": {
    "Date": "2026-10-14 08:34:32 UTC",
    "User": "root"
  },
  "Author": "Michael D. Sumner [aut, cre, cph] (ORCID:\n<https://orcid.org/0000-0002-2471-7511>)",
  "Maintainer": "Michael D. Sumner <mdsumner@gmail.com>",
  "_user": "hypertidy",
  "_type": "src",
  "_file": "grout_0.1.0.9001.tar.gz",
  "_fileid": "https://r2.ropensci.org/1e42a1fb4f9ac82d7282b93ac2c4f2afdcfbc5404809ef00effd7c638213bd2f",
  "_filesize": 270152,
  "_sha256": "1e42a1fb4f9ac82d7282b93ac2c4f2afdcfbc5404809ef00effd7c638213bd2f",
  "_expires": "2027-01-22T09:33:35.000Z",
  "_created": "2026-10-14T08:34:32.000Z",
  "_published": "2026-10-14T09:33:37.597Z",
  "_buildurl": "https://github.com/r-universe/hypertidy/actions/runs/38535734003",
  "_status": "success",
  "_host": "GitHub-Actions",
  "_jobs": [
    {
      "job": 115759285185,
      "time": 227,
      "config": "linux-devel-x86_64",
      "r": "4.7.0",
      "check": "OK",
      "artifact": "11879824146"
    },
    {
      "job": 115759285167,
      "time": 98,
      "config": "linux-release-x86_64",
      "r": "4.6.1",
      "check": "OK",
      "artifact": "11879229593"
    },
    {
      "job": 115759285146,
      "time": 100,
      "config": "macos-oldrel-arm64",
      "r": "4.5.3",
      "check": "OK",
      "artifact": "11882798250"
    },
    {
      "job": 115759285293,
      "time": 115,
      "config": "macos-release-arm64",
      "r": "4.6.1",
      "check": "OK",
      "artifact": "11883456201"
    },
    {
      "job": 115758175159,
      "time": 168,
      "config": "source",
      "r": "4.6.1",
      "check": "OK",
      "artifact": "11880525183"
    },
    {
      "job": 115759285153,
      "time": 89,
      "config": "wasm-release",
      "r": "4.6.0",
      "check": "OK",
      "artifact": "11880087184"
    },
    {
      "job": 115759285124,
      "time": 70,
      "config": "windows-devel-x86_64",
      "r": "4.7.0",
      "check": "OK",
      "artifact": "11880340944"
    },
    {
      "job": 115759285307,
      "time": 73,
      "config": "windows-oldrel-x86_64",
      "r": "4.5.3",
      "check": "OK",
      "artifact": "11880735122"
    },
    {
      "job": 115759285216,
      "time": 73,
      "config": "windows-release-x86_64",
      "r": "4.6.1",
      "check": "OK",
      "artifact": "11879204530"
    }
  ],
  "_upstream": "https://github.com/hypertidy/grout",
  "_commit": {
    "id": "c2e52adb3aad6600d0873772336564db3434f4b6",
    "author": "claude <noreply@anthropic.com>",
    "committer": "Michael Sumner <mdsumner@gmail.com>",
    "message": "tile_index(clip=), and tiles_from_extent() for extent inversion\n\ntile_index() gains clip. TRUE (the default) is the existing behaviour,\nclipping edge tiles to the pixels that exist, which is what a windowed read\nwants. FALSE reports every tile at the full block size with the edge tiles\nextending past the grid, which is what a block of a tiled format actually\noccupies on disk -- a GDAL block or Zarr chunk at the margin is a whole\nblock, padded -- and so is what a byte range covering it must describe. The\nunclipped counts cannot be recovered from the clipped index, hence the flag.\n\ntiles_from_extent() solves for the tile indices a region overlaps, from the\ntile grid rather than by testing tiles, so the cost is independent of the\nsize of the scheme. It returns ids to feed tile_index(x, tile = ), rather\nthan rows, which keeps the inversion and the evaluation separate.\n\nTiles are half open in the inversion: a tile owns its left and top edges,\nnot its right and bottom ones, so a region that only touches a boundary does\nnot pick up the tile beyond it. Edges are snapped with a tolerance measured\nin tile widths, so an extent arrived at by arithmetic still lands on the tile\nit came from. Regions are clamped, and a region that misses gives integer(0).\n\nCo-Authored-By: Claude Opus 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01Xkv1KtDTJddD4SaG6WPg8Y\n",
    "time": 1789879881
  },
  "_maintainer": {
    "name": "Michael D. Sumner",
    "email": "mdsumner@gmail.com",
    "login": "mdsumner",
    "mastodon": "@mdsumner@rstats.me",
    "bluesky": "@mdsumner.bsky.social",
    "orcid": "0000-0002-2471-7511",
    "description": "no names have an anonymous function",
    "uuid": 4107631
  },
  "_distro": "resolute",
  "_registered": true,
  "_dependencies": [
    {
      "package": "R",
      "version": ">= 3.5.0",
      "role": "Depends"
    },
    {
      "package": "graphics",
      "role": "Imports"
    },
    {
      "package": "tibble",
      "role": "Imports"
    },
    {
      "package": "utils",
      "role": "Imports"
    },
    {
      "package": "vaster",
      "version": ">= 0.6.0",
      "role": "Imports"
    },
    {
      "package": "testthat",
      "version": ">= 3.0.0",
      "role": "Suggests"
    },
    {
      "package": "wk",
      "role": "Suggests"
    }
  ],
  "_owner": "hypertidy",
  "_selfowned": true,
  "_usedby": 1,
  "_updates": [
    {
      "week": "2026-34",
      "n": 5
    },
    {
      "week": "2026-38",
      "n": 5
    }
  ],
  "_tags": [
    {
      "name": "v0.1.0",
      "date": "2026-09-20"
    }
  ],
  "_stars": 9,
  "_contributors": [
    {
      "user": "mdsumner",
      "count": 55,
      "uuid": 4107631
    },
    {
      "user": "claude",
      "count": 2,
      "uuid": 81847
    }
  ],
  "_userbio": {
    "uuid": 29297592,
    "type": "organization",
    "name": "hypertidy",
    "followers": 27,
    "description": "[ ... ]"
  },
  "_downloads": {
    "count": 230,
    "source": "https://cranlogs.r-pkg.org/downloads/total/last-month/grout"
  },
  "_devurl": "https://github.com/hypertidy/grout",
  "_searchresults": 7,
  "_rbuild": "4.6.1",
  "_assets": [
    "extra/citation.cff",
    "extra/citation.html",
    "extra/citation.json",
    "extra/citation.txt",
    "extra/contents.json",
    "extra/grout.html",
    "extra/manual.pdf",
    "extra/NEWS.html",
    "extra/NEWS.txt",
    "extra/readme.html",
    "extra/readme.md"
  ],
  "_homeurl": "https://github.com/hypertidy/grout",
  "_realowner": "hypertidy",
  "_cranurl": true,
  "_releases": [
    {
      "version": "0.1.0",
      "date": "2026-08-20"
    }
  ],
  "_exports": [
    "grout",
    "tile_index",
    "tile_spec",
    "tile_zoom",
    "tiles_from_extent"
  ],
  "_help": [
    {
      "page": "grout",
      "title": "Create a tiling scheme from a raster grid specification",
      "topics": [
        "grout"
      ]
    },
    {
      "page": "plot.grout_tiles",
      "title": "Plot a tiling scheme",
      "topics": [
        "plot.grout_tiles"
      ]
    },
    {
      "page": "tile_index",
      "title": "Tile index: pixel offsets and spatial extents for each tile",
      "topics": [
        "tile_index"
      ]
    },
    {
      "page": "tile_spec",
      "title": "Tile specification for a standard tiling profile",
      "topics": [
        "tile_spec"
      ]
    },
    {
      "page": "tile_zoom",
      "title": "Natural maximum zoom for a raster grid",
      "topics": [
        "tile_zoom"
      ]
    },
    {
      "page": "tiles_from_extent",
      "title": "Which tiles does an extent intersect?",
      "topics": [
        "tiles_from_extent"
      ]
    }
  ],
  "_readme": "https://github.com/hypertidy/grout/raw/HEAD/README.md",
  "_rundeps": [
    "cli",
    "glue",
    "lifecycle",
    "magrittr",
    "pillar",
    "pkgconfig",
    "rlang",
    "tibble",
    "utf8",
    "vaster",
    "vctrs"
  ],
  "_score": 4.431363764158988,
  "_indexed": true,
  "_nocasepkg": "grout",
  "_universes": [
    "hypertidy",
    "mdsumner"
  ],
  "_binaries": [
    {
      "r": "4.7.0",
      "os": "linux",
      "version": "0.1.0.9001",
      "date": "2026-10-14T08:38:25.000Z",
      "distro": "resolute",
      "commit": "c2e52adb3aad6600d0873772336564db3434f4b6",
      "fileid": "https://r2.ropensci.org/bbe52ad4bd518a28964f5a0be431e09725f73a5280d808de5a371b8fceb3defd",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/hypertidy/actions/runs/38535734003"
    },
    {
      "r": "4.6.1",
      "os": "linux",
      "version": "0.1.0.9001",
      "date": "2026-10-14T08:36:14.000Z",
      "distro": "resolute",
      "commit": "c2e52adb3aad6600d0873772336564db3434f4b6",
      "fileid": "https://r2.ropensci.org/fca9ba154cacf212caa8b6e5a484a6446b015546b9e867c6da39cc6a079fe21a",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/hypertidy/actions/runs/38535734003"
    },
    {
      "r": "4.5.3",
      "os": "mac",
      "version": "0.1.0.9001",
      "date": "2026-10-14T09:25:55.000Z",
      "commit": "c2e52adb3aad6600d0873772336564db3434f4b6",
      "fileid": "https://r2.ropensci.org/718ba971d147969a418695a90d9826576114da50f8775fc81b15627f6a65fdbc",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/hypertidy/actions/runs/38535734003"
    },
    {
      "r": "4.6.1",
      "os": "mac",
      "version": "0.1.0.9001",
      "date": "2026-10-14T09:33:05.000Z",
      "commit": "c2e52adb3aad6600d0873772336564db3434f4b6",
      "fileid": "https://r2.ropensci.org/70796bbd37e1f98002272bc7036a901f0873e03fc9537dbed4fa76f917969d22",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/hypertidy/actions/runs/38535734003"
    },
    {
      "r": "4.6.0",
      "os": "wasm",
      "version": "0.1.0.9001",
      "date": "2026-10-14T08:36:20.000Z",
      "commit": "c2e52adb3aad6600d0873772336564db3434f4b6",
      "fileid": "https://r2.ropensci.org/1666540d7af81c9cd8f71fc17f6237395d6d427646067cfa7e48bc5cc2a55f47",
      "status": "success",
      "buildurl": "https://github.com/r-universe/hypertidy/actions/runs/38535734003"
    },
    {
      "r": "4.7.0",
      "os": "win",
      "version": "0.1.0.9001",
      "date": "2026-10-14T08:35:41.000Z",
      "commit": "c2e52adb3aad6600d0873772336564db3434f4b6",
      "fileid": "https://r2.ropensci.org/d7054c2c2a8d11c73988facb6d708abf132f5034cb97ce4ce9a2a4793aa90b7b",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/hypertidy/actions/runs/38535734003"
    },
    {
      "r": "4.5.3",
      "os": "win",
      "version": "0.1.0.9001",
      "date": "2026-10-14T08:35:41.000Z",
      "commit": "c2e52adb3aad6600d0873772336564db3434f4b6",
      "fileid": "https://r2.ropensci.org/9df51ba6b985f2b298d0593768e1d0505e834f84082bce5417ded3d53dba58d4",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/hypertidy/actions/runs/38535734003"
    },
    {
      "r": "4.6.1",
      "os": "win",
      "version": "0.1.0.9001",
      "date": "2026-10-14T08:35:43.000Z",
      "commit": "c2e52adb3aad6600d0873772336564db3434f4b6",
      "fileid": "https://r2.ropensci.org/762e70bd5d344172e1c66e45d41ba903c04b163b68d5edafa383f4583bc2d535",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/hypertidy/actions/runs/38535734003"
    }
  ]
}