当前位置: 首页 > news >正文

开源地理空间智能项目中的本体思想 4-2:影像篇——影像不进图谱,图谱给影像当索引

4-1 查询篇的五个案例,数据都是"对象和关系"。地理智能还有一大块数据没进场:遥感影像。影像是栅格,动辄 TB,进不了也不该进图谱。那它怎么和图谱协作?本篇两个案例是构造的,但每一层的技术都真实存在(来源见附录)。

一句话结论:影像这类"大而笨"的数据,要给它当好索引,利用STAC查询;影像算出结果,比如统计值,"写回"到系统中,对应本体的动力层。

案例六(影像):找出保护区内植被在退化的森林

问题:柏林周边,位于自然保护区内、近两年植被明显退化的森林斑块有哪些?

这一跳问什么数据在哪用什么技术
第 1 跳(空间)柏林及周边有哪些森林斑块OSM(landuse=forest 标签)图谱查询
第 2 跳(语义)每块森林属于哪个保护区OSM(boundary=protected_area)图谱查询
第 3 跳(发现)覆盖这些森林的卫星影像有哪些影像目录STAC API
第 4 跳(计算)每块森林两个时点的 NDVI(归一化植被指数,反映植被长势)各是多少Sentinel-2 影像本身栅格计算,可按 DGGS 网格组织
第 5 跳(回写)把 NDVI 变化值写回,作为森林对象的属性图谱目前没有标准做法

笨办法:QGIS 里手工叠加森林图层和保护区图层,逐个斑块去哥白尼数据浏览器下载影像,逐块算 NDVI,填 Excel。一个周末起步,结果还是死表。

合理的做法:图谱管对象和语义,STAC 管影像发现,网格管栅格组织,各干各的,靠几何和标识符咬合。

本系列的框架里,本体的六个要素是对象、属性、关系(语义层)和动作、函数、权限(动力层)。遥感影像是数据,不是本体思想的载体。这个案例的看点,是它两次碰到动力层——第 4 跳的栅格计算是函数,第 5 跳的写回是动作。下面逐层看。

STAC 是社区规范,也是影像目录的事实标准

关于第 3 跳的 STAC(SpatioTemporal Asset Catalog,时空资产目录)[1]。

它是国际上的一个规范吗?是,但要分清是哪一类。STAC 不是 ISO 或 OGC 的正式标准,而是一个开源社区规范:由 Radiant Earth 基金会牵头的社区维护,规范文本公开在 GitHub 上,现行版本 v1.1.0(2024-09 发布)。它的地位是"事实标准"——哥白尼数据空间(Copernicus Data Space)、AWS 开放数据、微软行星计算机(Microsoft Planetary Computer)等主流影像服务都提供 STAC 目录;它的 API 部分与 OGC API - Features 标准对齐。所以严谨的说法是:不是国际标准组织盖章的标准,但已是遥感影像目录领域实际通行的事实标准。

“JSON Schema 表达本体思想”:说法成立,边界清晰

STAC 用 JSON Schema(一种给 JSON 文档定结构、做机器校验的社区规范,以 IETF 草案族形式发布)定义对象类型(目录 Catalog、集合 Collection、条目 Item)和属性(时间、云量、几何范围、波段)。任何机构的影像目录只要符合 STAC,就能被同一个客户端检索。

在本系列"本体思想=先把对象、属性、关系定义清楚再存数据"的口径下,"STAC 是用 JSON Schema 表达本体思想的真实例子"这个说法成立:它把对象类型和属性结构这两层固定下来,而且是机器可校验的固定。

但边界也要说死,这同样是为了严谨:STAC 不做三件事——不做形式语义(没有推理);不给对象全球唯一、可跨源引用的标识符(一个影像条目的 ID 只在自家目录里有意义);不定义跨源关系(没有"这块影像覆盖哪片森林"的标准说法)。

结构校验做得到:机器自动判断一条记录合不合格

先看一个 STAC 影像条目的样子(字段名与结构取自 STAC 1.1.0 规范,取值为示意):

{"type":"Feature","stac_version":"1.1.0","id":"S2A_T32UPC_20260810","bbox":[13.09,52.35,13.76,52.68],"geometry":{"type":"Polygon","coordinates":[[[13.09,52.35],[13.76,52.35],[13.76,52.68],[13.09,52.68],[13.09,52.35]]]},"properties":{"datetime":"2026-08-10T10:05:00Z","eo:cloud_cover":12.3},"assets":{"visual":{"href":"https://example.org/s2/T32UPC/visual.tif","type":"image/tiff"}}}

逐行对照规范要求:必须声明type: "Feature",必须有几何geometry和外接框bboxproperties里必须带拍摄时间datetime,云量eo:cloud_cover这类字段来自扩展、类型必须是数字,assets里给出影像文件的地址。这些"必须有、类型必须对"的规矩全部写在 JSON Schema 里,任何一条目录记录,校验器能自动判断它合不合格——缺字段、类型错,机器直接拒绝,不用人眼看。"做得到"的意思就是:一条记录合不合格,从"靠人读文档判断"变成了"机器自动判"

第 3 跳查到了影像条目,第 4 跳要算"影像覆盖哪片森林"——但 STAC 没有标准说法表达"这块影像覆盖哪片森林",森林是另一个图谱里的对象,影像条目的 ID 出了自家目录就没人认识。所以影像几何与森林几何的空间求交,要应用层自己算。这就是边界的含义:结构校验管"一条记录长得对不对",管不了"两个来源的数据说的是不是同一个东西"。

写回是动力层的动作,目前没有标准做法

第 5 跳暴露的是另一个空白:算出"NDVI 下降"之后,把它作为事实写回图谱,没有标准动作可用——03 篇说过,GeoSPARQL 和 DGGS 的动力层(动作、权限)是空白,就是这个意思 [2]。

值得强调的是:写回这个动作,确实体现了动力层里"动作"这个要素的思想。它不是查询——查询只读不改;它是"把一个新事实写进世界(这里是图谱)"的受控操作。谁有权写、写到哪个对象上、写完要不要触发别的动作,这些全是动力层问题,目前这方面的内容较少。

案例七(寻址+影像):哪些格子住着人,却还没有地址

问题:一个县去年新建的民房聚落有哪些,它们该编进哪个地址网格?

地址是最典型的"字符串之苦":"海口市美兰区××路12号"对人是地址,对机器只是一段文本。寻址(addressing,给地点分配可引用的名称或编号)分两步走:把地址文本解析成结构化成分,再落到坐标——后一步叫地理编码(geocoding)。更麻烦的是,世界上大量居民区根本没有门牌,快递、急救、人口普查都卡在"这地方叫什么"上。

这个案例是构造的,但每个零件都真实存在:

这一跳问什么数据与技术
第 1 跳(语义)地址文本拆成结构化成分:国、省、市、路、号libpostal(开源地址解析库,统计模型训练,覆盖多国地址格式)
第 2 跳(空间)结构化地址换成坐标Nominatim(OSM 官方地理编码服务)
第 3 跳(网格)坐标换成格子编号H3 或 S2——格子编号本身就是一种机器可读的地址。商用的 what3words(三词地址)、Google 的 Plus Codes 是同一思路的民间编码
第 4 跳(影像)哪些格子里检测到了建筑,却没有对应的地址记录卫星影像加建筑物检测;Google Open Buildings 是公开的建筑足迹数据集,覆盖亚非拉大量地区
第 5 跳(回写)给新发现的聚落赋址,写回数据库动力层——与案例六相同,没有标准动作可用

第 4 跳是这个案例的心脏:把"全县有没有新房子"这个要靠人腿回答的问题,换成"哪些格子的影像里多出了建筑"这个可以批量计算的问题。有建筑足迹而无地址记录的格子,就是寻址部门该去的地方。

笨办法:民政、邮政部门的人工踏勘登记。现实世界里门牌号就是这么来的——一个县走一遍以月计,走完已经过时。影像加网格把"全县踏勘"变成"只核查有建设活动的格子",工作量下降几个数量级。

SOSA 是 W3C 国际标准,统一描述"谁观测到了什么"

案例七说"影像检测结果是观测"。观测有没有标准说法?有,而且是正经的国际标准:SOSA 本体(Sensor, Observation, Sample, and Actuator Ontology,传感器—观测—样本—执行器本体),W3C 推荐标准(2017 年发布,与 OGC 联合制定),专门描述"某时某地,谁观测到了什么" [3]。它把观测拆成几个对象:传感器(谁测的)、观测(哪次测量)、观测结果(测到了什么)、观测对象(测的是谁)、时间。

4-1 查询篇里的 KnowWhereGraph 就复用了 SOSA 来描述观测数据,新增观测要过 SOSA-SHACL 校验才能入库 [3]。在本篇里,"某格子的影像在某时点检测到了建筑"就是一条典型观测:传感器是卫星,观测对象是格子,结果是建筑足迹。同一个标准词汇,从气象观测一路用到影像检测——这就是标准词表的价值。

格子是不是对象,取决于业务需不需要引用它

第 3 跳的格子编号,正好撞上 4-0 概览留下的开放问题:格子是空间锚点,但它是对象吗?这里不再展开,只给一个现成对照(03 篇):H3 编号写在 GeoSPARQL 字面量里只是一段文本,不是对象;KWG 给每个 S2 格子分配了全球唯一标识符(IRI),格子才成为一等对象 [2]。建到哪一层,取决于你的业务需不需要引用它、给它挂属性——考虑因素见 4-0 概览第六章 [4]。

跳表写的是依赖关系,不是执行顺序

到这里可以说一个本篇两个案例共同展示的现象:表格里的跳写成一行一行,不代表执行时要一步一步按顺序来。

看案例七:第 1、2、3 跳(解析存量地址)是一条链,第 4 跳(影像里检测建筑)是另一条链——两条链互不依赖,先做哪条都可以,也可以同时做,最后才在"有建筑足迹而无地址记录"这里汇合。案例六同样:查森林斑块、查保护区、查影像目录,三件事谁先谁后都行。

这对智能体(agent)执行查询是个实在的好消息:没有依赖关系的跳,可以任意排序、可以并行;有依赖关系的跳,才必须排先后。所以读这个系列的跳表,读的是依赖关系,不是执行顺序。选址篇的五个条件之间依赖更少,是更典型的例子,4-3 还会回到这一点。

本篇小结:本体给影像当索引,写回对应动力层

本篇的两个案例,一个从影像里发现"森林变差了",一个从影像里发现"这里有人住了",是同一架构的两个侧面:图谱管对象和语义,影像目录管影像发现,网格管栅格组织,各干各的,靠几何和标识符咬合。咬合不上的地方指向动力层:动作定义较少,写回这样的操作算是动作吗?也还没有标准动作(动作层空白)。

下一篇拿一个综合任务收束:选址——它听起来是分析研判,拆完之后会变成什么?4-3 选址篇见。

附录

A.1 构造案例口径

案例六:构造案例,未实际执行。STAC 目录、Sentinel-2 影像、OSM 森林与保护区标签均为真实存在的技术与数据。STAC 版本与维护方、采用情况于 2026-08-20 核查(见参考文献 [1])。

案例七:构造案例,未实际执行。libpostal、Nominatim、H3/S2、what3words、Plus Codes、Google Open Buildings 均为真实存在的工具与数据集。

A.2 术语速查

STAC(SpatioTemporal Asset Catalog,时空资产目录):描述时空数据资产的社区规范(Radiant Earth 基金会牵头维护,现行 v1.1.0,2024-09),遥感影像目录领域的事实标准;API 部分与 OGC API - Features 对齐。规范:https://stacspec.org/ 。

JSON Schema:给 JSON 文档定义结构并做机器校验的社区规范(以 IETF 草案族形式发布);STAC 用它固定对象类型和属性结构。

结构校验:用机器自动检查一条数据记录是否符合规定的结构(字段齐不齐、类型对不对),不需人眼判断。

SOSA 本体:Sensor, Observation, Sample, and Actuator Ontology,W3C 推荐标准(2017,与 OGC 联合),统一描述传感器、观测、样本与执行器。

NDVI:归一化植被指数,用红光和近红外波段算出的植被长势指标。

DGGS:离散全球网格系统,把地球表面剖分成带编号的层级格子(03 篇专题 [2])。

libpostal:开源地址解析库,统计模型训练,覆盖多国地址格式。https://github.com/openvenues/libpostal 。

Nominatim:OSM 官方地理编码服务,把结构化地址换成坐标。https://nominatim.org/ 。

H3 / S2:Uber、Google 分别开源的网格编码体系,给地球表面的格子发编号(03 篇有详细对比 [2])。

what3words / Plus Codes:商用的民间地址编码,思路与网格编号相同——用短编码指代一块地方。

Google Open Buildings:公开的建筑足迹数据集,覆盖亚非拉大量地区。https://sites.research.google/gr/open-buildings/ 。

参考文献

[1] STAC 规范官网(维护方、规范文本、采用案例):https://stacspec.org/ ;规范仓库 radiantearth/stac-spec,v1.1.0 发布于 2024-09-11(2026-08-20 经 GitHub API 核查)。

[2] 本系列 03 篇《GeoSPARQL 与 OGC DGGS》:动力层空白的完整讨论、格子编号两种形态的对比。

[3] SOSA/SSN:Semantic Sensor Network Ontology,W3C 推荐标准,2017-10-19:https://www.w3.org/TR/vocab-ssn/ ;KWG 复用 SOSA 与 SOSA-SHACL 校验,见本系列 02 篇《KnowWhereGraph》。

[4] 本系列 4-0 概览:《案例集概览——地理智能的地基是数据治理和查询》第六章。

[5] 案例七涉及的开源项目:libpostal https://github.com/openvenues/libpostal ;Nominatim https://nominatim.org/ ;Google Open Buildings https://sites.research.google/gr/open-buildings/ 。


版权声明:本文为CSDN博主「LadiesAndGentlemen」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qiupingzhao/article/details/163625924 开源 github

http://www.cnnetsun.cn/news/4195907.html

相关文章:

  • 【自适应滤波实战】归一化最小均方 (NLMS) 自适应噪声对消全解析:原理推导 + 数值实例 + Python 代码实现
  • c语言的纸币找零问题
  • 全球贸易进入“高关税时代”:企业必须重新学习如何做全球生意
  • DeepSeek Harness + GLM-5.3 超详细实战教程:我拼了套自己的AI 工位,还自己开发插件!
  • 扫描件加文本层:OCRmyPDF 离线使用完整指南
  • 溶血磷脂酰胆碱 (LPC):脂质代谢关键毒性分子,云克隆 ELISA 试剂盒助力脂质组与炎症损伤科研检测
  • 压电定位平台为什么要闭环?开环误差、传感器基准与Python测试
  • 大二学生用myBuilder两周搭出完整ERP,面试官直接让他演示了一遍
  • 如何获得更快更私密的浏览体验:开源浏览器 Thorium 完整指南
  • DeepSeek Harness 极简模式跑 Terminal Bench,模型基准测试实操
  • KeyboardChatterBlocker 实战教程:按键调阈值,修掉机械键盘连击
  • 【单片机课设毕设项目】基于 51/STM32 单片机的红外人体感应防盗报警环境监控系统设计 基于 51/STM32 单片机的 LCD1602 显示环境感知智能安防系统设计(017504)
  • Python Web后端框架FastAPI vs Flask
  • 网络安全等保合规文档整理
  • 【 C++ 】AVL树
  • 从ChatiSS九种体质舌面诊参数解码中医AI的Token底盘逻辑
  • 评价类模型
  • 2026深度测评10款降AI率工具红黑榜!优缺点全曝光,达标率对标顶级水准
  • MAA明日方舟自动化助手:新手 5 分钟跑通全流程,把重复劳动交给它
  • 单片机毕设项目:融合温光人体检测的 STM32 智能晾衣架设计与开发 本地显示 + 远程 APP 监控 STM32 智能晾衣架系统研究(017204)
  • 团队一体化协同平台怎么选?多款协作工具能力客观记录
  • SAP Gateway Foundation OData V4 工具全景解析,从服务发布、Metadata Cache 到 Payload Trace 的完整排障链路
  • 8.22【A】
  • 小米Kotlin专项面经:data class自动生成了什么、Kotlin空安全、Kotlin value class
  • 大语言模型在职业体育决策中的应用:从ChatGPT到AI协作工作流
  • Docker综合项目实验
  • PCIe Flow Control初始化:链路稳定的信用协商机制
  • C++变量的自动初始化
  • 数据不通,穿透就是空话——国资数据治理的三道坎
  • 16-SOFA_仿真背后的力学(总结)