首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >按邮政编码表格区域下载天气数据

按邮政编码表格区域下载天气数据
EN

Stack Overflow用户
提问于 2014-11-05 23:16:58
回答 3查看 2.6K关注 0票数 1

我正在尝试弄清楚如何通过邮政编码制表区域(ZCTA)下载天气(温度、辐射等)。尽管人口普查数据有ZCTA的人口普查信息,但天气数据并非如此。

我试着从http://cdo.ncdc.noaa.gov/qclcd/QCLCD?prior=N上查找信息,但找不到。

你们当中有没有人下载过ZCTA的天气数据?如果没有,有没有人有将气象观测站信息转换为ZCTA的经验?

EN

回答 3

Stack Overflow用户

发布于 2014-11-07 08:07:50

国家气象局提供了两个基于web的应用程序接口,用于从国家数字预报数据库(NDFD)、SOAP interfaceREST interface中提取天气预报信息。两者都返回Digital Weather Markup Language (DWML)格式的数据,这是一种XML方言。可以返回的数据元素列出了here

到目前为止,REST接口更容易使用。下面是一个示例,其中我们提取了邮政编码10001 (曼哈顿下城)在未来5天内以3小时为增量的预测温度、相对湿度和风速。

代码语言:javascript
复制
# NOAA NWS REST API Example
# 3-hourly forecast for Lower Mannhattan (Zip Code: 10001)
library(httr)
library(XML)
url <- "http://graphical.weather.gov/xml/sample_products/browser_interface/ndfdXMLclient.php"
response <- GET(url,query=list(zipCodeList="10001",
                               product="time-series",
                               begin=format(Sys.Date(),"%Y-%m-%d"),
                               Unit="e",
                               temp="temp",rh="rh",wspd="wspd"))
doc   <- content(response,type="text/xml")   # XML document with the data
# extract the date-times
dates <- doc["//time-layout/start-valid-time"]
dates <- as.POSIXct(xmlSApply(dates,xmlValue),format="%Y-%m-%dT%H:%M:%S")
# extract the actual data
data   <- doc["//parameters/*"]
data   <- sapply(data,function(d)removeChildren(d,kids=list("name")))
result <- do.call(data.frame,lapply(data,function(d)xmlSApply(d,xmlValue)))
colnames(result) <- sapply(data,xmlName)
# combine into a data frame
result <- data.frame(dates,result)
head(result)
#                 dates temperature wind.speed humidity
# 1 2014-11-06 19:00:00          52          8       96
# 2 2014-11-06 22:00:00          50          7       86
# 3 2014-11-07 01:00:00          50          7       83
# 4 2014-11-07 04:00:00          47         11       83
# 5 2014-11-07 07:00:00          45         14       83
# 6 2014-11-07 10:00:00          50         16       61

可以在单个请求中查询多个邮政编码,但这会使解析返回的XML变得复杂。

票数 2
EN

Stack Overflow用户

发布于 2016-08-30 20:27:31

要将NOAA QCLCD数据转换为邮政编码,您需要使用station.txt文件中的纬度/经度值,并将其与人口普查中的数据进行比较。这只能通过与GIS相关的工具来完成。我的解决方案是使用支持PostGIS的数据库,这样您就可以使用ST_MakePoint函数:

代码语言:javascript
复制
ST_MakePoint(longitude, latitude)

然后,您还需要将人口普查局的ZCTA加载到数据库中,以确定哪些邮政编码包含哪些电台。ST_Contains函数将对此有所帮助。

代码语言:javascript
复制
ST_Contains(zip_way, ST_MakePoint(longitude, latitude))

完整的查询可能如下所示:

代码语言:javascript
复制
SELECT s.wban, z.zip5, s.state, s.location
   FROM public.station s
   INNER JOIN public.zip z 
       ON ST_Contains(z.way, ST_MakePoint(s.longitude, s.latitude)

很明显,我对列名做了一些假设,但上面的内容应该是一个很好的起点。

你也应该能够用QGIS (免费)或ArcGIS (昂贵)来完成同样的任务。这消除了安装支持PostGIS的数据库的开销,但我不太熟悉这些软件包中所需的步骤。

票数 1
EN

Stack Overflow用户

发布于 2014-11-06 00:32:55

天气数据仅适用于气象站,每个ZCTA没有气象站(ZCTA的范围比气象站覆盖的区域小得多)。

我在noaa网站上看到了一些选项,你可以输入纬度和经度,它会根据适当的气象站找到天气。因此,如果您可以将感兴趣的ZCTA转换为经度/经度对(中心、随机角等)你可以把它提交给网站。但请注意,如果您对大量靠近的ZCTA执行此操作,您将下载冗余信息。最好将ZCTA与气象站进行一次匹配,然后从每个气象站只下载一次天气信息,然后与ZCTA数据合并。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26760616

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档