parcels <- function(address, distance = 200) {
  parcel_dsn <- "/vsizip//vsicurl/listdata.thelist.tas.gov.au/opendata/data/LIST_PARCELS_HOBART.zip/list_parcels_hobart.shp"
  pt <- tidygeocoder::geo(address, quiet = TRUE)
  parcel_ds <- new(gdalraster::GDALVector, parcel_dsn)
  on.exit(parcel_ds$close(), add = TRUE)
  prj <- parcel_ds$getSpatialRef()
  pp <- gdalraster::transform_xy(cbind(pt$long, pt$lat), srs_to = prj, srs_from = "EPSG:4326")
  ex <- rep(pp, each = 2) + c(-1, 1, -1, 1) * distance
  sf <- gdalraster::bbox_to_wkt(ex[c(1, 3, 2, 4)])
  parcel_ds <- new(gdalraster::GDALVector, parcel_dsn)
  parcel_ds$setSpatialFilter(sf)
  out <- parcel_ds$fetch(-1)
  if (nrow(out) < 1) stop(sprintf("no parcels found for '%s' within %i m", address, as.integer(distance)))
  out
}
v <- parcels("1 Macquarie St Hobart", 50)
plot(v)Created on 2025-08-11 with reprex v2.0.2
