Easy access to the meteoblue dataset API
Project description
meteoblue Python Dataset SDK
This library simplifies access to the meteoblue dataset API.
WARNING: This library is under development and has no declared stable version 1.0 yet! Use with caution!
In order to use this library you need a meteoblue API key.
Features:
- Fetch any dataset from the meteoblue environmental data archive
- Transparently integrates job queues to query large datasets
- Efficiently transfers data using compressed protobuf messages
- Asynchronous interface to query data in parallel
- Data can be used as simple floating-point arrays. No further formatting required.
Installation
- Ensure that you are using at least Python 3.7 with
python --version
(Sometimespython3
) - Install the module with
pip install 'meteoblue_dataset_sdk >=0.0,<0.1'
(Sometimespip3
)
This module will also install the following dependencies automatically:
- aiohttp >=3.6,<4
- protobuf >=3.0,<4
Usage
See main.py for a working example. To generate the query JSON it is highly recommended to use the dataset API web interfaces.
import meteoblue_dataset_sdk
import logging
# Display information about the current download state
logging.basicConfig(level=logging.INFO)
query = {
"units": {
"temperature": "C",
"velocity": "km/h",
"length": "metric",
"energy": "watts",
},
"geometry": {
"type": "MultiPoint",
"coordinates": [[7.57327, 47.558399, 279]],
"locationNames": ["Basel"],
},
"format": "json",
"timeIntervals": ["2019-01-01T+00:00/2019-01-01T+00:00"],
"timeIntervalsAlignment": "none",
"queries": [
{
"domain": "NEMSGLOBAL",
"gapFillDomain": None,
"timeResolution": "hourly",
"codes": [{"code": 11, "level": "2 m above gnd"}],
}
],
}
client = meteoblue_dataset_sdk.Client(apikey="xxxxxx")
result = client.querySync(query)
# result is a structured object containing timestamps and data
timeInterval = result.geometries[0].timeIntervals[0]
data = result.geometries[0].codes[0].timeIntervals[0].data
print(timeInterval)
# start: 1546300800
# end: 1546387200
# stride: 3600
NOTE: timeInterval.end
is the first timestamp that is not included anymore in the time interval.
If your code is using async/await
, you should use await client.query()
instead of client.querySync()
. Asynchronous IO is essential for modern webserver frameworks like Flask or FastAPI.
client = meteoblue_dataset_sdk.Client(apikey="xxxxxx")
result = await client.query(query)
More detailed output of the result
object. The output is defined as this protobuf structure.
geometries {
domain: "NEMSGLOBAL"
lats: 47.66651916503906
lons: 7.5
asls: 499.7736511230469
locationNames: "Basel"
nx: 1
ny: 1
timeResolution: "hourly"
timeIntervals {
start: 1546300800
end: 1546387200
stride: 3600
}
codes {
code: 11
level: "2 m above gnd"
unit: "\302\260C"
aggregation: "none"
timeIntervals {
data: 2.890000104904175
data: 2.690000057220459
data: 2.549999952316284
data: 2.380000114440918
data: 2.2699999809265137
data: 2.119999885559082
data: 1.9900000095367432
data: 1.8300000429153442
data: 1.8200000524520874
data: 2.0999999046325684
data: 2.430000066757202
data: 2.9200000762939453
data: 3.7200000286102295
data: 3.930000066757202
data: 3.9100000858306885
data: 3.5299999713897705
data: 3.130000114440918
data: 2.880000114440918
data: 2.6500000953674316
data: 2.4600000381469727
data: 2.2799999713897705
data: 2.0299999713897705
data: 1.690000057220459
data: 1.3799999952316284
}
}
}
Developer setup
python3 -m venv env
source env/bin/activate
pip3 install -r requirements.txt
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for meteoblue_dataset_sdk-0.0.16.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | fcd08b9c30770aca76f6deeb806775b45c6175b8a1f2e16c7a7fa4e896e84556 |
|
MD5 | 571bf1ba5b0e72ac264049e3706362b5 |
|
BLAKE2b-256 | a7997415d10d169318a7450b6006f42689d9b28f6adcc98605ee99dbc1a5a5c4 |
Hashes for meteoblue_dataset_sdk-0.0.16-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 69208d5c31ac636e57a5a956212f39e4ce2d04be09798e74a52f7e3a2e7b29cb |
|
MD5 | 2df88bda17789755cdc640379b6d3253 |
|
BLAKE2b-256 | 6bf613c09200d27fa64612343f4d3aada5cf3d0a547a3b622cf34804a7c74714 |