2025年末礼包:立省几千元!带你实现一个遥感历史影像下载器

admin 2026-01-01 05:19:17 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

文章总结: 本文分享了自动化下载ESRI遥感历史影像的技术方案。通过抓包获取配置文件与图层ID,利用元数据查询API确定真实拍摄日期并去重,结合坐标转换构建瓦片URL导出GeoTIFF。文中详细解析了接口参数及避坑策略,为开发自主影像下载器提供了完整的实现路径与代码逻辑。 综合评分: 89 文章分类: 爬虫,安全工具,逆向分析


cover_image

2025年末礼包:立省几千元!带你实现一个遥感历史影像下载器

原创

mapxiaotu

空天感知

2025年12月31日 08:35 新加坡

针对目标区域批量下载检索、下载遥感历史影像,通常这个功能只有在某些商业的地图下载软件才有,这两天研究了下,实现效果比较理想。

全网关于历史影像的下载,基本还停留在手动复制粘贴ESRI的wayback链接到arcgis/Global Mapper中,鲜有人提及怎么实现将历史影像的检索、下载以代码工具的方式实现,以进行自动化的下载。

本文专门做下公布,也是回馈下长期以来关注的读者朋友们。

本篇技术原理至少价值一个大几千元的地图下载器  😀😀😀

00 实现的效果

最近在做针对umbra及众多开源sar数据的管理,小伙伴提到要做对应的光学影像的查看、以及历史影像的浏览和下载,方便进一步做对比,以及再做标注等。

下图是我实现的结果,定位到目标地点,可以动态加载出该地有多少期历史影像,并且点选加载;

然后,通过“影像下载”可以对当前选择区域的影像进行下载,并输出geotiff文件,可以直接导入gis软件中进一步处理。

01 核心方法

整个逻辑其实就是抓包ESRI wayback的各个接口,分析数据交互,获取历史影像的检索、加载的全流程。

我目前暂时没精力取做Google影像的研究,本篇还是以ESRI的Wayback历史影像进行开发。

这个站是ESRI发布的可以公开浏览历史影像的站点。我们的工作也从对这个站点进行一些抓包等工作开始。

首先是从数据源头开始。通过分析网络请求,我找到了 ESRI Wayback 的核心配置文件。这个 JSON 掌控了所有历史图层的信息。

https://s3-us-west-2.amazonaws.com/config.maptiles.arcgis.com/waybackconfig.json

请求这个地址,你会得到一个巨大的 JSON 对象。这里的 Key(如 13192)就是我们后续下载瓦片必需的 layerId。

{“13192”: {“itemTitle”:”World Imagery (Wayback 2025-12-18)”,”layerIdentifier”:”WB_2025_R12″,”layerURL”:”https://wayback.maptiles.arcgis.com/…”,     …   } }

02 概念区分

需要明确LayerID的概念:

每个 Wayback 发布版本都有一个唯一的 Layer ID(数字),用于:

  • 构建瓦片 URL
  • 查询元数据

layerID:WB_2025_R12是用来构造影像瓦片URL的重要参数。

瓦片服务地址在下面给出:

https://wayback.maptiles.arcgis.com/arcgis/rest/services/World_Imagery/WMTS/1.0.0/default028mm/MapServer/tile/{layerId}/{z}/{y}/{x}

参数:

  • layerId: 图层 ID(如 13192)
  • z: 缩放级别
  • y: 瓦片行号
  • x: 瓦片列号

看到这里,你是否认为遍历layerid然后构造url就形成不同期次的历史影像的xyz地址了呢?其实不然。

下面对ESRI的历史影像发布机制进行介绍:

ESRI 的更新机制是“增量发布”,同样有两个概念需要明确:

发布日期:JSON 里的 WB_2025_R12 代表 2025 年第 12 次发布。

拍摄日期:对于你要下载的那个区域,这次发布可能根本没更新影像,直接沿用了旧图。

我们要的不是“哪天发布的”,而是“哪天拍的”。这就需要用到第二个关键接口:Metadata Query API

03 构造元数据查询

这是最难并且有很多坑的地方:

我们需要构造请求取查询:“在这个坐标区域,这层图到底是什么时候拍的?”

即:XX地点,缩放到15层级,有多少期可以查看的历史影像?

这个请求通过以下API完成:

https://metadata.maptiles.arcgis.com/arcgis/rest/services/World_Imagery_Metadata{identifier}/MapServer/{layer}/query

这里有三个必须动态替换的参数,也是最大的坑:

  • 1. identifier 的格式

    配置文件里给的是 WB_2024_R06,但在 API 里必须转成 小写且去掉 WB 的形式:_2024_r06。 如果直接用 WB_…,服务器会报 404。

  • 2. layer 参数(不是 Zoom!)

    这个参数决定了你查的是哪一层级的元数据。经过反复测试,其具备4、6、8、10等多种参数,代表不同的缩放层级。

  • 3. 坐标转换(Web Mercator)

    查询参数里需要传入 geometry,ESRI 不认经纬度(WGS84),只认 Web Mercator (EPSG:3857)。

以及查询参数如下:

  • 查询参数: ?f=json &where=1%3D1 &outFields=SRC_DATE2 &returnGeometry=false &geometryType=esriGeometryPoint &spatialRel=esriSpatialRelIntersects &geometry={URL编码的GeoJSON点}

以上合起来,在python中的实现如下:

假设我们要查 2024 R06 版本,在坐标 x,y 处的信息base_url =”https://metadata.maptiles.arcgis.com/arcgis/rest/services/World_Imagery_Metadata_2024_r06/MapServer/8/query”params = {“f”:”json”,# 返回格式”where”:”1=1″,# 必填”outFields”:”SRC_DATE2″,# 我们只关心拍摄日期”returnGeometry”:”false”,”geometryType”:”esriGeometryPoint”,”geometry”:f'{{“x”:{x},”y”:{y},”spatialReference”:{{“wkid”:3857}}}}’# JSON格式的坐标}# 发送请求拿到 SRC_DATE2,就是真实的毫秒级拍摄时间戳

04 去重和瓦片拼接

当拿到所有版本的SRC_DATE2后,逻辑就清晰了:

分组:把同一个位置、所有版本的拍摄日期列出来。

去重:如果 10 个版本返回的拍摄时间戳都是 1672531200000,说明它们是同一张图,只保留最新的那个 layerId。

下载:最后一步,拼接瓦片下载地址。这个最简单,不再赘述。

05 注意事项

1、并发控制:config.json里有几百个图层,不要同时发几百个 Metadata 请求,ESRI 会封 IP。

2、Zoom< 12 查不到数据:如果你的业务需要看大尺度的国家级历史变迁,这个 API 可能不适合,它在低 Zoom 下返回空值。

读完本文,如果你熟悉瓦片数据的处理

再借助AI,几天时间就可以自己做一个历史影像下载器了

本文给出的很多接口信息还未看到有人公布

也都是笔者debug了很久才搞明白的

2025年最后一天,以此回馈下公众号读者~

感谢大家一路支持

企业内网、国产化研发环境,如何搭建一套

AI代码开发平台,为产研提质增效!

DeepSeek刷屏全网之下,别被流量带偏,理性实践才是硬道理

也说遥感共性产品,行业需要什么样的遥感产品?

看水利部水利遥感星座战略布局,机遇与挑战并存

Umbra开源雷达影像下载工具开发实践

NASA与微软联合推出“Earth Copilot”,“智能助手“或成为行业产品标配

欢迎交流

笔者长期从事人工智能、遥感、大模型等业务


免责声明:

本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。

任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。

本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我

本文转载自:空天感知 mapxiaotu《2025年末礼包:立省几千元!带你实现一个遥感历史影像下载器》

OWASP十大API安全风险 网络安全文章

OWASP十大API安全风险

文章总结: 文档解析OWASP十大API安全风险,涵盖失效授权、身份验证及资源消耗等核心问题。建议企业构建全流程监控体系,实施精准风险识别与实时告警,通过密钥生
评论:0   参与:  0