A Python library for accessing MeteoAlarm weather warnings
Project description
MeteoAlarm Python Library
A Python library for accessing and filtering weather warnings from MeteoAlarm's CAP (Common Alerting Protocol) feeds. This library provides easy access to weather warnings across European countries through MeteoAlarm's official feeds.
Features
- Access weather warnings for multiple European countries
- Filter warnings based on various attributes (severity, type, description, etc.)
- Support for multiple languages per warning
- Automatic parsing of CAP format warnings
- GeoJSON geometry support for warning areas
- Timezone-aware datetime handling
Installation
Install the package using pip:
pip install meteoalarm
Quickstart
from meteoalarm import MeteoAlarm
# Initialize with one or more countries
warnings = MeteoAlarm(["estonia", "denmark"])
# Print all warnings
for warning in warnings:
print(f"\nWarning for {warning.area["areaDesc"]} ({warning.country}):")
print(f"Headline: {warning.get_headline("en-EN")}")
print(f"Severity: {warning.severity}")
print(f"Valid until: {warning.expires}")
Filtering Warnings
The library provides flexible filtering capabilities:
# Filter by severity
severe_warnings = warnings.filter(severity="Severe")
# Filter by description content (searches in all languages)
wind_warnings = warnings.filter(description="wind")
# Filter by multiple criteria
specific_warnings = warnings.filter(
country="estonia",
severity="Moderate",
awareness_type="Wind"
)
# Chain filters
critical_wind = warnings.filter(awareness_type="Wind").filter(severity="Severe")
Multilingual Support
Warnings are available in multiple languages:
# Get available languages for a warning
languages = warning.get_available_languages()
# Get warning information in specific language
english_headline = warning.get_headline("en-EN")
estonian_desc = warning.get_description("et-ET")
Plotting the Warning Area
from shapely.geometry import shape
import geopandas as gpd
import matplotlib.pyplot as plt
import contextily as ctx
import json
# Parse the GeoJSON string
geojson_dict = json.loads(warnings[0].geometry)
# Create geometry object
geometry = shape(geojson_dict)
# Create GeoDataFrame directly
gdf = gpd.GeoDataFrame(geometry=[geometry], crs="EPSG:4326")
# Convert to Web Mercator projection for contextily
gdf_web = gdf.to_crs(epsg=3857)
# Create plot
fig, ax = plt.subplots(figsize=(10, 10))
gdf_web.plot(ax=ax, alpha=0.5, color='red')
# Add background map
ctx.add_basemap(ax)
plt.axis('off')
plt.show()
Warning Attributes
Each warning object contains the following attributes:
- category: Warning category
- event: Event type
- urgency: Urgency level
- severity: Severity level
- certainty: Certainty level
- onset: Start time (datetime object)
- effective: Effective time (datetime object)
- expires: Expiration time (datetime object)
- sender: Dictionary containing sender information
- headline: Dictionary of headlines in available languages
- description: Dictionary of descriptions in available languages
- awareness_level: Awareness level
- awareness_type: Type of weather warning
- area: Dictionary containing area description and EMMA_ID
- geometry: GeoJSON geometry of the warning area
Requirements
- Python 3.7+
- requests
- pytz
- pyyaml
License
This project is licensed under the MIT License - see the LICENSE file for details.
Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
Acknowledgments
- Data provided by MeteoAlarm
- Based on the CAP (Common Alerting Protocol) standard
Project details
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
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file meteoalarm-0.1.5.tar.gz.
File metadata
- Download URL: meteoalarm-0.1.5.tar.gz
- Upload date:
- Size: 12.4 MB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.12.8
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7769ffb00d03385bc956161245f5f0690b45eba383221e49e4652c9275d32b89
|
|
| MD5 |
d61229988ff935159e047b353048a907
|
|
| BLAKE2b-256 |
06ac2e9d68cdcb0ad4ca6347e1d1559a802abb04995f7f04ecf281f3d56c179b
|
Provenance
The following attestation bundles were made for meteoalarm-0.1.5.tar.gz:
Publisher:
python-publish.yml on NiklasJordan/meteoalarm
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
meteoalarm-0.1.5.tar.gz -
Subject digest:
7769ffb00d03385bc956161245f5f0690b45eba383221e49e4652c9275d32b89 - Sigstore transparency entry: 170110546
- Sigstore integration time:
-
Permalink:
NiklasJordan/meteoalarm@61851e91a3fe3d00b12d0da03216a9ceb1ffa782 -
Branch / Tag:
refs/tags/v0.1.5 - Owner: https://github.com/NiklasJordan
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
python-publish.yml@61851e91a3fe3d00b12d0da03216a9ceb1ffa782 -
Trigger Event:
release
-
Statement type:
File details
Details for the file meteoalarm-0.1.5-py3-none-any.whl.
File metadata
- Download URL: meteoalarm-0.1.5-py3-none-any.whl
- Upload date:
- Size: 12.4 MB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.12.8
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9312f47171b8bd39f22098a7fabff47ba0c19f46d8f782d9b9e37b557dc376a0
|
|
| MD5 |
2c0017c63ce398f1ec001b8cf2f1a870
|
|
| BLAKE2b-256 |
0c585d981ed02bebcda8e3d749dc590a333404268c5d5a853f61250650609ed9
|
Provenance
The following attestation bundles were made for meteoalarm-0.1.5-py3-none-any.whl:
Publisher:
python-publish.yml on NiklasJordan/meteoalarm
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
meteoalarm-0.1.5-py3-none-any.whl -
Subject digest:
9312f47171b8bd39f22098a7fabff47ba0c19f46d8f782d9b9e37b557dc376a0 - Sigstore transparency entry: 170110550
- Sigstore integration time:
-
Permalink:
NiklasJordan/meteoalarm@61851e91a3fe3d00b12d0da03216a9ceb1ffa782 -
Branch / Tag:
refs/tags/v0.1.5 - Owner: https://github.com/NiklasJordan
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
python-publish.yml@61851e91a3fe3d00b12d0da03216a9ceb1ffa782 -
Trigger Event:
release
-
Statement type: