在我的项目中,我想计算全年的每月降水量和温度平均值(最小值/最大值),类似于this chart或this app中的平均值(使用Forecast.io数据) )。
但是,由于我无法从Forecast.io API中的daily
数据点中提取必要的数据,因此我很早就绊倒了。该数据点有望包含整周的天气信息:
理想情况下,
minutely
数据块将包含下一小时的数据, 接下来两天的hourly
数据块和daily
数据块 下周;但是,如果我们在给定时间内缺乏数据 期间,数据点序列可能包含间隙或提前终止。
事实上,我检查过的这个API的所有包装库都提供了相同的建议。但我只是在特定日期获取数据,无论是将来还是过去:
forecastData.daily.data.length == 1
请参阅此jsFiddle example。
我做错了什么或者确实没有超过一天的数据,我需要调用API 365次?
这导致了我的主要问题,即在API调用方面如何最有效地处理我的项目以汇总全年的必要信息?
答案 0 :(得分:0)
来自docs,
如果[在请求网址]以这种方式提供时间,则仅提供午夜至午夜发生(或将发生)该时间的日期条件...
所以,不,你没有明确地做错了什么,API并没有像你期望的那样做出反应,虽然考虑到它,但这对我来说是有意义的(至少对我来说)。如果您正在呼吁现在的天气,您很可能也想要未来的预测,但过去的查找在大多数情况下通常不需要任何上下文。
这确实让你的情况有些残留,因为你实际上必须在过去的每一天(或将来超过一周)调用一次API。正如你所说,你可以解决这个问题的最有效方法是每年每天都拨打365次电话。由于免费Forecast.IO帐户的限制(在您必须支付之前每天支付1000次API调用),但您每天都无法绘制三年的数据。
如果您希望能够拨打更多电话而无需支付电话费用,则可以在本地缓存检索到的数据,然后在其上绘制而不是使用实际的API,具体取决于您的用例的具体情况,你或许可以预先计算出你想要的年度数据,然后扔掉剩下的数据,但这就是我能看到你的效率。