Skip to content

Instantly share code, notes, and snippets.

@mdsumner
Created March 17, 2026 23:07
Show Gist options
  • Select an option

  • Save mdsumner/fc16a9f98ed35dbfcd944124da02fcf5 to your computer and use it in GitHub Desktop.

Select an option

Save mdsumner/fc16a9f98ed35dbfcd944124da02fcf5 to your computer and use it in GitHub Desktop.
# library(sedonadb)
# 
# # Works with files
# fgb <- system.file("files/natural-earth_cities.fgb", package = "sedonadb")
# sd_read_sf(fgb)

## worked a while already with GDAL
library(lazysf)
url <- "/vsicurl/https://github.com/apache/sedona-db/raw/refs/heads/main/r/sedonadb/inst/files/natural-earth_cities_geo.parquet"
lazysf(url) |> 
  dplyr::filter(name %in% c("Wellington", "Canberra", "Sydney", "Melbourne", "Suva"))
#> # Source:   SQL [?? x 3]
#> # Database: GDAL <SQLITE> WKB [/vsicurl/https://github.com/apache/sedona-db/ra...]
#>       FID name       geometry                    
#>   <int64> <chr>      <wk_wkb>                    
#> 1       0 Canberra   <POINT (149.129 -35.28303)> 
#> 2       1 Melbourne  <POINT (144.9731 -37.81809)>
#> 3       2 Suva       <POINT (178.4417 -18.13302)>
#> 4       3 Sydney     <POINT (151.2125 -33.87137)>
#> 5       4 Wellington <POINT (174.7772 -41.29207)>


SQL <-sprintf("SELECT * FROM \"%s\" WHERE name IN ('Wellington', 'Canberra', 'Sydney', 'Melbourne', 'Suva')", "natural-earth_cities_geo")
library(gdalraster)
#> GDAL 3.13.0dev-a3b7b01d3e-dirty (released 2026-02-23), GEOS 3.12.1, PROJ 9.7.0
v <- new(GDALVector, url, 
         SQL)
v$fetch(-1)
#> OGR feature set
#>   FID       name                       geometry
#> 1 100       Suva WKB POINT: raw 01 01 00 00 ...
#> 2 128   Canberra WKB POINT: raw 01 01 00 00 ...
#> 3 143 Wellington WKB POINT: raw 01 01 00 00 ...
#> 4 213  Melbourne WKB POINT: raw 01 01 00 00 ...
#> 5 240     Sydney WKB POINT: raw 01 01 00 00 ...
v$close()

library(vapour)
g <- vapour_read_geometry(url, sql = SQL)
f <- vapour_read_fields(url, sql = SQL)

tibble::as_tibble(f) |> dplyr::mutate(geometry = wk::wkb(g))
#> # A tibble: 5 × 2
#>   name       geometry                    
#>   <chr>      <wk_wkb>                    
#> 1 Suva       <POINT (178.4417 -18.13302)>
#> 2 Canberra   <POINT (149.129 -35.28303)> 
#> 3 Wellington <POINT (174.7772 -41.29207)>
#> 4 Melbourne  <POINT (144.9731 -37.81809)>
#> 5 Sydney     <POINT (151.2125 -33.87137)>

Created on 2026-03-17 with reprex v2.0.2

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment