最近工作中有汇聚开源数据的需求,研究国外各卫星数据厂商的数据,接触到了STAC
这个标准。
国外卫星厂商发布开源数据,基本都采用STAC标准,习惯了传统的OGC数据对接,对这个标准还是做了一定的学习。
所以为了更好的了解数据的来龙去脉,搞明白怎么在产品中接入该标准、设计产品,我做了一些探索工作,写篇文章记录下。
简单来说,STAC就像一个空间数据的“目录”。它以标准化的JSON格式描述各种空间数据资产(例如卫星影像、LiDAR点云等),包括其空间位置、时间戳、数据格式等关键信息。它将提供了一个清晰的索引,让你快速找到所需的数据
也再来看下微软的文档中给出的概念:
卫星数据收集逐渐普遍。有许多时空资产的数据提供商,例如 Imagery、Synthetic Aperture Radar (SAR)、Point Clouds 等等。这些数据提供商提供用户访问其时空数据的方式并没有一套标准。时空数据的用户通常需要针对想要取用的不同资料集合分别建立各自的工作流程。开发人员需要开发新的工具和库,才能与时空数据互动。
STAC的来龙去脉
◈起源与背景
STAC由Radiant Earth
基金会发起,是一个开源项目,旨在通过一套标准化规范来重组和查询地球空间资产的元数据。
这些“时空资产”涵盖了从卫星影像到无人机图像,再到高光谱、雷达数据等广泛的数据类型。
STAC的创建源于地理空间数据领域的两大痛点:数据分散和标准不统一。
传统的空间数据搜索需要使用多个搜索引擎,且不同数据集之间的互操作性较差,给科学家和从业者带来了诸多不便。
◈核心设计
STAC的核心在于其简洁而扩展性强的设计。它并非一个独立的软件或系统,而是一套规范,定义了如何描述和组织空间数据。
从技术设计层面来看,STAC (SpatioTemporal Asset Catalog)的核心在于其标准化的JSON数据结构和基于链接的组织方式,旨在实现空间数据资产的便捷发现、访问和使用。
它基于JSON对象,包括三大关键类型:Item、Catalog和Collection
,并遵循RESTful原则,支持链式访问和资源自描述。
Catalog:
Catalog是一个容器,可以包含多个Item或其他Catalog,形成一个层次结构。这类似于文件系统的文件夹结构,允许对空间数据进行逻辑分组和组织。Catalog本身也是一个JSON对象,包含id、description以及指向其包含的Item或子Catalog的链接(links)。
Collection:
Collection是Catalog的一种特殊类型,它除了具有Catalog的所有属性外,还包含了更多描述数据集合的元数据,例如许可证信息(license)、空间和时间范围(extent)、关键词(keywords)等。Collection通常用于表示一组具有相似特征的空间数据资产,例如同一传感器在特定时间段内获取的所有影像。
Item:
这是STAC的核心,代表单个空间数据资产。它本质上是一个扩展的GeoJSON Feature,包含了该资产的几何信息(geometry,例如经纬度坐标)、边界框(bbox)、时间信息(datetime)、以及其他元数据(properties)。properties字段非常灵活,可以包含任何与该资产相关的属性,例如传感器类型、分辨率、云量等等。此外,Item还包含assets字段,指向该资产的实际数据文件(例如影像文件、点云文件等)。每个asset都有一个唯一的标识符和一个指向数据文件的URL。
Links:
Links是STAC中连接不同组件的关键。每个Item、Catalog和Collection都包含一个links数组,其中每个元素都是一个Link对象,描述了指向其他资源(例如其他Item、Catalog、Collection或相关文档)的链接,以及该链接的类型(rel)。这使得STAC能够构建一个复杂的、相互关联的数据网络。
如上图中表示,是一个最小单元的stac文件,即item,我们可以从item中看到关于这个影像数据的核心信息,如boundingbox
,created time
,platform
,gsd
,以及更重要的影像下载地址
,如果是雷达影像还有多种成像模式等等。
可以说,用stac标准发布的数据,带上了全面而又核心的空间数据的信息,方便数据交换、检索。
我在上一期文章中写过的批量下载Umbra的工具,Umbra开源雷达影像下载工具开发实践,也是在深入对接stac标准后做出的。
◈STAC应用
以下是从arcgis官网找到的关于stac标准数据浏览的操作示例
国内主流GIS厂商近两年已经支持了STAC服务,比如我搜索到超图的iserver的相关文档:
◈开发了一个可视化检索STAC数据的工具
目前各厂商对于STAC标准数据的接入,均是通过类似文件目录形式,即只有一个列表,这与我们日常中在地图上可视化展示每景影像的习惯有所出入。
在上一期文章中,我提到针对Umbra影像下载做了一个工具,原理也是如此,即定期同步umbra的官方数据到本地数据库,然后做图上信息展示。
所以在研究了STAC基础上,我又重写了一个小工具,更加通用,支持对所有符合STAC标准数据的接入,目前基本功能成型,还在迭代优化中。
以下是几个界面示意。
工具支持对不同厂商的stac数据源的接入。
如果你的团队中涉及到开源遥感数据的采集、空间数据服务发布等需求,那么stac对接是必须完成的工作。
目前没有看到国内卫星厂商更多的开发文档,故尚不清楚国内卫星厂商是否也支持这种数据标准。
为什么STAC如此重要?
从产品角度来看,STAC的意义不在于技术细节,而在于它对地理空间数据价值链的深远影响。
◈提升数据可发现性
传统的地理空间数据往往深藏于复杂的文件夹或私有系统中,而STAC的标准化结构让数据“显现”出来。
通过STAC API,用户可以轻松按时间、空间、属性筛选出所需数据。这种搜索体验的提升,直接推动了地理空间数据从“被动提供”到“主动获取”的转变。
◈增强数据互操作性
地理空间数据的多样性是其价值的来源,但也是障碍。
STAC通过统一元数据标准,让不同来源的数据可以无缝集成。这种互操作性为跨平台、跨领域的应用提供了基础。
◈推动地理空间数据商业化
对于商业用户而言,数据是产品的一部分。
STAC降低了数据提供商的“上架”成本,同时让用户更方便地找到适合的“商品”。
这一点特别适合SaaS化的地理空间服务。
往期推荐:
NASA与微软联合推出“Earth Copilot”,“智能助手“或成为行业产品标配
欢迎交流
笔者长期从事人工智能、遥感、大模型等业务
欢迎添加微信交