🦀 ClawHub
worldclim-extract
by @zd200572
Extract bioclimatic variables (BIO1-BIO19) from WorldClim GeoTIFF rasters using sample coordinates (longitude/latitude). Supports automatic download of World...
💡 Examples
Using the CLI Script
A reusable Python script is provided at {baseDir}/extract_worldclim.py:
# Extract BIO1 (annual mean temp) and BIO12 (annual precipitation) — default
python3 {baseDir}/extract_worldclim.py \
-i samples.xlsx \
-o samples_with_climate.xlsxExtract all 19 bioclimatic variables
python3 {baseDir}/extract_worldclim.py \
-i samples.xlsx \
-o samples_all_bio.xlsx \
--bios 1-19Extract specific variables with custom column names
python3 {baseDir}/extract_worldclim.py \
-i coords.csv \
-o result.xlsx \
--bios 1,5,6,12,13 \
--res 2.5m \
--lon longitude \
--lat latitude
Using Python Directly
For custom integration or programmatic use:
import pandas as pd
import rasteriodef extract_bio(tif_path, lon, lat):
"""Extract a single value from a GeoTIFF at given coordinates."""
with rasterio.open(tif_path) as src:
value = next(src.sample([(lon, lat)]))[0]
return value
Read sample coordinates
df = pd.read_excel("samples.xlsx")
coords = list(zip(df["经度"], df["纬度"]))Extract BIO1 (Annual Mean Temperature)
with rasterio.open("wc2.1_10m_bio_1.tif") as src:
df["年均温度_C"] = [v[0] for v in src.sample(coords)]Extract BIO12 (Annual Precipitation)
with rasterio.open("wc2.1_10m_bio_12.tif") as src:
df["年降水量_mm"] = [v[0] for v in src.sample(coords)]df.to_excel("samples_with_climate.xlsx", index=False)
TERMINAL
clawhub install worldclim-extract