MapMiner is a geospatial and model-centric tool designed to efficiently download, process, and analyze geospatial data and metadata from various sources. It leverages powerful Python libraries like Selenium, Dask, Numba, and Xarray to provide high-performance data handling and integrates state-of-the-art models for advanced geospatial AI and visualization.
Base installation:
pip install mapminerFull installation (includes OCR + Chrome support):
pip install "mapminer[all]"- 🌐 Selenium: Automated web interactions for metadata extraction.
- ⚙️ Dask: Distributed computing to manage large datasets.
- 🚀 Numba: JIT compilation for accelerating numerical computations.
- 📊 Xarray: Multi-dimensional array data handling for seamless integration.
MapMiner supports a variety of geospatial datasets across multiple categories:
| Category | Datasets |
|---|---|
| 🌍 Satellite | Sentinel-2, Sentinel-1, MODIS, Landsat |
| 🚁 Aerial | NAIP |
| 🗺️ Basemap | Google, ESRI |
| 📍 Vectors | Google Building Footprint, OSM |
| 🏔️ DEM (Digital Elevation Model) | Copernicus DEM 30m, ALOS DEM |
| 🌍 LULC (Land Use Land Cover) | ESRI LULC |
| 🌾 Crop Layer | CDL Crop Mask |
| 🕒 Real-Time | Google Maps Real-Time Traffic |
MapMiner provides pre-integrated state-of-the-art vision models for geospatial AI:
| Model | Use Cases |
|---|---|
| 🔥 DINOv3 | Feature extraction, classification, segmentation, detection backbones |
| 🌀 NAFNet | Denoising, deblurring, super-resolution, temporal consistency |
| ⏳ ConvLSTM | Crop forecasting, temporal fusion (Sentinel-1/2), sequence modeling |
| 💎 SAM3 | Prompt-based instance segmentation, fast zero-shot object extraction |
You can import DINOv3 directly for feature extraction or downstream tasks:
from mapminer.models import DINOv3
model = DINOv3(pretrained=True)
x = normalize(input_tensor)
output = model(x)
Use NAFNet for denoising, enhancement, or temporal SR tasks:
from mapminer.models import NAFNet
model = NAFNet(in_channels=12, dim=32)
output = model(input_tensor)
Use SAM3 for prompt-based instance segmentation on high-resolution geospatial imagery:
from mapminer.models import SAM3
sam3 = SAM3()
df = sam3.inference(ds,text='building', exemplars=None)
from mapminer.miners import GoogleBaseMapMiner
miner = GoogleBaseMapMiner()
ds = miner.fetch(lat=40.748817, lon=-73.985428, radius=500)
from mapminer.miners import CDLMiner
miner = CDLMiner()
ds = miner.fetch(lon=-95.665, lat=39.8283, radius=10000, daterange="2024-01-01/2024-01-10")
from mapminer.miners import GoogleBuildingMiner
miner = GoogleBuildingMiner()
ds = miner.fetch(lat=34.052235, lon=-118.243683, radius=1000)
You can easily visualize the data fetched using hvplot:
import hvplot.xarray
ds.hvplot.image(title=f"Captured on {ds.attrs['metadata']['date']['value']}")MapMiner relies on several Python libraries:
- Selenium: For automated browser control.
- Dask: For distributed computing and handling large data.
- Numba: For accelerating numerical operations.
- Xarray: For handling multi-dimensional array data.
- EasyOCR: For extracting text from images.
- HvPlot: For visualizing xarray data.
Contributions are welcome! Fork the repository and submit pull requests. Include tests for any new features or bug fixes.