把 STAC item 放进 GeoParquet 并以 API 提供查询,可以减少目录服务依赖,但不等于文件本身已经成为可靠的数据目录。stac-fastapi-geoparquet 的官方 README 给出了单文件、collection 清单与当前限制;GIS 团队应把存储、集合语义和查询服务拆开验收。

可核查事实

  • stac-fastapi-geoparquet 是使用 stac-geoparquet 后端的 stac-fastapi 实现。
  • 项目称可从位于对象存储等位置的一个或多个 stac-geoparquet 文件提供完整 STAC API,无需数据库。
  • 项目明确标注为 active development,可能随时发生破坏性变化。
  • 单文件启动示例使用 STAC_FASTAPI_GEOPARQUET_HREF 和 uvicorn。
  • 单文件模式会根据 stac-geoparquet 文件中的 items 自动生成 collection。
  • 多 collection 模式使用 STAC_FASTAPI_COLLECTIONS_HREF 指向 JSON collection 列表。
  • type 为 application/vnd.apache.parquet 的 collection assets 会被作为 item 来源加入服务。
  • 项目提供 generate-collections 脚本生成 collections.json。
  • 当前限制是每个文件只支持一个 collection。

关键词:STAC、GeoParquet、stac-fastapi、对象存储、collection、遥感目录、API。

核心机制:一个文件、一个集合和一个 API 是三层对象

GeoParquet 文件保存 item 元数据,collection 描述数据集语义,API 暴露检索接口。单文件模式自动生成 collection 很适合验证,但自动生成的名称、范围、时间覆盖和资产字段仍要检查。多 collection 模式通过 JSON 清单把多个 parquet 资产加入服务,清单本身便成为需要版本化的目录入口。

“无需数据库”意味着部署面更小,不意味着没有运行边界。对象存储 URL 可访问、Parquet schema 完整、collection 与 item 一致、API 过滤正确,缺一项都会让目录查询产生错误的可用性印象。

GIS 场景:先用样本目录验收查询,而不是直接替换生产检索

建立一个小型样本:一份单 collection GeoParquet、一个包含两个 collection 的 JSON 清单,以及若干已知的空间和时间查询。分别记录 API 返回的 collection、item、bbox、datetime 和 asset href。若一个文件只能承载一个 collection,就不要把多来源 items 为了部署方便硬合并进同一文件。

技术路径

  1. 固定 GeoParquet schema、文件校验和与对象存储位置。
  2. 单文件模式下核对自动生成的 collection 元数据。
  3. 多集合模式下将 collections.json 纳入版本控制与发布流程。
  4. 用已知 bbox、datetime 与 collection 参数回归 API 响应。
  5. 对每个 parquet 文件保持单一 collection,直到项目限制改变并完成升级验证。

检查清单

  • GeoParquet 文件与其 collection 是否有可回读版本和校验和?
  • 自动生成 collection 的空间、时间与资产字段是否正确?
  • collections.json 是否只引用预期的 Parquet assets?
  • API 对 bbox、时间和 collection 的过滤是否符合样本结果?
  • 是否避免在一个文件中混装多个 collection?
  • 是否将 active-development 的破坏性升级风险写入发布计划?

风险边界

项目明确处于 active development,接口和限制可能变化。无数据库部署不等于免维护:对象存储权限、Parquet schema、清单更新和 API 兼容仍需要监控。本文不把 README 示例视为生产吞吐、可用性或访问控制承诺。

结语

轻量 STAC 服务的关键不是少一套数据库,而是让文件、collection 清单和查询结果保持同一份可验证的目录合同。

参考资料