Tôi có thể tìm dữ liệu thời tiết thô lịch sử ở đâu? [đóng cửa]


80

Tôi có thể tìm dữ liệu thời tiết thô lịch sử ở đâu cho một dự án mà tôi đang thực hiện, tập trung vào Hoa Kỳ và Canada. Tôi chủ yếu cần nhiệt độ, nhưng các chi tiết khác sẽ rất tốt. Tôi đang gặp khó khăn trong việc tìm kiếm dữ liệu này. Tôi thực sự không muốn phải cạo một trang web thời tiết.


4
Kiểm tra forecast.io , bạn có thể nhận dữ liệu lịch sử cũng như dự báo trong tương lai với rất dễ dàng để sử dụng API
iTech

Câu trả lời:


28

Tại Phòng Lưu trữ Dữ liệu Thời tiết Lịch sử của Phòng thí nghiệm Bão Nặng Quốc gia Hoa Kỳ (lưu ý: tính năng này đã bị ngừng hoạt động).

Ngoài ra, Cổng thông tin địa lý của Trung tâm Dữ liệu Khí hậu Quốc gia Hoa Kỳ .

Trung tâm Dữ liệu Khí hậu Quốc gia Hoa Kỳ Dữ liệu Khí hậu Trực tuyến .

Trung tâm Dữ liệu Khí hậu Quốc gia Hoa Kỳ Sản phẩm Phổ biến nhất .


3
Url đã thay đổi cho Dữ liệu Khí hậu Trực tuyến
Brian

59

Tôi thấy mình đã hỏi câu hỏi tương tự và sẽ chia sẻ kinh nghiệm của mình cho những nhân viên Google trong tương lai.

Nguồn dữ liệu

Tôi muốn dữ liệu thô và rất nhiều ... API sẽ không làm được. Tôi cần phải trực tiếp đến nguồn. Nguồn tốt nhất cho tất cả dữ liệu đó dường như là máy chủ NCEP hoặc NCDC NOMADS:

http://nomads.ncdc.noaa.gov/dods/ <- tốt cho dữ liệu lịch sử
http://nomads.ncep.noaa.gov/dods/ <- tốt cho dữ liệu gần đây

(Lưu ý: Một người bình luận cho biết rằng bây giờ bạn phải sử dụng https thay vì http. Tôi chưa thử nghiệm nó, nhưng nếu bạn gặp sự cố, hãy thử!)

Để đưa ra ý tưởng về số lượng dữ liệu, dữ liệu của họ quay trở lại năm 1979! Nếu bạn đang tìm kiếm Canada và Hoa Kỳ, tập dữ liệu Phân tích phản ứng khu vực Bắc Mỹ có lẽ là câu trả lời tốt nhất cho bạn.

Sử dụng dữ liệu

Tôi là một người dùng python lớn và pydap hoặc NetCDF dường như là những công cụ tốt để sử dụng. Không vì lý do gì đặc biệt, tôi bắt đầu chơi với pydap.

Để đưa ra ví dụ về cách lấy tất cả dữ liệu nhiệt độ cho một vị trí cụ thể từ trang web của những người du mục, hãy thử làm như sau trong python:

from pydap.client import open_url

# setup the connection
url = 'http://nomads.ncdc.noaa.gov/dods/NCEP_NARR_DAILY/197901/197901/narr-a_221_197901dd_hh00_000'
modelconn = open_url(url)
tmp2m = modelconn['tmp2m']

# grab the data
lat_index = 200    # you could tie this to tmp2m.lat[:]
lon_index = 200    # you could tie this to tmp2m.lon[:]
print tmp2m.array[:,lat_index,lon_index] 

Đoạn mã trên sẽ cung cấp cho bạn một chuỗi thời gian (ba giờ một lần) dữ liệu cho toàn bộ tháng 1 năm 1979! Nếu bạn cần nhiều địa điểm hoặc tất cả các tháng, mã trên sẽ dễ dàng được sửa đổi để phù hợp.

Để siêu dữ liệu ... và hơn thế nữa!

Tôi không hạnh phúc khi dừng lại ở đó. Tôi muốn dữ liệu này trong cơ sở dữ liệu SQL để tôi có thể dễ dàng cắt và cắt nó. Một tùy chọn tuyệt vời để thực hiện tất cả những điều này là mô-đun dự báo python.

Tiết lộ: Tôi đã tập hợp mã đằng sau mô-đun. Tất cả mã đều là mã nguồn mở - bạn có thể sửa đổi nó để đáp ứng tốt hơn nhu cầu của mình (có thể bạn đang dự báo về sao Hỏa?) Hoặc lấy ra các đoạn mã nhỏ cho dự án của mình.

Mục tiêu của tôi là có thể lấy dự báo mới nhất từ mô hình Làm mới nhanh (đặt cược tốt nhất của bạn nếu bạn muốn có thông tin chính xác về thời tiết hiện tại):

from forecasting import Model

rap = Model('rap')
rap.connect(database='weather', user='chef')
fields = ['tmp2m']
rap.transfer(fields)

và sau đó để vẽ dữ liệu trên bản đồ của nước Mỹ:

bản đồ nhiệt của nhiệt độ Hoa Kỳ với dữ liệu từ sql

Dữ liệu cho biểu đồ đến trực tiếp từ SQL và có thể dễ dàng sửa đổi truy vấn để lấy ra bất kỳ loại dữ liệu nào mong muốn.

Nếu ví dụ trên là không đủ, hãy xem tài liệu, nơi bạn có thể tìm thêm các ví dụ.


1
Tôi cần dữ liệu thời tiết cho tất cả năm 2015, mà liên kết của bạn cho dữ liệu lịch sử không có - nó dừng lại ở 201410. Bạn có bất kỳ ý tưởng nào cho tôi không?
rjurney

Tất cả dữ liệu đến từ đoạn mã đầu tiên đang trả về giá trị bị thiếu là 9,999E20. Cho dù tôi chọn năm nào hay tôi chọn chỉ số kinh độ và vĩ độ nào. Có ý kiến ​​gì không?
Matias Grioni

Chỉ là một mẹo nhanh: có vẻ như bây giờ họ chỉ hỗ trợ https; ví dụ: sử dụng url = ' nomads.ncdc.noaa.gov/dods/NCEP_NARR_DAILY/197901/197901/… '
Junier

2
share my experience for future Googlers<- người quản lý tương lai này cảm ơn bạn
thanh

3
Liên kết ở trên là không accesible
Anagha

1

wunderground.com có ​​một API tốt. Nó miễn phí cho 500 cuộc gọi mỗi ngày.

http://www.wunderground.com/weather/api/


47
Dữ liệu lịch sử KHÔNG được bao gồm!
iTurki

1
@Rob Tôi không liên kết với wunderground.com Hãy bỏ phiếu cho câu trả lời nếu nó không hữu ích.
Lance Fisher

4
Trên thực tế @iturki, tôi xin lỗi, người đăng khác là sai, thời tiết liều lượng ngầm có API chiếu lịch sử duy nhất tôi có thể tìm thấy !!
Rob

1
@wilsotc 27C là 80F. Bất kỳ kẻ ngốc nào từ Canada đều có thể biết điều đó :). Tôi cá là các đơn vị đã được đặt sai. Ngoài ra, bạn cũng có thể vừa phát hiện ra một trạm có gió lạnh trong báo cáo của họ. Chắc chắn, không thể nói chắc chắn, nhưng 25F là tốt trong phạm vi của các yếu tố lạnh. Nó sẽ là thú vị để tìm hiểu. Nhưng có, tôi đồng ý, WU nên sửa chữa / báo cáo những sai lệch này.
aidan.plenert.macdonald

1
Chúng tôi thực sự đã sử dụng wunderground .... Tuy nhiên, thật không may, họ vừa thay đổi điều khoản sử dụng theo đó bạn chỉ có thể sử dụng API nếu bản thân bạn đang lưu trữ Trạm thời tiết ... đó là lý do tại sao tôi đang nghiên cứu một giải pháp thay thế. +1 cho wunderground vì nó hoạt động tốt cho nhu cầu của chúng tôi trong nhiều năm.
Anthony Griggs
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.