You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将生成的唯一坐标对列表接入循环以批量下载Nearmap影像数据

如何将生成的唯一坐标对列表接入循环以批量下载Nearmap影像数据

看起来你已经走完了最关键的步骤——成功生成了所有需要的坐标对组合,现在就差把这些组合和下载逻辑串起来就行!我来一步步帮你整合:

核心思路

我们要遍历你生成的combinations列表里的每一个(x, y)元组,把x、y分别替换到下载代码里的myVal1、myVal2位置,重复执行下载流程即可。

整合后的完整代码

首先把所有逻辑按顺序梳理,注意将依赖导入放在最顶部,然后把下载逻辑嵌套到组合遍历的循环中:

import requests  # 依赖导入只需要执行一次,放在最开头

# 1. 生成目标坐标范围与所有唯一组合
range1 = range(634797, 634876)
range2 = range(776458, 776512)

# 生成所有(x,y)坐标对组合(你原有的嵌套循环写法完全有效)
combinations = []
for x in range1:
    for y in range2:
        combinations.append((x, y))

# 【可选优化】用itertools.product简化组合生成,代码更简洁
# from itertools import product
# combinations = list(product(range1, range2))

print(f"待下载的坐标对总数:{len(combinations)}")

# 2. 遍历坐标对,批量执行下载
API_KEY = "MYKEY"  # 你的API密钥,注意保密
SAVE_DIR = "/arcgis/home/nearmap/"  # 文件保存的基础路径

for x, y in combinations:
    # 动态构建请求URL与保存文件名
    url = f"https://api.nearmap.com/tiles/v3/surveys/6e33c960-4310-11ee-90f9-b3c1b4806389/North/21/{x}/{y}.jpg?apikey={API_KEY}"
    save_file = f"{SAVE_DIR}{x}_{y}.jpg"  # 用下划线分隔坐标,文件名更清晰易读

    try:
        # 发送下载请求
        headers = {"accept": "image/*"}
        response = requests.get(url, headers=headers)
        response.raise_for_status()  # 请求失败时直接抛出异常,避免无效文件写入

        # 写入文件
        with open(save_file, 'wb') as myImage:
            myImage.write(response.content)
        print(f"✅ 成功下载:{save_file}")
    except Exception as e:
        print(f"❌ 坐标对({x},{y})下载失败:{str(e)}")

关键修改点说明

  1. 结构优化:把所有逻辑按执行顺序整合,import requests仅需一次,放在代码最开头更规范。
  2. 组合遍历:用for x, y in combinations:直接解构每个坐标元组,自动完成变量赋值,无需手动处理索引,代码更直观。
  3. 动态参数:用Python f-string构建URL和文件名,比传统字符串拼接可读性更强,也不容易出错。
  4. 错误处理:新增try-except块和response.raise_for_status(),即使某几个坐标对下载失败(比如网络波动、无效坐标),程序也会继续处理剩余任务,不会直接崩溃。
  5. 冗余代码清理:你原来写的table_data测试代码和后续逻辑无关,如果不需要测试打印表格,可以直接删除,让代码更简洁。

备注:内容来源于stack exchange,提问作者Stephen Washburn

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.14 08:35:31