ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

遥感大气校正6S补充目录:把endpoint改到TaoToken的配置清单

遥感大气校正6S补充目录:把endpoint改到TaoToken的配置清单 1. 遥感大气校正为什么总卡在 6S 的补充目录上做遥感影像预处理的人大概率都碰过 6S 模型Second Simulation of the Satellite Signal in the Solar Spectrum。它负责模拟太阳辐射穿过大气时发生的散射与吸收输出大气校正需要的透过率、程辐射、球面反照率等参数。真正让人头疼的不是模型本身而是它的补充目录——也就是光谱响应函数、BRDF 模型编号、气溶胶模式这些需要手工填写的配置项。6S 的输入文件里光谱条件spectral conditions用一串数字代码表示不同卫星的波段范围。比如代码 25 代表 Landsat5 TM 第 1 波段0.430-0.560 μm代码 61 代表 Landsat7 ETM 第 1 波段0.435-0.520 μm。这些编号散落在文档里填错一个数字整幅影像的校正结果就偏了。BRDF 代码同理1 到 9 分别对应 Hapke、Verstraete、Roujean、Walthall、Minnaert、Ocean、Iaquinta and Pinty、Rahman、Kuusk 等模型选错会让方向反射校正完全跑偏。问题在于很多团队把 6S 跑在本地或内网机器上模型调用、参数校验、结果回传全靠手工。一旦要批量处理多景影像或者想让校正流程接入自动化管线这套方式就撑不住了。我试过把 6S 的调用封装成 HTTP 服务用统一的 Key 和 API 通道来管理这样每景影像的校正任务都能通过接口提交参数和结果都有记录。下面就把这套配置清单和验证动作完整写出来你可以直接照着复现。核心检索词先明确遥感大气校正 6S 补充目录指的是 6S 模型运行所需的辅助参数集合包括光谱波段代码、BRDF 模型编号、气溶胶类型等统一 Key/API 通道指的是把模型调用收敛到一个可管理的接口层用同一套凭证和 endpoint 来提交任务、获取结果。适合谁做 Landsat、MODIS、SPOT、AVHRR 等影像预处理的研究生、工程师以及想把校正流程工程化的团队。2. 把 6S 调用收敛到 TaoToken 的前置准备在动手改 endpoint 之前先把思路理清楚。6S 本身是一个辐射传输计算程序它不直接处理影像而是根据你给的几何条件、大气条件、光谱条件算出一组校正系数。传统做法是本地编译 6S写输入文件跑可执行程序读输出文件。这套流程在单景调试时没问题但批量处理时输入文件的生成、程序调用、输出解析全是手工活容易出错。把调用收敛到统一 API 通道的好处是输入参数通过接口传递模型在服务端运行结果以结构化格式返回。你不需要在本地维护 6S 的编译环境也不用担心不同机器上版本不一致。TaoToken 在这里扮演的是统一入口的角色它提供兼容主流接口规范的 endpoint你可以用同一套 Key 来调用模型对话、代码生成、以及接入文档里描述的能力。前置准备分三步。第一步拿到 API Key。访问 https://taotoken.net/api-keys 创建密钥注意 Key 只在创建时显示一次复制后妥善保存。第二步确认 Base URL。TaoToken 的 API 地址是 https://taotoken.net/api所有请求都走这个入口。第三步选定 Model ID。如果你要用模型来辅助生成 6S 输入文件、解析输出结果或者做参数校验需要指定具体的模型标识。这三件套——Base URL、Key、Model ID——是后续所有配置的基础。这里要提醒一点不要把 Key 硬编码在脚本里提交到代码仓库。用环境变量或者配置文件管理后面我会给出具体的 settings 片段。另外TaoToken 的官网是 https://taotoken.net/?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content接入文档在 https://taotoken.net/doc遇到接口格式问题先查文档。对于遥感大气校正场景你可能会用到的能力包括让模型根据影像元数据生成 6S 输入参数、把 6S 输出结果转成可读的校正系数表、校验光谱波段代码是否匹配。这些都不需要本地跑 6S通过 API 提交请求即可。下面进入具体配置。3. 可复制的 endpoint 配置片段与 6S 参数映射这一节给出可以直接复制使用的配置。先看环境变量文件路径放在项目根目录的.env# .env TAOTOKEN_BASE_URLhttps://taotoken.net/api TAOTOKEN_API_KEYsk-your-key-here TAOTOKEN_MODEL_IDclaude-3-5-sonnet如果你用的是 Python 项目可以在settings.py或config.py里读取# config.py import os from dotenv import load_dotenv load_dotenv() TAOTOKEN_CONFIG { base_url: os.getenv(TAOTOKEN_BASE_URL, https://taotoken.net/api), api_key: os.getenv(TAOTOKEN_API_KEY), model_id: os.getenv(TAOTOKEN_MODEL_ID, claude-3-5-sonnet), }如果你用 Node.js 或前端工具链可以写成 JSON 配置{ taotoken: { baseUrl: https://taotoken.net/api, apiKey: sk-your-key-here, modelId: claude-3-5-sonnet } }接下来是 6S 补充目录的参数映射。6S 输入文件里光谱条件用数字代码表示你需要把影像的波段信息映射到对应代码。下面这张表覆盖了常见卫星卫星/传感器波段6S 代码波长范围μmLandsat5 TMBand 1250.430-0.560Landsat5 TMBand 2260.500-0.650Landsat5 TMBand 3270.580-0.740Landsat5 TMBand 4280.730-0.950Landsat7 ETMBand 1610.435-0.520Landsat7 ETMBand 2620.506-0.621Landsat7 ETMBand 3630.622-0.702Landsat7 ETMBand 4640.751-0.911MODISBand 1420.6100-0.6850MODISBand 2430.8200-0.9025MODISBand 3440.4500-0.4825MODISBand 4450.5400-0.5700SPOT1 HRV1Band 1170.470-0.650SPOT1 HRV1Band 2180.600-0.720SPOT1 HRV1Band 3190.730-0.930AVHRR (NOAA11)Band 1150.540-0.820AVHRR (NOAA11)Band 2160.600-1.120BRDF 模型代码同样需要映射。6S 支持 9 种 BRDF 模型代码 1 到 9 分别对应代码BRDF 模型1Hapke model2Verstraete et al. model3Roujean et al. model4Walthall et al. model5Minnaert model6Ocean7Iaquinta and Pinty model8Rahman et al. model9Kuusks multispectral CR model把这些映射写成配置文件放在项目里# sixs_mapping.py SPECTRAL_CODES { Landsat5_TM_B1: 25, Landsat5_TM_B2: 26, Landsat5_TM_B3: 27, Landsat5_TM_B4: 28, Landsat7_ETM_B1: 61, Landsat7_ETM_B2: 62, Landsat7_ETM_B3: 63, Landsat7_ETM_B4: 64, MODIS_B1: 42, MODIS_B2: 43, MODIS_B3: 44, MODIS_B4: 45, SPOT1_HRV1_B1: 17, SPOT1_HRV1_B2: 18, SPOT1_HRV1_B3: 19, AVHRR_NOAA11_B1: 15, AVHRR_NOAA11_B2: 16, } BRDF_CODES { Hapke: 1, Verstraete: 2, Roujean: 3, Walthall: 4, Minnaert: 5, Ocean: 6, Iaquinta_Pinty: 7, Rahman: 8, Kuusk: 9, }有了这些配置你就可以在提交校正任务时根据影像的传感器类型自动填充 6S 输入参数。比如一景 Landsat7 ETM 影像Band 3 对应代码 63BRDF 选 Roujean 对应代码 3。这些参数会随请求一起发给 TaoToken 的接口由模型辅助生成完整的 6S 输入文件。4. 提交一次校正任务并校验结果配置就绪后跑一次完整的校正任务。这里用 Python 写一个最小可运行示例演示从提交到结果校验的全过程。先安装依赖pip install requests python-dotenv然后写调用脚本# run_correction.py import os import json import requests from dotenv import load_dotenv from sixs_mapping import SPECTRAL_CODES, BRDF_CODES load_dotenv() BASE_URL os.getenv(TAOTOKEN_BASE_URL) API_KEY os.getenv(TAOTOKEN_API_KEY) MODEL_ID os.getenv(TAOTOKEN_MODEL_ID) def build_sixs_input(sensor_band, brdf_model, solar_zenith, solar_azimuth, view_zenith, view_azimuth, aerosol_type, visibility): spectral_code SPECTRAL_CODES.get(sensor_band) brdf_code BRDF_CODES.get(brdf_model) if spectral_code is None: raise ValueError(f未知波段: {sensor_band}) if brdf_code is None: raise ValueError(f未知 BRDF 模型: {brdf_model}) return { spectral_code: spectral_code, brdf_code: brdf_code, solar_zenith: solar_zenith, solar_azimuth: solar_azimuth, view_zenith: view_zenith, view_azimuth: view_azimuth, aerosol_type: aerosol_type, visibility: visibility, } def submit_correction(sixs_input): headers { Authorization: fBearer {API_KEY}, Content-Type: application/json, } payload { model: MODEL_ID, messages: [ { role: user, content: ( 根据以下 6S 输入参数生成完整的输入文件内容 并返回校正系数\n json.dumps(sixs_input, ensure_asciiFalse) ), } ], } resp requests.post( f{BASE_URL}/v1/chat/completions, headersheaders, jsonpayload, timeout60, ) resp.raise_for_status() return resp.json() if __name__ __main__: sixs_input build_sixs_input( sensor_bandLandsat7_ETM_B3, brdf_modelRoujean, solar_zenith35.0, solar_azimuth120.0, view_zenith5.0, view_azimuth0.0, aerosol_typecontinental, visibility23.0, ) result submit_correction(sixs_input) print(json.dumps(result, ensure_asciiFalse, indent2))运行脚本python run_correction.py如果配置正确你会收到一个 JSON 响应里面包含模型生成的 6S 输入文件内容和校正系数。校验结果时重点看三个地方一是光谱代码是否和影像波段匹配Landsat7 ETM Band 3 应该是 63二是 BRDF 代码是否和选择的模型一致Roujean 应该是 3三是输出的校正系数是否在合理范围内比如大气透过率通常在 0.5 到 0.95 之间程辐射值不应为负。如果返回结果里choices字段为空或者报错reading choices说明响应结构不符合预期检查请求体格式和模型标识。如果报 401说明 Key 无效或未正确传递。如果报local proxy failed说明网络层有问题检查 Base URL 是否写成了https://taotoken.net/api不要多加路径。校验通过后把校正系数应用到影像上。这一步可以用 GDAL 或 rasterio 读取影像按波段乘以系数。比如import rasterio import numpy as np with rasterio.open(input.tif) as src: profile src.profile data src.read() # 假设校正系数从接口结果中解析得到 gain 0.85 offset 0.02 corrected data * gain offset with rasterio.open(output_corrected.tif, w, **profile) as dst: dst.write(corrected)这样一景影像的大气校正就完成了。整个过程不需要本地编译 6S所有参数通过统一 API 通道提交结果可追溯。5. 常见报错排查401、local proxy failed、reading choices实际跑的时候报错集中在几个地方。下面按真实错误信息逐一排查。401 Unauthorized。这是最常见的。原因通常是 Key 没传对。检查三件事.env文件里TAOTOKEN_API_KEY是否以sk-开头请求头里Authorization字段是否是Bearer sk-xxx格式注意 Bearer 和 Key 之间有一个空格Key 是否已经过期或被删除。如果用的是 CI 环境确认环境变量有没有正确注入。另外不要把 Key 写在 URL 参数里TaoToken 的接口只认请求头。local proxy failed。这个报错说明请求没有到达服务端卡在了本地网络层。检查 Base URL 是否写成了https://taotoken.net/api不要写成https://taotoken.net/api/v1或其他路径路径拼接由 SDK 或请求库处理。如果你在本地设置了 HTTP 代理环境变量确认代理配置不会拦截对 TaoToken 的请求。另外确认本机 DNS 能正常解析taotoken.net可以用curl -I https://taotoken.net/api测试连通性。reading choices 报错。这个错误通常出现在解析响应时代码试图读取response[choices][0]但实际返回结构里没有choices字段。原因可能是请求体格式不对比如messages字段拼写错误或者model字段传了不存在的模型标识。检查请求体是否符合 OpenAI 兼容格式model、messages、max_tokens这些字段名要准确。如果返回的是错误信息先打印完整响应体看error字段里的描述。OAuth 相关报错。如果你用的是 Claude Code 或类似工具接入可能会遇到 OAuth 认证失败。这类工具通常需要配置 Base URL、Key、Model ID 三件套。以 Claude Code 为例在 settings 里配置{ apiBaseUrl: https://taotoken.net/api, apiKey: sk-your-key-here, model: claude-3-5-sonnet }如果工具提示 OAuth token 无效检查是否误用了 OAuth 流程而不是 API Key 认证。TaoToken 的接口用 Bearer Token 认证不需要走 OAuth 授权码流程。光谱代码不匹配。这个不报错但结果会偏。比如把 Landsat7 ETM Band 3 填成了 62那是 Band 2 的代码校正系数就会算错。排查方法是把影像元数据里的波段范围和 6S 代码表对照确认波长区间有重叠。MODIS 的波段范围比较窄容易和 Landsat 混淆填之前查一下传感器类型。BRDF 代码选错。6S 的 BRDF 模型代码 1 到 9选错会导致方向反射校正异常。比如城市区域通常用 Roujean 或 Walthall水体用 Ocean植被用 Rahman。如果不确定先用默认值跑一遍对比结果再调整。6. 把校正流程接入自动化管线单景调试通过后下一步是批量处理。把上面的脚本改造成可循环调用的函数输入是一组影像路径和对应的元数据输出是校正后的影像和日志。关键是把 6S 参数映射、API 调用、结果校验、影像应用这四个步骤解耦每个步骤都可以单独测试。对于长期跑校正任务的团队建议用 Coding Plan 来管理调用配额和并发。Coding Plan 适合需要持续调用模型能力的场景比如批量生成 6S 输入文件、自动校验参数、解析输出结果。你可以在 https://taotoken.net/coding-plan 查看具体方案。如果只是偶尔验证模型输出用模型对话页面就够了https://taotoken.net/chat。把 6S 输入参数贴进去让模型生成输入文件内容复制出来本地跑 6S 程序适合调试阶段。接入文档在 https://taotoken.net/doc里面有完整的接口说明和示例。API Keys 管理在 https://taotoken.net/api-keys创建和吊销 Key 都在这里操作。最后说一个实用技巧把每次校正任务的输入参数、API 响应、校正系数、影像路径写进一个 SQLite 或 CSV 日志方便回溯。遥感大气校正的可复现性很重要同一景影像在不同时间跑出不同结果时日志能帮你快速定位是参数变了还是模型版本变了。6S 的补充目录虽然繁琐但一旦映射表建好、API 通道打通后续就是流水线作业。
返回列表