使用chatGPT开发获取格点天气数据

1. 格点天气

1.1. 格点天气

以经纬度为基准的全球高精度、公里级、格点化天气预报产品,包括任意经纬度的实时天气和天气预报。其中,任意坐标的高精度天气,精确到3-5公里范围,包括:温度、湿度、大气压、天气状况、风力、风向等。

注意:格点天气是一种数值预报,由卫星、气象雷达等数据通过模型算法运算而来,它可能受到许多因素的影响,如山脉、建筑物、人类活动、大气变化等。格点天气与观测站数据会有所不同,不可直接对比。

1.1. 格点天气预报

格点天气预报是一种基于空间插值方法,以一定空间分辨率在网格点上对大气各种物理量进行预报的技术。它通过对大气物理量进行网格化,以空间分辨率较高的方式预测未来气象变化。具体来说,格点天气预报通常采用的是数值天气预报模式,将地球分为一系列网格,利用物理方程计算每个网格内的天气参数,然后通过时间积分来预报未来天气。

格点天气预报的特点是可以提供较高精度的天气预报,因为它可以更好地捕捉小尺度天气现象和局地气象变化。此外,格点天气预报也可以针对不同的应用场景提供不同的预报结果。例如,针对航空、海洋、农业、城市气象等不同领域提供不同的预报数据,可以帮助相关领域做出更加准确的决策。

1.2. 格点实时天气

格点实时天气则是指利用近地观测数据以及格点天气模型,通过插值算法实时生成各类气象要素的技术。它可以快速生成气象要素的分布状态,并通过预报模型对未来几小时的变化趋势进行预报。这种技术可以用于实时监测和预警天气灾害、航空、海洋等领域的气象服务。

格点实时天气的特点是具有实时性和准确性。通过使用近地观测数据,它可以更加准确地反映实际天气状况,并及时提供气象预警服务。此外,由于实时预报的时间较短,因此其分辨率更高,能够更好地反映小尺度天气现象的变化。

2. 如何获取气象数据服务

本文以和风天气为例,注册用户(免费/收费),使用其API接口,详见“开始使用”。

2.1. 注册用户

第一步 注册帐号
首先你需要一个和风天气的帐号,关于帐号的说明文档,请参考帐号管理。

点击注册!

第二步 创建项目和KEY
在控制台的左侧导航中,选择项目管理,并点击右上角的“创建项目”按钮。参考项目和KEY。

在创建项目时,需要同时选择一种订阅,例如:免费订阅、标准订阅或高级订阅,我们这里暂时以免费订阅为例。参考订阅。

第三步 获取数据
在浏览器中输入下列API地址(请将最后的KEY替换成你在上一步创建的KEY):

https://devapi.qweather.com/v7/weather/now?location=101010100&key=你的KEY
如果在上一步选择的是标准订阅,请确保你的帐号可用额度≥10,并在浏览器中输入下列API地址:

https://api.qweather.com/v7/weather/now?location=101010100&key=你的KEY
此时你应该就可以获得北京市的实时天气数据了。不过请注意,免费订阅仅支持有限的数据和请求量,请参考订阅对比。

第四步 更多数据
参考开发文档获取更多数据。

2.2. API

对于和风天气网的格点天气,对应API及参数如下:

格点24小时天气预报API:

  • url=“https://devapi.qweather.com/v7/grid-weather/24h?”

  • location=‘103.59984,36.18057’ ,换成自己实际的 经、纬度

  • key=‘***************’ #我自己的和风天气key

格点实时天气数据API:

  • url=“https://devapi.qweather.com/v7/grid-weather/now?”

  • location=‘103.59984,36.18057’ ,换成自己实际的 经、纬度

  • key=‘***************’ #我自己的和风天气key

返回结果集:

  • code API状态码,具体含义请参考状态码
  • updateTime 当前API的最近更新时间
  • fxLink 当前数据的响应式页面,便于嵌入网站或应用
  • now.obsTime 数据观测时间
  • now.temp 温度,默认单位:摄氏度
  • now.icon 天气状况和图标的代码,图标可通过天气状况和图标下载
  • now.text 天气状况的文字描述,包括阴晴雨雪等天气状态的描述
  • now.wind360 风向360角度
  • now.windDir 风向
  • now.windScale 风力等级
  • now.windSpeed 风速,公里/小时
  • now.humidity 相对湿度,百分比数值
  • now.precip 当前小时累计降水量,默认单位:毫米
  • now.pressure 大气压强,默认单位:百帕
  • now.cloud 云量,百分比数值。可能为空
  • now.dew 露点温度。可能为空
  • refer.sources 原始数据来源,或数据源说明,可能为空
  • refer.license 数据许可或版权声明,可能为空

3. 使用chatGPT开发python获取格点天气数据

开发获取格点天气数据,与发电数据(电量)结合构建机器学习数据集,需要是个后台的服务,为了快速、高质量实现,我选择了chatGPT协助实现。

3.1. chatGPT写的代码

import requests
import csv
import time
import datetime
import keyboard# API接口
url = "https://devapi.qweather.com/v7/grid-weather/now"# 请求参数,location为经纬度坐标,key为API密钥
params = {"location": "103.59984,36.18057","key": "**********"
}fieldnames = ['obsTime', 'temp', 'icon', 'text', 'wind360', 'windDir', 'windScale', 'windSpeed', 'humidity', 'precip', 'pressure', 'cloud', 'dew']# csv文件名
filename = 'weather_data.csv'# 获取天气数据
while True:# 按下Esc键退出if keyboard.is_pressed('Esc'):print('程序已退出')break# 获取当前时间current_time = time.strftime('%Y-%m-%d %H:%M:%S', time.localtime())# 判断是否为整点或半点if current_time.split(":")[1] in ["00", "30"]:     # 发送API请求并获取返回结果response = requests.get(url, params=params)result = response.json()# 提取关键数据并写入csv文件now_data = result['now']with open(filename, mode='a', newline='') as file:writer = csv.DictWriter(file, fieldnames=fieldnames)if file.tell() == 0:writer.writeheader()writer.writerow(now_data)# 记录日志with open('log.txt', mode='a') as log:log.write(f'{current_time}:获取天气数据成功\n')# 程序等待60秒钟后再次执行time.sleep(60)  

3.2. 与chatGPT沟通过程,清晰、准确描述需求

下面是我与其沟通过程:

我:
使用python语言,开发自动逐时获取天气数据服务,输入Esc键退出。
使用如下API接口获取当前天气数据,
https://devapi.qweather.com/v7/grid-weather/now?location=103.59984,36.18057&key=***********
数据保存为csv格式,并记录每次取数据的日志。

chatGPT:

import requests
import csv
import time# API接口地址
url = "https://devapi.qweather.com/v7/grid-weather/now"# 请求参数,根据需要修改
params = {"location": "103.59984,36.18057","key": "***********"
}# csv文件名
filename = "weather_data.csv"# 日志文件名
log_filename = "weather_log.txt"# 逐时获取天气数据
with open(filename, mode="a", newline="") as csv_file, open(log_filename, mode="a") as log_file:writer = csv.writer(csv_file)while True:try:# 发送请求response = requests.get(url, params=params)# 解析响应数据data = response.json()# 提取需要的数据obs_time = data["updateTime"]temp = data["gridTemperature"]humidity = data["humidity"]wind_speed = data["windSpeed"]# 写入csv文件writer.writerow([obs_time, temp, humidity, wind_speed])# 写入日志文件log_file.write(f"{obs_time}: success\n")except Exception as e:# 发生异常时写入日志文件log_file.write(f"{time.strftime('%Y-%m-%d %H:%M:%S', time.localtime())}: error {str(e)}\n")# 暂停1小时后继续下一次循环time.sleep(3600)

其中,您需要将API接口地址、请求参数、文件名等信息修改为实际情况,并使用自己的API密钥进行授权认证。程序会不断逐时获取天气数据,并将数据保存到csv文件中,同时记录每次取数据的日志。按下Esc键可退出程序。

我:
我没有说清晰,取数据的时间为整点,帮着调整下程序。

chatGPT:

import requests
import csv
import time
import datetime# API接口
url = "https://devapi.qweather.com/v7/grid-weather/now"# 请求参数,location为经纬度坐标,key为API密钥
params = {"location": "103.59984,36.18057","key": "***********"
}# 循环获取数据
while True:# 获取当前时间now = datetime.datetime.now()# 判断是否为整点if now.minute == 0 and now.second == 0:# 发送请求获取数据response = requests.get(url, params=params)data = response.json()# 打印数据print(data)# 保存数据到csv文件with open("weather.csv", mode="a", newline="") as file:writer = csv.writer(file)writer.writerow([now.strftime("%Y-%m-%d %H:%M:%S"), data["now"]["temp"], data["now"]["humidity"]])# 记录日志with open("log.txt", mode="a") as file:file.write(f"{now.strftime('%Y-%m-%d %H:%M:%S')}:获取数据成功\n")# 等待1分钟time.sleep(60)# 监听键盘,按下Esc键退出循环if msvcrt.kbhit():if ord(msvcrt.getch()) == 27:print("退出程序")break

这里使用了Python标准库中的datetime模块来获取当前时间,判断是否为整点,并将时间格式化成字符串。同时,每次获取数据时,记录当前时间到日志文件中。

我:
还麻烦你补充一点,csv数据中,需要补充数据字段名称,例如数据内容如下: ‘now’: {‘obsTime’: ‘2023-04-27T09:00+00:00’, ‘temp’: ‘10’, ‘icon’: ‘100’, ‘text’: ‘晴’, ‘wind360’: ‘63’, ‘windDir’: ‘东北风’, ‘windScale’: ‘5’, ‘windSpeed’: ‘30’, ‘humidity’: ‘46’, ‘precip’: ‘0.0’, ‘pressure’: ‘820’, ‘cloud’: ‘25’, ‘dew’: ‘-1’}

chatGPT:

fieldnames = ['obsTime', 'temp', 'icon', 'text', 'wind360', 'windDir', 'windScale', 'windSpeed', 'humidity', 'precip', 'pressure', 'cloud', 'dew']with open('weather.csv', mode='a', newline='') as file:writer = csv.DictWriter(file, fieldnames=fieldnames)if file.tell() == 0:writer.writeheader()writer.writerow(data)

其中fieldnames是一个列表,包含每个数据字段的名称,writer.writeheader()可以在第一次写入数据时自动添加字段名称行。

我:
非常好,谢谢!
再麻烦一下,我要没间隔30分钟,取一次数据,帮修改下代码。

chatGPT:

import requests
import csv
import time
import keyboard# API接口和参数
url = 'https://devapi.qweather.com/v7/grid-weather/now'
location = '103.59984,36.18057'
key = '***********'
params = {'location': location, 'key': key}# 字段名
fieldnames = ['obsTime', 'temp', 'icon', 'text', 'wind360', 'windDir', 'windScale', 'windSpeed', 'humidity', 'precip', 'pressure', 'cloud', 'dew']# csv文件名
filename = 'weather_data.csv'# 打开文件并写入字段名
with open(filename, mode='a', newline='') as file:writer = csv.DictWriter(file, fieldnames=fieldnames)writer.writeheader()# 获取天气数据
while True:# 按下Esc键退出if keyboard.is_pressed('Esc'):print('程序已退出')break# 获取当前时间current_time = time.strftime('%Y-%m-%d %H:%M:%S', time.localtime())# 发送API请求并获取返回结果response = requests.get(url, params=params)result = response.json()# 提取关键数据并写入csv文件now_data = result['now']with open(filename, mode='a', newline='') as file:writer = csv.DictWriter(file, fieldnames=fieldnames)writer.writerow(now_data)# 记录日志with open('log.txt', mode='a') as log:log.write(f'{current_time}:获取天气数据成功\n')# 程序等待30分钟后再次执行time.sleep(1800)

这段代码和之前的代码相似,只是将 time.sleep(3600) 修改为 time.sleep(1800),即程序等待30分钟后再次执行。同时,日志记录的内容也有所修改,加上了获取天气数据成功的记录。

我:
非常棒了,我遗漏了,再补充上整点和半点取数。

chatGPT:
代码详见下文,略。
这个版本的代码会在每个整点和半点取一次数据,并将数据保存到CSV文件中。同时也会记录每次取数据的日志,保存在文本文件weather_log.txt中。

3.3. 运行程序

保存csv数据文件内容截取如下:
在这里插入图片描述

注意:时间与北京时间时差8小时,请在后续数据使用时注意、处理。

中间出现了被强制断开的情况,原因未知。

requests.exceptions.ConnectionError: ('Connection aborted.', ConnectionResetError(10054,'远程主机强迫关闭了一个现有的连接。', None, 10054, None))

4. 总结

格点天气数据服务内容很全面、功能很好用。

使用chatGPT开发,对于具体、通用性强的功能,其写代码能力还是比较厉害的,特别是能持续沟通、完善过程,更是值得称赞的。

你用chatGPT写代码吗?

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/518.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

利用 ChatGPT4 回复的 markdown 文本生成 ppt

本篇博文不涉及账号以及基础网络知识,大伙可以自行搜索。 比如我最近要分享一篇关于 TCP 的分享,那么我可以设置如下 Prompt 我最近要做一篇关于 tcp 入门的 ppt 分享,帮我列出大纲以及需要注意的事项? 接下来就是 ChatGPT4 给…

使用Flutter构建ChatGPT客户端:快速入门指南

开篇 在本篇博客文章中,我们将通过OpenAI的API构建一个简单的对话界面,与ChatGPT进行聊天。 近来OpenAI和ChatGPT的热度很高,尤其是最近发布的GPT-4。这类工具的大量使用案例已经涌现出来,但目前人们最常用ChatGPT的方式是通过cha…

chatgpt使用初体验_incomplete

2023.03.19 ,发现已经有大佬翻译了文档,下面内容不再进行原文翻译,只进行使用体验说明。 2023.03.22 i cant speak that (aHR0cHM6Ly9jaGF0Z3B0LmxlaXpoZW55dWtlamkuY29t) 还有一个就是我发现我之前都是在playgroud里面用的,实际是…

在国内使用 FOFA 查找免费无需注册无需验证的 ChatGPT Web 站点

文章目录 操作步骤注意事项关于 FOFA 的介绍 基于人工智能技术的 ChatGPT 通过自然语言处理技术进行智能对话,根据用户的需求和偏好进行个性化服务,在商业应用、教育领域、个性化服务等方面具有广泛的应用前景。 由于国内访问 ChatGPT 受到技术、政策、…

GPT-4和ChatGPT效果对比,差别太大了

文|Serendipity知乎 前言 GPT4上午朋友圈已经刷屏啦,不过我还在忙,刚刚才登上 GPT-4 ,现在来体验一下~ 附 GPT-4 能力测试站(直接注册即可,无需魔法): https://gpt4test.com 附 Chat…

ChatGPT介绍以及一些使用案例

❤️觉得内容不错的话,欢迎点赞收藏加关注😊😊😊,后续会继续输入更多优质内容❤️ 👉有问题欢迎大家加关注私戳或者评论(包括但不限于NLP算法相关,linux学习相关,读研读博…

如何使用 ChatGPT 制作出色的简历?

您是否厌倦了制作完美的简历,却得不到潜在雇主的回应? 现在是时候转向人工智能和OpenAI开发的工具ChatGPT的力量了。 在本文中,我们将向您展示 ChatGPT 如何彻底改变您的求职并将您的简历提升到一个新的水平。 什么是ChatGPT? …

使用ChatGPT工具阅读文献的实战教程

大家好,我是herosunly。985院校硕士毕业,现担任算法研究员一职,热衷于机器学习算法研究与应用。曾获得阿里云天池比赛第一名,CCF比赛第二名,科大讯飞比赛第三名。拥有多项发明专利。对机器学习和深度学习拥有自己独到的见解。曾经辅导过若干个非计算机专业的学生进入到算法…

使用ChatGPT写论文

本教程介绍chargpt使用教程 :不需要翻墙,不需要注册,也不需要缴纳费用 通过本教程您将会使用chargpt写代码 写论文 。

ChatGPT如何4步制作ppt

1、在提问框写下(一定要有冒号,换行复制你的内容) 请根据以下文字,生成一个两级大内容纲: 这是你的内容 2、 请将以上文字生成Markdown语言格式,并放在代码块里,以方便我拷贝(注意&a…

ChatGPT4Midjourney绘图

此款源码后台授权部署了一套后端,前端不限制数量,不限制域名。 该款源码现下已支持GPT3.5,GPT4,DALLE,Midj绘图,轻应用模块,邀请裂变 支付已对接叶已经对接了:支付宝当面付&#x…

免费使用chatgpt一分钟教你

免费使用chatgpt只需要一个插件 效果图如下 在新标签页直接可以使用chatgpt. 使用教程如下: 先进入插件官网:https://www.wetab.link/zh/ 选择浏览器 电脑下载最新的edg浏览器 打开浏览器设置,开启浏览器拓展 用edg浏览器打开官网选择edg …

ChatGPT45个插件列表

ChatGPT插件现已对所有人开放。 插件介绍: Slack: 查询Slack信息Zapier: 与5000应用,如Google Sheets和Docs进行交互。Expedia: 在一个地方激活你的旅行计划Klarna购物: 在成千上万的在线商店中搜索并比较价格。Vogue时尚杂志: 搜索时尚杂志的文章TO-D…

中文ChatGPT平替——ChatGLM:全新对话模型内测,手把手调教开源单卡版本

❤️觉得内容不错的话,欢迎点赞收藏加关注😊😊😊,后续会继续输入更多优质内容❤️ 👉有问题欢迎大家加关注私戳或者评论(包括但不限于NLP算法相关,linux学习相关,读研读博…

为什么爆火的是 ChatGPT ?OpenAI 做对了什么?

击上方关注 “终端研发部” 设为“星标”,和你一起掌握更多数据库知识 声明:本文首发于我的知乎:httpss://www.zhihu.com/question/585105560/answer/2918122037 最近最火的莫过于ChatGPT了,漂亮国很多高校学生都会用来做作业写论…

ChatGPT和New Bing的区别不同是什么?

我获得了 New Bing 的体验资格之后,迫不及待的进行了第一次使用 New Bing 的尝试。 你是谁 我是必应,一个可以帮你搜索信息和聊天的网站。😊 你是chatgpt吗 不,我不是chatgpt。我是必应,一个可以帮你搜索信息和聊天…

爆火的ChatGPT是什么?一文带你了解

前言 本文将带大家了解ChatGPT是什么 最近你是不是被它刷屏了? ChatGPT是什么?很多人第一眼看到这个英文名字可能就失去了大半的兴趣,但是,相信我,你只需要花费一点点时间去了解它,你一定会充满兴趣&#…

如何正确使用chatgpt,让chatgpt回答优质内容?

我们以chatgpt写一篇文章为例。大家都知道,如果直接让chatgpt写某篇文章,他的回答总是简洁明了的,因为它定位就是聊天,而不是会像“舔狗”一样写一篇小作文。 并且他的回答,总是固定格式的,只要稍微了解ch…

ChatGPT的基本使用方法和具体使用案例(持续更新中。。。)

普通人使用ChatGPT重在磨练基本功,我下面提供的这套基本功如果你能融会贯通,对内容生产者们有着魔法级别的帮助,至少提升10倍的生产效率。 所谓ChatGPT的基本功核心是学会设置 Prompt , Prompt 你可以理解成「提示语」&#xff0…

【ChatGPT使用笔记】 ChatGPT回答不完整,如何获取后续的内容

____tz_zs 对于 ChatGPT 回答不完整的情况(篇幅限制,没有说完),可以输入“继续”指令,让其继续回答下去,获得完整内容。 如下图,发问 “使用web3js 调用 eth链智能合约” 直到这里才是获得了刚…