Project Name | Stars | Downloads | Repos Using This | Packages Using This | Most Recent Commit | Total Releases | Latest Release | Open Issues | License | Language |
---|---|---|---|---|---|---|---|---|---|---|
Crystal Face | 297 | 16 days ago | 89 | gpl-3.0 | HTML | |||||
Garmin Connect IQ watch face | ||||||||||
Noaa | 130 | 2 | 1 | a year ago | 32 | February 19, 2022 | 12 | mit | Python | |
NOAA Weather Service Python SDK | ||||||||||
Privacy Friendly Weather | 104 | 4 months ago | 54 | gpl-3.0 | Java | |||||
Privacy Friendly App for Android that can display weather for cities. | ||||||||||
Netatmo Api Php | 98 | 2 years ago | 8 | PHP | ||||||
Netatmo Weather Station API client implementation - PHP SDK | ||||||||||
Awesome Memobird | 69 | 5 years ago | ||||||||
咕咕机资源汇总 | ||||||||||
Minxiuweather | 66 | 4 months ago | 1 | JavaScript | ||||||
a simple miniprogram of weather | ||||||||||
Openweatherplus Ios | 48 | 2 years ago | apache-2.0 | Objective-C | ||||||
An open source weather APP for iOS. 天气普拉斯iOS版,自带天气数据的开源天气APP。 | ||||||||||
Esp8266 Weather Station | 46 | 6 years ago | other | Assembly | ||||||
Use ESP8266_RTOS_SDK-1.4.x CJson Resolution Weather Web Json Data and Display on the OLED12864,the code include ESP8266 SmartConfig function can use SmartPhone APP connect to WiFi | ||||||||||
Pressurenet Sdk | 33 | 8 years ago | 6 | mit | Java | |||||
PressureNet-SDK | ||||||||||
Codex.bot | 31 | 8 days ago | 16 | mit | Python | |||||
Working team assistant |
SDK for NOAA Weather Service REST API for getting recent and forecast data. For old observation data, please just download the Global Historical Climatology Network data from here: https://www1.ncdc.noaa.gov/pub/data/ghcn/
Fully unit tested SDK for NOAA Weather Service REST API. Official documentation: https://www.weather.gov/documentation/services-web-api
pip install noaa-sdk
To provide a generic wrapper for the latest V3 NOAA weather service API. Keep on changing this SDK when NOAA updates their API. Class can be extended / decorated.
There are 3 types of forecast responses: forecast, forecastHourly, forecastGridData.
To get weather forecast for a coordinate:
from noaa_sdk import NOAA
n = NOAA()
n.points_forecast(40.7314, -73.8656, type='forecastGridData')
To get weather forecast with postal code and country code.
from noaa_sdk import NOAA
n = NOAA()
res = n.get_forecasts('11365', 'US')
for i in res:
print(i)
Result from response type: forecast and forecastHourly
{'startTime': '2018-02-18T00:00:00-05:00', 'detailedForecast': '', 'shortForecast': 'Partly Cloudy', 'windSpeed': '5 mph', 'number': 148, 'icon': 'https://api.weather.gov/icons/land/night/sct?size=small', 'windDirection': 'SW', 'isDaytime': False, 'temperatureTrend': None, 'endTime': '2018-02-18T01:00:00-05:00', 'name': '', 'temperatureUnit': 'F', 'temperature': 34}
{'startTime': '2018-02-18T01:00:00-05:00', 'detailedForecast': '', 'shortForecast': 'Mostly Cloudy', 'windSpeed': '5 mph', 'number': 149, 'icon': 'https://api.weather.gov/icons/land/night/bkn?size=small', 'windDirection': 'SW', 'isDaytime': False, 'temperatureTrend': None, 'endTime': '2018-02-18T02:00:00-05:00', 'name': '', 'temperatureUnit': 'F', 'temperature': 33}
{'startTime': '2018-02-18T02:00:00-05:00', 'detailedForecast': '', 'shortForecast': 'Mostly Cloudy', 'windSpeed': '5 mph', 'number': 150, 'icon': 'https://api.weather.gov/icons/land/night/bkn?size=small', 'windDirection': 'SW', 'isDaytime': False, 'temperatureTrend': None, 'endTime': '2018-02-18T03:00:00-05:00', 'name': '', 'temperatureUnit': 'F', 'temperature': 31}
{'startTime': '2018-02-18T03:00:00-05:00', 'detailedForecast': '', 'shortForecast': 'Partly Cloudy', 'windSpeed': '5 mph', 'number': 151, 'icon': 'https://api.weather.gov/icons/land/night/sct?size=small', 'windDirection': 'SW', 'isDaytime': False, 'temperatureTrend': None, 'endTime': '2018-02-18T04:00:00-05:00', 'name': '', 'temperatureUnit': 'F', 'temperature': 31}
To get weather forecast with postal code and country code with response type "forecastGridData".
from noaa_sdk import NOAA
n = NOAA()
res = n.get_forecasts('11365', 'US', type='forecastGridData')
for i in res:
print(i)
Result from response type: forecastGridData
{'@id': 'https://api.weather.gov/gridpoints/OKX/39,36', '@type': 'wx:Gridpoint', 'updateTime': '2020-11-24T08:51:35+00:00', 'validTimes': '2020-11-24T02:00:00+00:00/P7DT5H', 'elevation': {'unitCode': 'wmoUnit:m', 'value': 24.9936}, 'forecastOffice': 'https://api.weather.gov/offices/OKX', 'gridId': 'OKX', 'gridX': '39', 'gridY': '36', 'temperature': {'uom': 'wmoUnit:degC', 'values': [{'validTime': '2020-11-24T02:00:00+00:00/PT1H', 'value': 5.555555555555555}, {'validTime': '2020-11-24T03:00:00+00:00/PT1H', 'value': 6.111111111111111}, {'validTime': '2020-11-24T04:00:00+00:00/PT1H', 'value': 5.555555555555555}, {'validTime': '2020-11-24T05:00:00+00:00/PT5H', 'value': 6.111111111111111}, {'validTime': '2020-11-24T10:00:00+00:00/PT1H', 'value': 5.555555555555555}, {'validTime': '2020-11-24T11:00:00+00:00/PT1H', 'value': 4.444444444444445}, {'validTime': '2020-11-24T12:00:00+00:00/PT1H', 'value': 3.3333333333333335}, {'validTime': '2020-11-24T13:00:00+00:00/PT1H', 'value': 3.888888888888889}, {'validTime': '2020-11-24T14:00:00+00:00/PT1H', 'value': 5}, {'validTime': '2020-11-24T15:00:00+00:00/PT1H', 'value': 6.111111111111111}, {'validTime': '2020-11-24T16:00:00+00:00/PT1H', 'value': 7.222222222222222}, {'validTime': '2020-11-24T17:00:00+00:00/PT2H', 'value': 8.333333333333334}, {'validTime': '2020-11-24T19:00:00+00:00/PT1H', 'value': 8.88888888888889}, {'validTime': '2020-11-24T20:00:00+00:00/PT1H', 'value': 8.333333333333334}, {'validTime': '2020-11-24T21:00:00+00:00/PT1H', 'value': 7.777777777777778}, {'validTime': '2020-11-24T22:00:00+00:00/PT1H', 'value': 7.222222222222222}.....
To get weather observation data from all nearest stations in 11375
from noaa_sdk import NOAA
n = NOAA()
observations = n.get_observations('11365','US')
for observation in observations:
print(observation)
break
with date range (*note: for old observations data, please download Global Historical Climatology Network data)
from noaa_sdk import noaa
n = noaa.NOAA()
observations = n.get_observations('11365','US',start='2017-01-01',end='2018-02-02')
for observation in observations:
print(observation)
break
Example Result
{'minTemperatureLast24Hours': {'unitCode': 'unit:degC', 'qualityControl': None, 'value': None},
'icon': 'https://api.weather.gov/icons/land/night/bkn?size=medium',
'@type': 'wx:ObservationStation',
'cloudLayers': [{'amount': 'BKN', 'base': {'unitCode': 'unit:m', 'value': 2900}}],
'windSpeed': {'unitCode': 'unit:m_s-1', 'qualityControl': 'qc:V', 'value': 2.5999999046326},
'temperature': {'unitCode': 'unit:degC', 'qualityControl': 'qc:V', 'value': 9.9999938964844},
'precipitationLast6Hours': {'unitCode': 'unit:m', 'qualityControl': 'qc:Z', 'value': None},
'relativeHumidity': {'unitCode': 'unit:percent', 'qualityControl': 'qc:C', 'value': 76.720955130964},
'rawMessage': 'KBDR 010152Z 16005KT 10SM BKN095 10/06 A3006 RMK AO2 SLP179 T01000061',
'windDirection': {'unitCode': 'unit:degree_(angle)', 'qualityControl': 'qc:V', 'value': 160},
'seaLevelPressure': {'unitCode': 'unit:Pa', 'qualityControl': 'qc:V', 'value': 101790},
'precipitationLastHour': {'unitCode': 'unit:m', 'qualityControl': 'qc:Z', 'value': None},
'dewpoint': {'unitCode': 'unit:degC', 'qualityControl': 'qc:V', 'value': 6.1},
'windGust': {'unitCode': 'unit:m_s-1', 'qualityControl': 'qc:Z', 'value': None},
'maxTemperatureLast24Hours': {'unitCode': 'unit:degC', 'qualityControl': None, 'value': None},
'windChill': {'unitCode': 'unit:degC', 'qualityControl': 'qc:V', 'value': 8.7570299365604},
'barometricPressure': {'unitCode': 'unit:Pa', 'qualityControl': 'qc:V', 'value': 101800},
'@id': 'https://api.weather.gov/stations/KBDR/observations/2017-12-01T01:52:00+00:00',
'station': 'https://api.weather.gov/stations/KBDR', 'elevation': {'unitCode': 'unit:m', 'value': 5},
'timestamp': '2017-12-01T01:52:00+00:00',
'precipitationLast3Hours': {'unitCode': 'unit:m', 'qualityControl': 'qc:Z', 'value': None},
'visibility': {'unitCode': 'unit:m', 'qualityControl': 'qc:C', 'value': 16090},
'textDescription': 'Mostly Cloudy', 'presentWeather': [],
'heatIndex': {'unitCode': 'unit:degC', 'qualityControl': 'qc:V', 'value': None}}