π OverviewΒΆ
earth-osm downloads, filters, cleans and exports infrastructure data from OpenStreetMap (OSM). It provides a Python API and a CLI interface to extract data for various infrastructure types, such as power lines, substations, and more.
π Key FeaturesΒΆ
- π Extracts infrastructure data from OSM
- π§Ή Cleans and standardizes the data (coming soon)
- π No API rate limits (data served from GeoFabrik)
- π Provides a Python API
- π₯οΈ Supports multiprocessing for faster extraction
- π Outputs data in .csv and .geojson formats
- π Supports global data extraction
- π±οΈ Easy-to-use CLI interface
π Getting StartedΒΆ
InstallationΒΆ
Install earth-osm using pip (recommended):
pip install earth-osm
Or with conda:
conda install --channel=conda-forge earth-osm
Basic UsageΒΆ
Extract OSM data using the CLI:
earth_osm extract power --regions benin monaco --features substation line
This command extracts power infrastructure data for Benin and Monaco, focusing on substations and power lines. By default, the resulting .csv and .geojson files are stored in ./earth_data/out
.
Load the extracted data using pandas:
import pandas as pd
import geopandas as gpd
# For Pandas
df_substations = pd.read_csv('./earth_data/out/BJ_raw_substations.csv')
# For GeoPandas
gdf_substations = gpd.read_file('./earth_data/out/BJ_raw_substations.geojson')
π οΈ CLI ReferenceΒΆ
Extract CommandΒΆ
earth_osm extract <primary> --regions <region1> <region2> ... [options]
Arguments:ΒΆ
<primary>
: Primary feature to extract (e.g power)
Required Options:ΒΆ
--regions
: Specify one or more regions using ISO 3166-1 alpha-2, ISO 3166-2 codes, or full names
Tip: A list of regions is available at regions.md
Optional Arguments:ΒΆ
Argument | Description | Default |
---|---|---|
--features |
Specify sub-features of the primary feature | All features |
--update |
Update existing data | False |
--no_mp |
Disable multiprocessing | False (MP enabled) |
--data_dir |
Path to data directory | './earth_data' |
--out_dir |
Path to output directory | Same as data_dir |
--out_format |
Export format(s): csv and/or geojson | ['csv', 'geojson'] |
--agg_feature |
Aggregate outputs by feature | False |
--agg_region |
Aggregate outputs by region | False |
π Python APIΒΆ
For more advanced usage, you can use the Python API:
import earth_osm as eo
eo.save_osm_data(
primary_name='power',
region_list=['benin', 'monaco'],
feature_list=['substation', 'line'],
update=False,
mp=True,
data_dir='./earth_data',
out_format=['csv', 'geojson'],
out_aggregate=False,
)
π οΈ DevelopmentΒΆ
To contribute to earth-osm, follow these steps:
-
(Optional) Install a specific version of earth_osm:
pip install git+https://github.com/pypsa-meets-earth/earth-osm.git@<required-commit-hash>
-
(Optional) Create a virtual environment for Python >=3.10:
python3 -m venv .venv source .venv/bin/activate
-
Install the development dependencies:
pip install git+https://github.com/pypsa-meets-earth/earth-osm.git pip install -e .[dev]
-
Read the CONTRIBUTING.md file for more detailed information on how to contribute to the project.
π LicenseΒΆ
This project is licensed under the MIT License. See the LICENSE file for details.
π€ CommunityΒΆ
Join our Discord community to connect with other users and contributors, ask questions, and get support.
π DocumentationΒΆ
For more detailed information, check out our full documentation.
Made with β€οΈ by the PyPSA meets Earth team