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ỹ:
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ụ.