SakuGIS:可核验的图像地理定位工作台

中文版(当前)English version

SakuGIS 是一款面向图像地理定位的 macOS 桌面 GIS 应用。它并不把多模态模型给出的坐标当作结论,而是将模型提出的地点假设送回 OpenStreetMap、Nominatim、Overpass 与可选的本地 PostGIS 做名称解析与空间核验,再以可展开、可比对的 QGIS 图层呈现全部候选与证据链。

UrbanComp 团队 开发,采用 GNU GPL-2.0-or-later 许可开源。

SakuGIS-pic

下载

当前发布版本为 SakuGIS 0.4.0(Apple Silicon 测试版)

运行要求

项目要求
处理器Apple Silicon(M1 及以后),暂不支持 Intel Mac
系统macOS 13 或更高版本
QGIS无需单独安装,安装包内置独立 QGIS 运行时
模型服务需自备 OpenAI 兼容接口的 Qwen API Key
网络检索Brave Search API Key 为可选项

安装包体积较大,原因是其中包含了完整的 QGIS 运行时,使用者不必另行配置 Python、PyQt 与 PyQGIS 环境。

本测试版为 ad-hoc 签名,未经 Apple 公证。首次启动时请在「访达」中右键点击 SakuGIS,选择「打开」。

为什么强调"可核验"

多模态模型可以对一张照片直接给出经纬度,但这类输出存在两个难以回避的问题:坐标可能并不对应任何真实的地理实体;不同地点之间的高度相似性(例如同一建筑的仿建、同一类型的自然景观)无法从模型输出本身分辨。

SakuGIS 的处理方式是把"生成"与"核验"分开。模型只负责从影像与上下文中抽取证据、提出候选假设;候选是否成立,由真实的 OSM 地名记录与空间关系判断来决定。

SakuGIS-global-candidates

地理上分散的候选假设以可展开的 QGIS 图层保留,而不是被压缩成单一答案。

三阶段流程

  1. 证据抽取:从每张照片中提取视觉与上下文线索。多图查询时,每张照片单独发起一次视觉请求,证据在本地合并,以规避多图上下文失效。
  2. 假设生成与地名解析:提出候选地点,并通过 Nominatim 或本地 PostGIS 的地名索引解析为真实 OSM 记录。若别名无法安全匹配,则以坐标反查附加真实 OSM 身份,且不移动被查询点。
  3. 核验与重排序:使用 Nominatim 反向地理编码、Overpass 空间约束,以及可选的 PostGIS ST_CoversST_DWithinST_Distance 检查,对候选重新排序。数据超时或不可用时记为未知,而非直接判为不匹配。

SakuGIS-gis-verification-detail

核验面板列出反向地理编码结果、空间检查、分项得分、覆盖度与数据来源。

案例

以下结果均来自打包后的 Apple Silicon 应用,完整经过三阶段流程、OSM 核验、候选比对与地点信息检索。

巴黎埃菲尔铁塔:与拉斯维加斯的仿建塔区分开来,综合分 88.8,GIS 分 78.0。

悉尼歌剧院:排在首位,哥本哈根与奥斯陆的错误假设被抑制,详情面板载入五条描述与八张带原始来源链接的图片。

北京故宫博物院:排序高于台北与沈阳的同名候选,综合分 83.9,GIS 覆盖度 100%。

SakuGIS-place-details-floating-window

地点浏览器仅在候选同时具备真实地名身份与有效网络材料时才会打开。

2026 年 7 月 28 日的回归测试覆盖五组场景:上海滨江(两张照片)、富士山与塔(三张照片)、Erg Chebbi 沙丘、Jökulsárlón 冰河湖、里约热内卢糖面包山。核心流程 5/5 通过,网络增强流程 5/5 通过;17 个候选全部解析到真实地名记录,18 次模型请求无重试。

主要功能

地图与数据

  • 基于 QGIS 的地图画布,支持平移、缩放、全图范围与工程存取
  • OpenStreetMap 底图与可替换的 XYZ 影像图层
  • 支持 GeoJSON、GeoPackage、Shapefile、KML、GeoTIFF 等常见格式
  • 图层可见性、顺序、重命名、透明度与候选导航

分析工作流

  • Case 工作区支持同一地点最多六张照片的联合分析,同时保留单图与纯文本查询
  • 候选图层可展开,点击后进入比对面板,包含综合分、证据复核、跨照片一致性、GIS 与覆盖度信号
  • 地点浏览器整合本地 GIS 证据、网络描述与图片,可浮动或停靠
  • 输出中英双语 Markdown 查询报告,包含证据、检查项、来源与不确定性说明

界面与配置

  • 中英文运行时界面,浅色与深色外观持久保存
  • 每次启动从 24 座主要城市中随机选择初始视图
  • 「关于 SakuGIS」可检查 GitHub Releases 更新
  • 设置窗口集中管理接口地址、密钥、模型、温度、超时、提示词预算、候选上限与 PostGIS 连接

SakuGIS-wuhan-light-workspace

SakuGIS-satellite-verification

快速上手

  1. 下载并打开 DMG,将 SakuGIS 拖入「应用程序」。
  2. 首次启动时右键点击应用图标,选择「打开」,在提示中确认。
  3. 打开 设置 → 设置…,在「API 服务」页填写 Qwen 接口地址与 API Key。默认接口地址为阿里云百炼的 OpenAI 兼容端点。启动分析时若密钥缺失会自动打开设置窗口,保存后无需重启。
  4. 拖入一张或多张照片,或输入文本描述,启动分析。
  5. 如需网络描述与图片,可另行配置 Brave Search API Key;不配置时定位与评分仍可运行。

密钥与 PostGIS 连接串仅存储于当前用户的 macOS 钥匙串,不写入配置文件。仓库中不包含任何密钥。

批量或生产环境使用建议连接本地 OSM 数据构建的 PostGIS 数据库,配置方法见仓库文档

数据来源与使用规范

SakuGIS 在默认配置下使用 OpenStreetMap 的公共 Nominatim 与 Overpass 服务。这些服务由社区志愿维护,有明确的使用政策。请注意:

  • 单次交互式查询属于正常使用范围;批量、自动化或高频调用请勿指向公共端点
  • 需要成规模运行时,请部署本地 OSM/PostGIS 后端,或自建 Nominatim 与 Overpass 实例。
  • 地图与地名数据来自 OpenStreetMap 贡献者,遵循 ODbL 许可。

地点图片来自 Brave 图像检索,仅作为参考材料,不代表照片的实际拍摄地点,其权利归原发布方所有。检索结果与缩略图仅使用短时内存缓存,不落盘保存。

当前原型中的卫星影像图层使用一个可替换的自定义 XYZ 定义。其中引用的旧版 Google 瓦片端点并非当前 Google Maps Tile API 文档中受支持的端点,部署方需自行确认可用性与使用权限,并在生产环境中替换为官方支持的服务配置。

负责任使用声明

SakuGIS 的设计用途是地理研究、城市与灾害场景的空间核验,以及影像位置元数据缺失时的辅助判断。

请勿将本软件用于定位私人照片、追踪特定个人,或任何侵犯他人隐私与人身安全的目的。请勿提交包含可识别个人信息的私人影像。

候选得分是排序信号,未经概率校准,不应作为高风险决策的唯一依据。所有结论都应结合报告中给出的证据、检查项与来源自行复核。

SakuGIS 是研究软件,当前版本为 0.4.0 测试版,接口与行为可能在后续版本中变化。

已知限制

  • 仅支持 Apple Silicon 的 macOS 13 及以上系统,暂无 Windows 与 Linux 版本
  • 安装包约 1.7 GB,因内置独立 QGIS 运行时
  • 未经 Apple 公证,首次启动需手动确认
  • 需要使用者自备模型服务密钥,调用产生的费用由使用者承担
  • 依赖公共 OSM 服务时,结果受网络状况与服务限流影响

许可与引用

SakuGIS 以 GNU GPL-2.0-or-later 发布。QGIS 及打包的运行时组件保留各自许可,再分发义务见 THIRD_PARTY_NOTICES.md

如在研究中使用了 SakuGIS,请参见下方 BibTeX 引用格式。

文档与反馈

问题反馈与功能建议请提交至 GitHub Issues


Q.E.D.