r - 如何使用 R 从加拿大政府网站批量下载历史天气数据
问题描述
我正在尝试使用 R 从加拿大政府的国家天气和气候数据报告服务中批量下载气候数据。以下是通过他们的网站提供的说明,解释了如何使用 Cygwin 进行此操作,我能够做到这一点,但是,我'想将文件检索作为 R 中脚本的一部分包含在内,该脚本迭代抓取多个站点和时间范围的数据并处理它们等。我对 R 有点陌生,所以我在这个过程中遇到了麻烦.
自述文件.txt
基于 URL 的程序从气候网站自动批量下载数据
(http://www.climate.weather.gc.ca)
版本:2016-05-10加拿大环境和气候变化
要在线阅读此文件,请访问:ftp://client_climate@ftp.tor.ec.gc.ca/Pub/Get_More_Data_Plus_de_donnees/
文件夹:Get_More_Data_Plus_de_donnees > Readme.txt
关于如何从加拿大环境和气候变化部的气候网站下载一个站的所有天气数据的说明:
国家档案馆中每日更新的气候站列表,包括其气候 ID、站 ID、WMO ID、TC ID 和坐标,可在以下文件夹中找到:
Get_More_Data_Plus_de_donnees > Station Inventory EN.csv使用以下实用程序下载数据:
wget(GNU / Linux 操作系统)
Cygwin(Windows 操作系统)https://www.cygwin.com
Homebrew(OS X - Apple)http://brew.sh/
以 .csv 格式下载 1998 年至 2008 年 Yellowknife A 的所有可用每小时数据的示例
命令行:
在 `seq 1998 2008` 中获取年份;在 `seq 1 12` 中获取月份;执行 wget --content-disposition "http://climate.weather.gc.ca/climate_data/bulk_data_e.html?format=csv&stationID=1706&Year =${year}&Month=${month}&Day=14&timeframe=1&submit= 下载+数据" ;done;done
WHERE:
年份 = 命令行中的更改值 (`seq 1998 2008`) 月 = 命令行中的更改值 (`seq 1 12`)
格式= [csv|xml]:格式输出
timeframe = 1
:每小时数据
timeframe = 2
:每日数据
timeframe = 3
:对于月数据
Day:不使用“day”变量的值,可以是任意值 对于其他站,更改变量 stationID 的值 对于 XML 格式的数据,将变量格式的值更改为 xml in网址。有关法语的信息,请将下载+数据更改为 ++T%C3%A9l%C3%A9charger+%0D%0Ades+donn%C3%A9es,同时在 url 中将 _e 更改为 _f。
如有问题或疑虑,请联系我们的国家气候服务办公室:ec.services.climatiques-climate.services.ec@canada.ca
如上所述,Cygwin 命令是:
for year in `seq 2015 2018`;do for month in `seq 1 12`;do wget --content-disposition "http://climate.weather.gc.ca/climate_data/bulk_data_e.html?format=csv&stationID=51459&Year=${year}&Month=${month}&Day=14&timeframe=1&submit=Download+Data" ;done;done
我知道download.file()
有一个选项wget
,正如 Cygwin 命令所使用的那样,但是,当我尝试以下操作时:
download.file("http://climate.weather.gc.ca/climate_data/bulk_data_e.html?format=csv&stationID=51459&Year=$2018&Month=$12&Day=14&timeframe=2&submit=Download+Data","X:/folderX/example.csv", method = "wget")
我得到一个'wget' call had nonzero exit status
错误。
不确定这是否与--content-disposition
Cygwin 命令有关,或者我什至是否使用正确的功能来处理这个问题,因此非常感谢任何方向。
谢谢。
解决方案
您正在使用 http,您需要 https。您的号码前还有 $。
还有一些气候数据的一般使用所需的文档,例如站点列表,以便您知道在哪里请求: https ://drive.google.com/uc?authuser=0&id=1egfzGgzUb0RFu_EE5AYFZtsyXPfZ11y2&export=download
您可以在此处找到有关列的信息: https ://climate.weather.gc.ca/glossary_e.html#weather
以及这里的一些一般数据信息: https ://climate.weather.gc.ca/about_the_data_index_e.html https://drive.google.com/drive/folders/1WJCDEU34c60IfOnG4rv5EPZ4IhhW9vZH
推荐阅读
- javascript - JavaScript 对象:为什么 value1.a[x] 和 value2.b[x] 返回未定义,因为 a[x] = a 和 b[x] = b 是 value1 和 value2 的属性?
- ruby - 从Ruby中的字符串转换日期
- git - 无法从 WSL 中的 Github 更新子模块
- git - 如何从先前的提交访问第二个现有的提交?
- python - 样式表不适用于特殊字符 pyqt
- sqlite - SQLite 每个比赛距离的男女最佳三倍
- android - setOnClickListener 不能使用 Fragment
- git - gitginore 无法忽略文件夹,添加时出错
- google-cloud-platform - 如何使用 go 在 GCP Pub/Sub 中进行推送订阅?
- hazelcast - Hazelcast 在客户端-服务器拓扑中从 RDBMS 加载数据