Not directly addressing your suggestion, but as an alternative, there's https://github.com/stac-utils/stac-geoparquet and the GTI driver in 3.10.0 can use them directly: https://gdal.org/en/latest/drivers/raster/gti.html#stac-geoparquet-support

$ ogrinfo /vsicurl/https://github.com/stac-utils/stac-geoparquet/raw/main/tests/data/naip.parquet -al -q

Layer name: naip
OGRFeature(naip):0
  type (String) = Feature
  stac_version (String) = 1.0.0
  stac_extensions (StringList) = (2:https://stac-extensions.github.io/eo/v1.0.0/schema.json,https://stac-extensions.github.io/projection/v1.0.0/schema.json)
  id (String) = ok_m_3409901_nw_14_1_20100425
  bbox (RealList) = (4:-100.004084,34.934259,-99.933454,35.00323)
  links (String(JSON)) = [{"href":"https:\/\/planetarycomputer.microsoft.com\/api\/stac\/v1\/collections\/naip","rel":"collection","title":null,"type":"application\/json"},{"href":"https:\/\/planetarycomputer.microsoft.com\/api\/stac\/v1\/collections\/naip","rel":"parent","title":null,"type":"application\/json"},{"href":"https:\/\/planetarycomputer.microsoft.com\/api\/stac\/v1\/","rel":"root","title":null,"type":"application\/json"},{"href":"https:\/\/planetarycomputer.microsoft.com\/api\/stac\/v1\/collections\/naip\/items\/ok_m_3409901_nw_14_1_20100425","rel":"self","title":null,"type":"application\/geo+json"},{"href":"https:\/\/planetarycomputer.microsoft.com\/api\/data\/v1\/item\/map?collection=naip&item=ok_m_3409901_nw_14_1_20100425","rel":"preview","title":"Map of item","type":"text\/html"}]   assets.image.eo:bands (String(JSON)) = [{"common_name":"red","description":null,"name":"Red"},{"common_name":"green","description":null,"name":"Green"},{"common_name":"blue","description":null,"name":"Blue"},{"common_name":"nir","description":"near-infrared","name":"NIR"}]   assets.image.href (String) = https://naipeuwest.blob.core.windows.net/naip/v002/ok/2010/ok_100cm_2010/34099/m_3409901_nw_14_1_20100425.tif
  assets.image.roles (StringList) = (1:data)
  assets.image.title (String) = RGBIR COG tile
  assets.image.type (String) = image/tiff; application=geotiff; profile=cloud-optimized   assets.rendered_preview.href (String) = https://planetarycomputer.microsoft.com/api/data/v1/item/preview.png?collection=naip&item=ok_m_3409901_nw_14_1_20100425&assets=image&asset_bidx=image%7C1%2C2%2C3
  assets.rendered_preview.rel (String) = preview
  assets.rendered_preview.roles (StringList) = (1:overview)
  assets.rendered_preview.title (String) = Rendered preview
  assets.rendered_preview.type (String) = image/png
  assets.thumbnail.href (String) = https://naipeuwest.blob.core.windows.net/naip/v002/ok/2010/ok_100cm_2010/34099/m_3409901_nw_14_1_20100425.200.jpg
  assets.thumbnail.roles (StringList) = (1:thumbnail)
  assets.thumbnail.title (String) = Thumbnail
  assets.thumbnail.type (String) = image/jpeg
  assets.tilejson.href (String) = https://planetarycomputer.microsoft.com/api/data/v1/item/tilejson.json?collection=naip&item=ok_m_3409901_nw_14_1_20100425&assets=image&asset_bidx=image%7C1%2C2%2C3
  assets.tilejson.roles (StringList) = (1:tiles)
  assets.tilejson.title (String) = TileJSON with default rendering
  assets.tilejson.type (String) = application/json
  collection (String) = naip
  gsd (Real) = 1
  datetime (DateTime) = 2010/04/25 00:00:00+00
  naip:year (String) = 2010
  proj:bbox (RealList) = (4:408377,3866212,414752,3873800)
  proj:epsg (Integer64) = 26914
  naip:state (String) = ok
  proj:shape (Integer64List) = (2:7588,6375)
  proj:transform (RealList) = (9:1,0,408377,0,-1,3873800,0,0,1)
  POLYGON ((-99.933454 34.934815,-99.93423 35.00323,-100.004084 35.002673,-100.00325 34.934259,-99.933454 34.934815))

etc.


Le 01/11/2024 à 21:44, Scott via gdal-dev a écrit :
The whole, new GTI format got by me until Michael Sumner mentioned it on slack, which I visit extremely rarely. (Thanks Michael). I've been doing it in an entirely different way. The feature request is based on that.

The feature request is this:

   gdaltindex -co GDALINFO=mymeta catalog.fgb *.tif
or
   ogrtindex -co OGRINFO=mymeta catalog.fgb *.shp

This says, create an attribute in the .fgb file called 'mymeta' and populate it with the equivalent of 'ogrinfo -json' or 'gdalinfo -json'. Or perhaps:

   gdaltindex -co GDALSTATS=mymeta catalog.fgb *.tif

Which is equivalent to 'gdalinfo -json -stats -hist'

I've been doing this as a 2 step process, but it would be really cool to have it all integrated. I have many raster/vector files of different formats in a single catalog.gpkg and catalog.fgb. I can easily filter any by bbox, type or stats.

Why?

If you're grabbing your data from an .fgb file on S3/web server without an intermediate server or service, using a bbox, it's painless to get exactly the data you need. Further, you have access to all the attributes, stats, min, max, stddev for filtering *before* you request the actual data.

If you don't like cloud native or .fgb and want to access your data via an API, create your catalog as a .gpkg. Create custom attributes for filtering and indexes on those attributes, json meta data, etc, and throw it behind an API.

With a catalog.gpkg you can have all your rasters/vectors in the same catalog.gpkg and ogr2ogr to an .fgb. Anytime you update/upsert your .gpkg, recreate the .fgb.

As awesome as STAC is, it's becoming increasingly complex and very slow with large data sets. Compare that to an -sql query on a single catalog.gpkg (particularly with spatialite).

If you've made it this far, thanks for listening!

Scott

--
http://www.spatialys.com
My software is free, but my time generally not.
Butcher of all kinds of standards, open or closed formats. At the end, this is 
just about bytes.

_______________________________________________
gdal-dev mailing list
[email protected]
https://lists.osgeo.org/mailman/listinfo/gdal-dev

Reply via email to