GeoTrellis: создайте хранилище атрибутов для оптимизированного для облака GeoTIFF, размещенного вне GeoTrellis

Стратегическим преимуществом облачной оптимизации GeoTiff является возможность извлекать растровые данные для заданного экстента, извлекая только обзоры и диапазон байтов из удаленного ресурса.

В Python абстракции vsicurl и gdal.Warp позволяют сделать это с помощью всего лишь URL-адреса:

vsicurl_url = '/vsicurl/' + url_to_cog

gdal.Warp(output_file, 
    vsicurl_url, 
    dstSRS = 'EPSG:4326', 
    cutlineDSName = jsonFileSliceAoi, 
    cropToCutline = True)

В недавно созданных примерах COG Spark объясняется, как получить растр [Tile], используя AttributeStore, созданный в результате разбиения RDD на предыдущем шаге:

//tiling an RDD and writing out the catalog
...

// Create the reader instance to query tiles stored as a Structured COG Layer
val reader = FileCOGLayerReader(attributeStore)

// Read layer at the max persisted zoom level
// Actually it can be any zoom level in this case from the [0; zoom] values range
val layer: TileLayerRDD[SpatialKey] = reader.read[SpatialKey, Tile](LayerId("example_cog_layer", zoom))

// Let's stitch the layer into tile
val raster: Raster[Tile] = layer.stitch

Все примеры, примечания к выпуску и документы по поддержке COG в GeoTrellis подтверждают, что существует поддержка для разбиения данных на листы и предоставления их клиентам для использования в качестве COG. Поддерживает ли GeoTrellis также возможность выступать в роли клиента?

Как вы создаете FileCOGLayerReader если у вас нет уже существующего каталога, но есть ли URL-адрес, поддерживающий запросы диапазона?

1 ответ

На данный момент у нас есть две концепции, связанные с COG:

  • Первый - это слой GeoTrellis COG, очень похожий на слой GeoTrellis avro, но вместо того, чтобы хранить отдельные авро-тайлы, мы сохраняем тайлы как сегмент tiff(s). Чтобы подготовить такой каталог, вам придется пройти через процесс загрузки, чтобы структурировать данные и переформатировать их в готовый формат GeoTrellis. Это будет слой, который состоит из частичных пирамид, где каждая частичная пирамида представлена ​​набором COGS.
  • Вторым является неструктурированный слой COG GeoTrellis: https://github.com/locationtech/geotrellis/blob/master/doc-examples/src/main/scala/geotrellis/doc/examples/spark/COGSparkExamples.scala

Последний позволяет вам просто каким-то образом собирать метаданные о вашем наборе данных в (экстенты, URI) кортежи и предоставлять интерфейс для их запроса. Ознакомьтесь с примером, который я вам отправил, и дайте мне знать, если это работает для вас.

Кстати, RasterFoundry использует неструктурированные слои COG для своего сервера листов.

Другие вопросы по тегам