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

IDL学习笔记(三)OMI数据处理。hdf5文件读取,图像反转,GeoTiff区别,月季年均值计算提取输出,单位转换,运行时间计算

modis Level 2 grid 数据是全球格网化数据。一天的数据全在其中。
modis Level 1 和 2 数据是一景一景的影像。

IDL学习笔记(三)OMI数据处理

  • hdf5文件读取
    • 单位转换,输出hdf5数据集的图像,并检查图像经纬度是否正确,若错误,则进行翻转等操作
  • GeoTiff 和 一般的 Tiff 区别
  • 目标影像下GeoTiff信息如何获取?
  • 计算不同年份数据,XX月均值计算。季度均值计算。年均值计算。(仅计算有效值,忽略无效值)

hdf5文件读取

hdf explor中,看起来像 “ 文件夹 ”一样,通俗可以叫做组。hdf5 与 hdf4不同,hdf5 不能只有数据集的名字,必须也有完整组名,才能被完整找到读出。

读取HDF5数据的一般步骤·
1、打开HDF5文件,获取文件id·
2、获取数据集名
3、将数据集名转换为数据集id
4、从数据集id处读取数据·
5、关闭数据集和文件

hdf5文件读取:

function hdf5_data_get,file_name,dataset_namefile_id = h5f_open(file_name)dataset_id = h5d_open(file_id,dataset_name) ;直接返回id 而不是indexdata = h5d_read(dataset_id)h5f_close,dataset_idh5d_close,file_idreturn,datadata = !null ;销毁data, 清空内存end

注意与hdf4文件读取,相区分:

function hdf4_data_get, file_name,sds_namesd_id = hdf_sd_start(file_name,/read)sds_index = hdf_sd_nametoindex(sd_id,sds_name)sds_id = hdf_sd_select(sd_id,sds_index)hdf_sd_getdata,sds_id,datahdf_sd_endaccess,sds_idhdf_sd_end,sd_idreturn,data
end

单位转换,输出hdf5数据集的图像,并检查图像经纬度是否正确,若错误,则进行翻转等操作

function hdf4_data_get, file_name,sds_namesd_id = hdf_sd_start(file_name,/read)sds_index = hdf_sd_nametoindex(sd_id,sds_name)sds_id = hdf_sd_select(sd_id,sds_index)hdf_sd_getdata,sds_id,datahdf_sd_endaccess,sds_idhdf_sd_end,sd_idreturn,data
endfunction hdf5_data_get,file_name,dataset_namefile_id = h5f_open(file_name)dataset_id = h5d_open(file_id,dataset_name) ;直接返回id 而不是indexdata = h5d_read(dataset_id)h5d_close,dataset_id ; h5d 关闭数据集h5f_close,file_id ; h5f 关闭文件return,datadata = !null ;销毁data, 清空内存endpro omi_no2_outputfile_name = 'E:/Data/IDL/chapter_2/NO2/2017/OMI-Aura_L3-OMNO2d_2017m0101_v003-2018m0627t042221.he5'dataset_name = '/HDFEOS/GRIDS/ColumnAmountNO2/Data Fields/ColumnAmountNO2TropCloudScreened'out_directory = 'E:/Data/IDL/chapter_2/result/';测试out_directory的目录(/directory)是否存在,若不存在,则创建dir_test = file_test(out_directory, /directory) if dir_test eq 0 then beginfile_mkdir,out_directoryendifout_name = out_directory + file_basename(file_name,'.h5')+'.tiff' ; 舍弃文件路径,只获取基础路径,但同时舍去".he5"data_temp = hdf5_data_get(file_name,dataset_name)data_temp = ((data_temp gt 0.0)*data_temp*10.0^10.0)/(!const.NA);(!const.NA)是阿伏伽德罗常数,该句是转换单位 最后单位是mol/km2;单位换完后,数据会变成“百”“千”量级,方便灰度拉伸;由于图像左右经度是正确的,但上下纬度是颠倒的,因此需要做一个上下反转(用到 rotate)函数data_temp = rotate(data_temp,7)write_tiff,out_name,data_temp,/float;,geotiff = geo_infoend

可以通过envi进行经纬度的查看。

GeoTiff 和 一般的 Tiff 区别

Geotiff和一般tiff的区别:
Geotiff有包含地理坐标、投影相关的描述信息

如何把上述 tiff 改为 GeoTiff 呢?

添加结构体、添加wirte_tiff后面的关键词。

结构体:

  ;投影参数geo_info = {$ ;结构体MODELPIXELSCALETAG:[0.25, 0.25, 0.0],$ ;X /Y /Z 方向的像元分辨率MODELTIEPOINTTAG:[0.0, 0.0, 0.0, -180.0, 90.0, 0.0],$ ;角点坐标。前三个指定位置,后三个指定数值。坐标转换信息,前三个0.0表示栅格图像第0,0,0个像素位置(z方向一般不存在),(若为0.5)就代表中心位置。后面-180.0代表x方向第 0 个位置对应的经度是 -180度,90.0代表y方向第0个位置对应的纬度是90.0度;MODELTIEPOINTTAG:[0.5, 0.0, 0.0, -179.875, 90.0, 0.0],$ ; 当起点中心偏移0.25,那么后面也要改GTMODELTYPEGEOKEY:2,$GTRASTERTYPEGEOKEY:1,$GEOGRAPHICTYPEGEOKEY:4326,$GEOGCITATIONGEOKEY:'GCS_WGS_1984',$GEOGANGULARUNITSGEOKEY:9102,$GEOGSEMIMAJORAXISGEOKEY:6378137.0,$GEOGINVFLATTENINGGEOKEY:298.25722}

一般只需要修改
1.MODELPIXELSCALETAG:[0.25, 0.25, 0.0],$ ;前两个0.25(分辨率,因为一般为2维)
2. MODELTIEPOINTTAG:[0.0, 0.0, 0.0, -180.0, 90.0, 0.0],$ ;一般需要修改-180.0,90.0这两个数字
3. 下面的数字不需要修改。涉及到GeoTiff的存储信息。如果只有上面两个信息,软件读取可能会乱赋值,所以需要写。
4. " $ "代表换行(另起一行)

目标影像下GeoTiff信息如何获取?

获取目标投影geotiff信息的最简方式
1.找一个已有目标投影格式的tiff文件
2.idl读取其中的geotiff结构体

tiff_file = 'D:/world_dem.tif'
data = read_tiff ( tiff_file , geotiff = geo_info )
print, geo_info
help, geo_info

3.修改该结构体中与起始坐标、分辨率的相关参数
4.将修改后的结构体写入目标文件

在这里插入图片描述

注意:可以对目标影像进行,重采样,裁剪等操作,看看哪些参数没有改变,无变化参数就是结构体需要的数字。

关于Geotiff的更多说明:

https://gis.stackexchange.com/questions/62837/understanding-geotifftagshttp://duff.ess.washington.edu/data/raster/drg/docs/geotiff.txt

计算不同年份数据,XX月均值计算。季度均值计算。年均值计算。(仅计算有效值,忽略无效值)

在这里插入图片描述

function h5_data_get,file_name,dataset_namefile_id=h5f_open(file_name)dataset_id=h5d_open(file_id,dataset_name)data=h5d_read(dataset_id)h5d_close,dataset_idh5f_close,file_idreturn,datadata=!null
endpro omi_no2_average_calculating;输入输出路径设置start_time = systime(1) ; 程序按秒计时,开始计时,与最后的end_time相呼应in_path = 'E:\Data\IDL\chapter_2\NO2\'out_path = 'E:\Data\IDL\chapter_2\NO2\average\'dir_test = file_test(out_path,/directory) ;检测目标文件夹是否存在if dir_test eq 0 then beginfile_mkdir, out_pathendiffilelist = file_search(in_path,'*NO2*.he5') ; 搜索NO2文件下面的,所以hdf5文件file_n = n_elements(filelist)group_name = '/HDFEOS/GRIDS/ColumnAmountNO2/Data Fields/' ; hdf5 需要组的路径,才能读取数据集target_dataset = 'ColumnAmountNO2CloudScreened'dataset_name = group_name + target_dataset; 月份存储数组初始化data_total_month = fltarr(1440,720,12) ; 1440列和720行可以在hdf explor里看到,12分别代表12个月份data_valid_month = fltarr(1440,720,12)data_avr_month = fltarr(1440,720,12); 季节存储数组初始化data_total_season = fltarr(1440,720,4) data_valid_season = fltarr(1440,720,4)data_avr_season = fltarr(1440,720,4); 处理年份设置、年份储存数组初始化year_start = 2017year_n = 2data_total_year = fltarr(1440,720,year_n) data_valid_year = fltarr(1440,720,year_n)data_avr_year = fltarr(1440,720,year_n)for file_i = 0, file_n - 1 do beginprint, filelist[file_i]data_temp = hdf5_data_get(filelist[file_i],dataset_name);help,data_temp ;Array[1440, 720]data_temp = ((data_temp gt 0.0)*data_temp/!const.NA)*(10.0^10.0);转换单位为 mol/km2data_temp = rotate(data_temp,7); 图像反转layer_i = fix(strmid(file_basename(filelist[file_i]),24,2)) - 1 ;从名字中去除月份的信息,从名字中,第24个字母开始取,取两个,但是由于1月要放在0层,2月要放在1层,因此需要-1;月均值data_total_month[*, *, layer_i] = data_temp + data_total_month[*, *, layer_i]data_valid_month[*, *, layer_i] = (data_temp gt 0) + data_valid_month[*, *, layer_i] ;有效是1,无效是0。所有大于0的,记录为1,加入进去,这样,就可以算出每一个位置上出现过几次有效值了;季月均值if(layer_i ge 2) and (layer_i le 4) then begindata_total_season[*, *,  0] = data_tempdata_valid_season[*, *,  0] = (data_temp gt 0.0)endifif(layer_i ge 5) and (layer_i le 7) then begindata_total_season[*, *,  1] = data_tempdata_valid_season[*, *,  1] = (data_temp gt 0.0)endifif(layer_i ge 8) and (layer_i le 10) then begindata_total_season[*, *,  2] = data_tempdata_valid_season[*, *,  2] = (data_temp gt 0.0)endifif(layer_i ge 11) or (layer_i le 1) then begindata_total_season[*, *,  3] = data_tempdata_valid_season[*, *,  3] = (data_temp gt 0.0)endif;年均值year_i = fix(strmid(file_basename(filelist[layer_i]),19,4)) - year_start; 从文件名当中读取年份,减去2017,就只有0或者1(仅两年:2016、2017),且不能是string格式,需要强制类型转换data_total_year[*, *,  year_i] = data_tempdata_valid_year[*, *,  year_i] = (data_temp gt 0.0)endfordata_valid_month = (data_valid_month gt 0.0)*data_valid_month + (data_valid_month eq 0.0)*(1.0)data_valid_season = (data_valid_season gt 0.0)*data_valid_season + (data_valid_season eq 0.0)*(1.0)   data_valid_year = (data_valid_year gt 0.0)*data_valid_year + (data_valid_year eq 0.0)*(1.0)  data_avr_month = data_total_month / data_valid_monthdata_avr_season = data_total_season / data_valid_season   data_avr_year = data_total_year / data_valid_year   geo_info = {$MODELPIXELSCALETAG:[0.25,0.25,0.0],$;x、y、z方向的像元分辨率MODELTIEPOINTTAG:[0.0,0.0,0.0,-180.0,90.0,0.0],$;坐标转换信息,前三个0.0代表栅格图像上的第0,0,0个像元位置(z方向一般不存在),后面-180.0代表x方向第0个位置对应的经度是-180.0度,90.0代表y方向第0个位置对应的纬度是90.0度GTMODELTYPEGEOKEY:2,$GTRASTERTYPEGEOKEY:1,$GEOGRAPHICTYPEGEOKEY:4326,$GEOGCITATIONGEOKEY:'GCS_WGS_1984',$GEOGANGULARUNITSGEOKEY:9102,$GEOGSEMIMAJORAXISGEOKEY:6378137.0,$GEOGINVFLATTENINGGEOKEY:298.25722}for mon_i = 0, 11 do beginout_name = out_path + 'month_avr_' + strcompress(string(mon_i),/remove_all) + '.tiff'write_tiff,out_name, data_avr_month[*, *,mon_i],/float, geotiff = geo_info endforfor season_i = 0, 3 do beginout_name = out_path + 'season_avr_' + strcompress(string(season_i),/remove_all) + '.tiff'write_tiff,out_name, data_avr_month[*, *,season_i],/float, geotiff = geo_infoendforfor year_i = 0, 1 do beginout_name = out_path + 'year_avr_' + strcompress(string(year_i),/remove_all) + '.tiff'write_tiff,out_name, data_avr_month[*, *,year_i],/float, geotiff = geo_infoendforend_time = systime(1)print,'Processing is end, the total time consuming is : ' + strcompress(string(end_time - start_time)) + 's.'; /removeallend

1月份数据在第0层,同理,第N月数据,在第N-1层。

1.strcomptress  函数可以 仅保留一个空格 把多余空格剔除掉。
2.加关键字,/remove_all ,可以把前面所有空格剔除,一个也不保留
3.输出路径不要把最后的/漏掉

程序完成后的提示一定要注意,若出现:

% Program caused arithmetic error: Floating illegal operand

可能是出现了0/0这样的非法操作,这样的原因可能是没有有效数据,导致存出去的结果有NAN的数值存在。所以当分母为0时候,可以进行一些操作,把分母换成其他的数字就可以了

systime这个函数,是系统内置的时间函数,默认输出的是当前时间,systime(1)代表相对于过去了多少秒,可以计算一个程序运行了多少秒。前后均添加该函数,就可以计算时间了。

相关文章:

IDL学习笔记(三)OMI数据处理。hdf5文件读取,图像反转,GeoTiff区别,月季年均值计算提取输出,单位转换,运行时间计算

modis Level 2 grid 数据是全球格网化数据。一天的数据全在其中。 modis Level 1 和 2 数据是一景一景的影像。 IDL学习笔记(三)OMI数据处理 hdf5文件读取单位转换,输出hdf5数据集的图像,并检查图像经纬度是否正确,若错…...

深入浅出:PHP中的数据类型全解析

文章目录 引言理解数据类型标量类型整数 (integer)浮点数 (float)布尔值 (boolean)字符串 (string) 复合类型数组 (array)对象 (object)资源 (resource)NULL 特殊类型Callable强制类型转换 实战案例总结与展望参考资料 引言 在编程的世界里,数据类型是构建任何应用…...

要使用 OpenResty 创建一个接口,返回客户端的 IP 地址,并以 JSON 格式输出

要使用 OpenResty 创建一个接口,返回客户端的 IP 地址,并以 JSON 格式输出 要使用 OpenResty 创建一个接口,返回客户端的 IP 地址,并以 JSON 格式输出方案一解决方案(openresty使用cjson)说明:使…...

智慧油客:从初识、再识OceanBase,到全栈上线

今天,我们邀请了智慧油客的研发总监黄普友,为我们讲述智慧油客与 OceanBase 初识、熟悉和结缘的故事。 智慧油客自2016年诞生以来,秉持新零售的思维,成功从过去二十年间以“以销售产品为中心”的传统思维模式,转向“以…...

ClickHouse守护进程

背景描述 维护CK过程中,有时候会有CK OOM,并且CK自己没有自动拉起的情况出现;那么这个时候就需要守护进程,最初我不说了Supervisor来做守护进程,但是当我手动kill的时候发现并没有自动拉起。 解决方案 于是乎自己写…...

智能合约

06-智能合约 0 啥是智能合约? 定义 智能合约,又称加密合约,在一定条件下可直接控制数字货币或资产在各方之间转移的一种计算机程序。 角色 区块链网络可视为一个分布式存储服务,因为它存储了所有交易和智能合约的状态 智能合约还…...

SQL面试题——拼多多SQL面试题 求连续段的起始位置和结束位置

拼多多SQL面试题 求连续段的起始位置和结束位置 今天的题目来自拼多多,我们先看一下题目描述 有一张表ids记录了id,id不重复,但是会存在间断,求出连续段的开始位置和结束位置 +---+ | id| +---+ | 1| | 2| | 3| | 5| | 6| | 8| | 10| | 12| | 13| | 14| | 15| +--…...

玩《三角洲行动》遇到游戏运行故障是什么原因?游戏运行故障要怎么解决?预防游戏运行故障问题出现

《三角洲行动》游戏运行故障解析与解决方案:原因、解决与预防 在畅游《三角洲行动》这款充满挑战与激情的游戏时,玩家可能会遭遇各种游戏运行故障,如卡顿、闪退、无法启动等问题。我将结合自己丰富的经验和知识,为大家深入剖析《…...

基于灰色神经网络的订单需求预测

灰色神经网络(Grey Neural Network, GNN) 是将灰色系统理论与人工神经网络相结合的一种模型,旨在处理不完全信息和小样本问题。灰色神经网络利用灰色系统的预测优势和神经网络的学习能力,能够在信息不完整或数据不充分的情况下实现…...

记录学习《手动学习深度学习》这本书的笔记(三)

这两天看完了第六章:卷积神经网络,巧的是最近上的专业选修课刚讲完卷积神经网络,什么卷积层池化层听得云里雾里的,这一章正好帮我讲解了基础的知识。 第六章:卷积神经网络 6.1 从全连接层到卷积 在之前的学习中&…...

JS中递归函数的理解及展开运算符在递归种的运用理解

<!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><title>递归函数</title> </head> <body> <script>const list ["你好", "吃饭了吗",["好",[[&qu…...

人工智能学习用的电脑安装cuda、torch、conda等软件,版本的选择以及多版本切换

接触人工智能的学习三个月了&#xff0c;每天与各种安装包作斗争&#xff0c;缺少依赖包、版本高了、版本低了、不兼容了、系统做一半从头再来了。。。这些都是常态。三个月把单位几台电脑折腾了不下几十次安装&#xff0c;是时候总结一下踩过的坑和积累的经验了。 以一个典型的…...

提高身份证 OCR 识别 API 接口的准确性的方法

身份证OCR识别API接口能够快速、准确地识别并提取身份证上的文字信息&#xff0c;包括姓名、性别、民族、出生日期、住址、身份证号、签发机关、有效期限等关键内容&#xff0c;将其转化为计算机可处理的结构化数据&#xff0c;从而实现身份证信息的自动化录入和处理&#xff0…...

PHP面向对象

在 PHP 中&#xff0c;面向对象编程&#xff08;Object-Oriented Programming&#xff0c;简称 OOP&#xff09;是一种编程范式&#xff0c;它使用“对象”来组织和设计代码。对象是类的实例&#xff0c;类是定义对象特征和行为的蓝图。面向对象编程的主要目标是提高代码的可重…...

Tomcat新手成长之路:安装部署优化全解析(下)

接上篇《Tomcat新手成长之路&#xff1a;安装部署优化全解析&#xff08;上&#xff09;》: link 文章目录 7.应用部署7.1.上下文7.2.启动时进行部署7.3.动态应用部署 8.Tomcat 类加载机制8.1.简介8.2.类加载器定义8.3.XML解析器和 Java 9.JMS监控9.1.简介9.2.启用 JMX 远程监…...

GPT 1到4代的演进笔记

1. GPT-1 标题是 Improving Language Understanding by Generative Pre-Training. 发表于 2018.02, 比 bert(发布于 2018.10) 早了半年. 1.1 动机 困难:NLU 任务是多样的, 有 {textual entailment, question answering, semantic similarity assessment, document classifica…...

vitepress组件库文档项目 markdown语法大全(修正版)

#上次总结的 有些语法是用在markdown文档中的 使用到vitepress项目中有些语法可能有出入 于是我再总结一版 vitepress项目中的markdown语法大全 在阅读本章节之前&#xff0c;请确保你已经对 Markdown 有所了解。如果你还不了解 Markdown &#xff0c;请先学习一些Markdown 教…...

Vue3技术开发,使用纯CSS3动手制作一个3D环绕的相册展示效果,支持传入任意图片.3D轮播相册的组件

主要讲述封装一个3D轮播相册的组件&#xff0c;效果图如下&#xff0c;仅仅传入一个图片的数组即可&#xff0c;效果如下&#xff1a; 使用Vue3技术开发&#xff0c;支持传入任意张数的图片。 使用方法 <template><Swiper :list"list" /> </templat…...

LeetCode 力扣 热题 100道(十五)搜索插入位置(C++)

给定一个排序数组和一个目标值&#xff0c;在数组中找到目标值&#xff0c;并返回其索引。如果目标值不存在于数组中&#xff0c;返回它将会被按顺序插入的位置。 请必须使用时间复杂度为 O(log n) 的算法。 代码如下所示&#xff1a; class Solution { public:int searchIns…...

【035】基于51单片机俄罗斯方块游戏机【Proteus仿真+Keil程序+报告+原理图】

☆、设计硬件组成&#xff1a;51单片机最小系统LCD12864液晶显示按键控制。 1、设计采用STC89C52、AT89C52、AT89S52作为主控芯片&#xff0c;采用LCD12864液晶作为显示&#xff0c;大屏显示就是刺激&#xff1b; 2、游戏设置十个关卡&#xff0c;每个关卡累计99分即可进入下…...

别再乱建索引了!用进销存系统的真实案例,聊聊MySQL索引优化与视图设计的那些坑

MySQL索引优化与视图设计实战&#xff1a;进销存系统的避坑指南 当你的进销存系统从几百条记录增长到数百万条时&#xff0c;那些曾经瞬间完成的查询开始变得迟缓&#xff0c;收银台前的顾客开始不耐烦地敲击柜台&#xff0c;而老板的脸色也随着系统响应时间的增加而越发阴沉。…...

长期项目中使用Taotoken观测用量与优化API调用策略

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 长期项目中使用Taotoken观测用量与优化API调用策略 在持续数月的开发项目中&#xff0c;团队对大型语言模型的调用往往从简单的功能…...

AI视频工业化生产新范式(Sora 2与DaVinci深度耦合技术解密)

更多请点击&#xff1a; https://kaifayun.com 第一章&#xff1a;AI视频工业化生产新范式&#xff08;Sora 2与DaVinci深度耦合技术解密&#xff09; Sora 2不再仅是生成式模型的单点突破&#xff0c;而是作为视频工业流水线的智能中枢&#xff0c;与Blackmagic Design DaVi…...

MySQL-进阶篇-锁

温馨提示&#xff1a;建议在PC端浏览~锁概述介绍 锁是计算机协调多个进程或线程并发访问某一资源的机制。在数据库中&#xff0c;除传统的计算资源&#xff08;CPU、RAM、I/O&#xff09;的争用以外&#xff0c;数据也是一种供许多用户共享的资源。如何保证数据并发访问的一致性…...

ncmdump终极指南:5分钟解锁网易云音乐NCM加密文件

ncmdump终极指南&#xff1a;5分钟解锁网易云音乐NCM加密文件 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 你是否曾在网易云音乐下载了心爱的歌曲&#xff0c;却发现只能在特定客户端播放&#xff1f;当你想在车载音响、智能音箱…...

VAP特效动画:跨平台高性能动画播放的终极解决方案

VAP特效动画&#xff1a;跨平台高性能动画播放的终极解决方案 【免费下载链接】vap VAP是企鹅电竞开发&#xff0c;用于播放特效动画的实现方案。具有高压缩率、硬件解码等优点。同时支持 iOS,Android,Web 平台。 项目地址: https://gitcode.com/gh_mirrors/va/vap VAP&…...

OPPO Pad 6 官宣!3K 柔光屏,5 月 25 日发布

5月18日&#xff0c;OPPO 正式官宣全新平板 OPPO Pad 6&#xff0c;定档 5月25日与 Reno16 系列同台发布。作为迭代款&#xff0c;它没有激进改款&#xff0c;而是在成熟设计上精准升级 —— 核心芯片、屏幕、续航、存储与手写体验全面优化&#xff0c;瞄准学生网课、大屏娱乐、…...

大模型时代,小白程序员如何抓住机遇?阿里高薪Offer背后的大模型学习指南(收藏版)

文章主要介绍了阿里在大模型领域的强势发展&#xff0c;包括高薪Offer和招聘趋势&#xff0c;强调了AI技能的重要性。作者建议小白和程序员学习大模型技术&#xff0c;并推荐了“派聪明RAG项目”作为学习资源。同时&#xff0c;文章还探讨了AI工具的实际应用和挑战&#xff0c;…...

利用Taotoken模型广场为不同任务场景选择合适的大模型

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 利用Taotoken模型广场为不同任务场景选择合适的大模型 当你的项目需要处理多种类型的任务时&#xff0c;例如同时涉及内容创作、代…...

告别复杂配置,使用Taotoken CLI一键生成多工具环境配置文件

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 告别复杂配置&#xff0c;使用Taotoken CLI一键生成多工具环境配置文件 在接入多个大模型工具时&#xff0c;开发者常常需要为每个…...