A curated list of open technology projects to sustain a stable climate, energy supply, biodiversity and natural resources.

leafmap

A Python package for geospatial analysis and interactive mapping in a Jupyter environment.
https://github.com/opengeos/leafmap

Category: Sustainable Development
Sub Category: Data Catalogs and Interfaces

Keywords

data-science dataviz folium geoparquet geopython geospatial geospatial-analysis gis ipyleaflet jupyter jupyter-notebook leafmap mapping plotly python solara streamlit streamlit-webapp whiteboxtools

Keywords from Contributors

transformer measurements archiving gdal ipywidgets observation hydrology geospatial-data parallel simulations

Last synced: about 17 hours ago
JSON representation

Repository metadata

A Python package for interactive mapping and geospatial analysis with minimal coding in a Jupyter environment

README.md

Welcome to leafmap

image
image
image
image
image
Conda Recipe
image
Conda Downloads
image
image
pre-commit.ci status
image
image
status

logo

A Python package for geospatial analysis and interactive mapping in a Jupyter environment.

Join our Discord server 👇

Introduction

Leafmap is a Python package for interactive mapping and geospatial analysis with minimal coding in a Jupyter environment. It is a spin-off project of the geemap Python package, which was designed specifically to work with Google Earth Engine (GEE). However, not everyone in the geospatial community has access to the GEE cloud computing platform. Leafmap is designed to fill this gap for non-GEE users. It is a free and open-source Python package that enables users to analyze and visualize geospatial data with minimal coding in a Jupyter environment, such as Google Colab, Jupyter Notebook, JupyterLab, and marimo. Leafmap is built upon several open-source packages, such as folium and ipyleaflet (for creating interactive maps), WhiteboxTools and whiteboxgui (for analyzing geospatial data), and ipywidgets (for designing interactive graphical user interface [GUI]). Leafmap has a toolset with various interactive tools that allow users to load vector and raster data onto the map without coding. In addition, users can use the powerful analytical backend (i.e., WhiteboxTools) to perform geospatial analysis directly within the leafmap user interface without writing a single line of code. The WhiteboxTools library currently contains 500+ tools for advanced geospatial analysis, such as GIS Analysis, Geomorphometric Analysis, Hydrological Analysis, LiDAR Data Analysis, Mathematical and Statistical Analysis, and Stream Network Analysis.

Acknowledgments

This project is supported by Amazon Web Services (AWS).

Statement of Need

There is a plethora of Python packages for geospatial analysis, such as geopandas for vector data analysis and xarray for raster data analysis. As listed at pyviz.org, there are also many options for plotting data on a map in Python, ranging from libraries focused specifically on maps like ipyleaflet and folium to general-purpose plotting tools that also support geospatial data types, such as hvPlot, bokeh, and plotly. While these tools provide powerful capabilities, displaying geospatial data from different file formats on an interactive map and performing basic analyses can be challenging, especially for users with limited coding skills. Furthermore, many tools lack bi-directional communication between the frontend (browser) and the backend (Python), limiting their interactivity and usability for exploring map data.

Leafmap addresses these challenges by leveraging the bidirectional communication provided by ipyleaflet, enabling users to load and visualize geospatial datasets with just one line of code. Leafmap also provides an interactive graphical user interface (GUI) for loading geospatial datasets without any coding. It is designed for anyone who wants to analyze and visualize geospatial data interactively in a Jupyter environment, making it particularly accessible for novice users with limited programming skills. Advanced programmers can also benefit from leafmap for geospatial data analysis and building interactive web applications.

Usage

Launch the interactive notebook tutorial for the leafmap Python package with Google Colab, Binder, or Amazon Sagemaker Studio Lab now:

image
image
Open In Studio Lab

Check out this excellent article on Medium - Leafmap a new Python Package for Geospatial data science

To learn more about leafmap, check out the leafmap documentation website - https://leafmap.org

Key Features

Leafmap offers a wide range of features and capabilities that empower geospatial data scientists, researchers, and developers to unlock the potential of their data. Some of the key features include:

  • Creating an interactive map with just one line of code: Leafmap makes it easy to create an interactive map by providing a simple API that allows you to load and visualize geospatial datasets with minimal coding.

  • Switching between different mapping backends: Leafmap supports multiple mapping backends, including ipyleaflet, folium, kepler.gl, pydeck, and bokeh. You can switch between these backends to create maps with different visualization styles and capabilities.

  • Changing basemaps interactively: Leafmap allows you to change basemaps interactively, providing a variety of options such as OpenStreetMap, Stamen Terrain, CartoDB Positron, and many more.

  • Adding XYZ, WMS, and vector tile services: You can easily add XYZ, WMS, and vector tile services to your map, allowing you to overlay additional geospatial data from various sources.

  • Displaying vector data: Leafmap supports various vector data formats, including Shapefile, GeoJSON, GeoPackage, and any vector format supported by GeoPandas. You can load and display vector data on the map, enabling you to visualize and analyze spatial features.

  • Displaying raster data: Leafmap allows you to load and display raster data, such as GeoTIFFs, on the map. This feature is useful for visualizing satellite imagery, digital elevation models, and other gridded datasets.

  • Creating custom legends and colorbars: Leafmap provides tools for customizing legends and colorbars on the map, allowing you to represent data values with different colors and corresponding labels.

  • Creating split-panel maps and linked maps: With Leafmap, you can create split-panel maps to compare different datasets side by side. You can also create linked maps that synchronize interactions between multiple maps, providing a coordinated view of different spatial data.

  • Downloading and visualizing OpenStreetMap data: Leafmap allows you to download and visualize OpenStreetMap data, providing access to detailed street maps, buildings, and other points of interest.

  • Creating and editing vector data interactively: Leafmap includes tools for creating and editing vector data interactively on the map. You can draw points, lines, and polygons, and modify them as needed.

  • Searching for geospatial data: Leafmap provides functionality for searching and accessing geospatial data from sources such as SpatialTemporal Asset Catalogs (STAC), Microsoft Planetary Computer, AWS Open Data Registry, and OpenAerialMap.

  • Inspecting pixel values interactively: Leafmap allows you to interactively inspect pixel values in raster datasets, helping you analyze and understand the data at a more granular level.

  • Creating choropleth maps and heat maps: Leafmap supports the creation of choropleth maps, where colors represent different data values for specific geographic areas. You can also create heat maps to visualize data density.

  • Displaying data from a PostGIS database: Leafmap provides tools for connecting to a PostGIS database and displaying spatial data stored in the database on the map.

  • Creating time series animations: Leafmap enables the creation of time series animations from both vector and raster data, allowing you to visualize temporal changes in your geospatial datasets.

  • Analyzing geospatial data with whitebox: Leafmap integrates with WhiteboxTools and whiteboxgui, providing a suite of geospatial analyses, such as hydrological analysis, terrain analysis, and LiDAR processing.

  • Segmenting and classifying remote sensing imagery: Leafmap integrates the segment-geospatial package, which provides tools for segmenting and classifying remote sensing imagery using deep learning algorithms.

  • Building interactive web apps: Leafmap supports the development of interactive web applications using frameworks like Voila, Streamlit, and Solara. This allows you to share your geospatial analyses and visualizations with others in a user-friendly web interface.

These features and capabilities make leafmap a powerful tool for geospatial data exploration, analysis, and visualization. Whether you are a beginner or an experienced geospatial data scientist, leafmap provides an accessible and efficient way to work with geospatial data in Python.

Citations

If you find leafmap useful in your research, please consider citing the following paper to support my work. Thank you for your support.

  • Wu, Q. (2021). Leafmap: A Python package for interactive mapping and geospatial analysis with minimal coding in a Jupyter environment. Journal of Open Source Software, 6(63), 3414. https://doi.org/10.21105/joss.03414

Demo

YouTube Channel

I have created a YouTube Channel for sharing geospatial tutorials. You can subscribe to my channel for regular updates. Check out the following videos for 3D mapping with MapLibre and Leafmap.

MapLibre tutorials

Citation (CITATION.cff)

cff-version: 1.1.0
message: "If you use this software, please cite it as below."
authors:
  - family-names: Wu
    given-names: Qiusheng
    orcid: https://orcid.org/0000-0001-5437-4073
title: "Leafmap: A Python package for interactive mapping and geospatial analysis with minimal coding in a Jupyter environment"
version: 0.3.5
doi: 10.21105/joss.03414
date-released: 2021-07-26
url: "https://github.com/opengeos/leafmap"

Owner metadata


GitHub Events

Total
Last Year

Committers metadata

Last synced: 6 days ago

Total Commits: 1,281
Total Committers: 39
Avg Commits per committer: 32.846
Development Distribution Score (DDS): 0.084

Commits in past year: 350
Committers in past year: 9
Avg Commits per committer in past year: 38.889
Development Distribution Score (DDS) in past year: 0.137

Name Email Commits
Qiusheng Wu g****s@g****m 1174
slowy07 s****y@g****m 23
dependabot[bot] 4****] 11
pre-commit-ci[bot] 6****] 11
Kharude, Sachin s****e@h****m 8
rowheat02 r****2@g****m 7
Nahid Pervez n****2@f****m 4
Darren Wiens d****s@g****m 4
Oliver Lopez l****r@g****m 4
Stephan Druskat s****t 3
Markus Neteler n****r@o****g 2
Myles Scolnick m****s@m****o 2
Sugato Ray s****y 2
James A. Bednar j****r@c****o 1
James Willis j****s 1
Jason j****g@g****m 1
Karel Van Camp k****p@g****m 1
Krishna Lodha 4****a 1
Andres Morfin Veytia 7****v 1
Matt Robinson m****b@h****m 1
Matteo m****a@g****m 1
Matthew Thompson m****n@n****v 1
Matthias Meyer c****t@n****m 1
Mike Beller m****e@b****h 1
Sangwoo Ham s****m@s****i 1
Shailesh Shrestha 1****a 1
Tyler Mitchell t****l@s****a 1
Ujaval Gandhi u****l@s****m 1
Vincent Sarago v****o@g****m 1
Xin Zhang x****5@g****m 1
and 9 more...

Committer domains:


Issue and Pull Request metadata

Last synced: 1 day ago

Total issues: 178
Total pull requests: 485
Average time to close issues: about 1 month
Average time to close pull requests: 1 day
Total issue authors: 93
Total pull request authors: 24
Average comments per issue: 2.96
Average comments per pull request: 1.19
Merged pull request: 476
Bot issues: 0
Bot pull requests: 24

Past year issues: 60
Past year pull requests: 270
Past year average time to close issues: 5 days
Past year average time to close pull requests: about 18 hours
Past year issue authors: 30
Past year pull request authors: 11
Past year average comments per issue: 3.62
Past year average comments per pull request: 1.23
Past year merged pull request: 264
Past year bot issues: 0
Past year bot pull requests: 21

More stats: https://issues.ecosyste.ms/repositories/lookup?url=https://github.com/opengeos/leafmap

Top Issue Authors

  • giswqs (35)
  • cboettig (9)
  • patel-zeel (7)
  • ravishbapna (7)
  • robmarkcole (6)
  • rbavery (4)
  • zxdawn (4)
  • Niko-La (4)
  • jmarokhovsky (3)
  • abarciauskas-bgse (3)
  • amjadraza (3)
  • glemoine62 (3)
  • prusswan (2)
  • Chris-AirS (2)
  • automataIA (2)

Top Pull Request Authors

  • giswqs (413)
  • slowy07 (20)
  • dependabot[bot] (13)
  • pre-commit-ci[bot] (11)
  • lopezvoliver (4)
  • mscolnick (3)
  • JJFlorian (3)
  • neteler (2)
  • james-willis (1)
  • prusswan (1)
  • djm93dev (1)
  • yunusserhat (1)
  • niowniow (1)
  • flyhamsw (1)
  • krishnaglodha (1)

Top Issue Labels

  • bug (111)
  • Feature Request (60)
  • help wanted (3)

Top Pull Request Labels

  • ready-to-merge (61)
  • already reviewed (56)
  • dependencies (13)
  • github_actions (11)
  • Feature Request (6)
  • python (2)
  • conflicts pull request (1)

Package metadata

pypi.org: leafmap

A Python package for geospatial analysis and interactive mapping in a Jupyter environment.

  • Homepage: https://github.com/opengeos/leafmap
  • Documentation: https://leafmap.readthedocs.io/
  • Licenses: MIT license
  • Latest release: 0.43.6 (published 8 days ago)
  • Last Synced: 2025-04-25T13:35:30.406Z (1 day ago)
  • Versions: 229
  • Dependent Packages: 19
  • Dependent Repositories: 196
  • Downloads: 70,323 Last month
  • Docker Downloads: 237
  • Rankings:
    • Dependent packages count: 0.905%
    • Dependent repos count: 1.09%
    • Stargazers count: 1.436%
    • Downloads: 1.797%
    • Average: 2.015%
    • Forks count: 2.937%
    • Docker downloads count: 3.927%
  • Maintainers (1)
conda-forge.org: leafmap

A Python package for geospatial analysis and interactive mapping in a Jupyter environment

  • Homepage: https://github.com/opengeos/leafmap
  • Licenses: MIT
  • Latest release: 0.12.1 (published over 2 years ago)
  • Last Synced: 2025-04-25T13:35:34.659Z (1 day ago)
  • Versions: 53
  • Dependent Packages: 4
  • Dependent Repositories: 16
  • Rankings:
    • Dependent repos count: 8.858%
    • Stargazers count: 10.24%
    • Average: 11.09%
    • Dependent packages count: 12.496%
    • Forks count: 12.765%

Dependencies

.github/workflows/codeql.yml actions
  • actions/checkout v3 composite
  • github/codeql-action/analyze v2 composite
  • github/codeql-action/autobuild v2 composite
  • github/codeql-action/init v2 composite
.github/workflows/dependency-review.yml actions
  • actions/checkout v3 composite
  • actions/dependency-review-action v2 composite
.github/workflows/docker-image.yml actions
  • actions/checkout v3 composite
.github/workflows/docker-publish.yml actions
  • actions/checkout v3 composite
  • docker/build-push-action v4 composite
  • docker/login-action v2 composite
  • docker/metadata-action v4 composite
.github/workflows/docs-build.yml actions
  • actions/checkout v3 composite
  • actions/setup-python v4 composite
  • nwtgck/actions-netlify v2.0 composite
.github/workflows/docs.yml actions
  • actions/checkout v3 composite
  • actions/setup-python v4 composite
.github/workflows/macos.yml actions
  • actions/checkout v3 composite
  • actions/setup-python v4 composite
.github/workflows/pypi.yml actions
  • actions/checkout v3 composite
  • actions/setup-python v4 composite
.github/workflows/ubuntu.yml actions
  • actions/checkout v3 composite
  • actions/setup-python v4 composite
.github/workflows/windows.yml actions
  • actions/checkout v3 composite
  • conda-incubator/setup-miniconda v2 composite
Dockerfile docker
  • jupyter/scipy-notebook latest build
requirements.txt pypi
  • bqplot *
  • colour *
  • folium *
  • gdown *
  • geojson *
  • ipyevents *
  • ipyfilechooser *
  • ipyleaflet *
  • ipywidgets *
  • matplotlib *
  • numpy *
  • pandas *
  • pyshp *
  • pystac-client *
  • python-box *
  • scooby *
  • whiteboxgui *
  • xyzservices *
requirements_dev.txt pypi
  • black * development
  • bokeh * development
  • boto3 * development
  • codespell * development
  • cogeo-mosaic * development
  • datapane * development
  • deadlink * development
  • ffmpeg-python * development
  • geopandas * development
  • googledrivedownloader * development
  • gradio * development
  • ipygany * development
  • ipysheet * development
  • ipyvtklink * development
  • jupyter_bokeh * development
  • jupyterlab >=3.0.0 development
  • keplergl * development
  • laspy * development
  • localtileserver * development
  • mapclassify >=2.4.0 development
  • mss * development
  • netcdf4 * development
  • osmnx * development
  • owslib * development
  • palettable * development
  • panel * development
  • plotly * development
  • psycopg2 * development
  • pycrs * development
  • pydeck * development
  • pyntcloud * development
  • pyvista-xarray * development
  • rasterio * development
  • rasterstats * development
  • rio-cogeo * development
  • rioxarray * development
  • sqlalchemy * development
  • streamlit-folium * development
  • xarray_leaflet * development
requirements_docs.txt pypi
  • bump2version *
  • coverage *
  • flake8 *
  • grip *
  • ipykernel *
  • livereload *
  • mkdocs *
  • mkdocs-git-revision-date-localized-plugin *
  • mkdocs-git-revision-date-plugin *
  • mkdocs-jupyter >=0.24.0
  • mkdocs-material >=9.1.3
  • mkdocs-pdf-export-plugin *
  • mkdocstrings *
  • mkdocstrings-crystal *
  • mkdocstrings-python-legacy *
  • nbconvert *
  • nbformat *
  • pip *
  • pygments *
  • pymdown-extensions *
  • sphinx *
  • tox *
  • twine *
  • watchdog *
  • wheel *
setup.py pypi
  • x.strip *
.github/workflows/installation.yml actions
  • actions/checkout v3 composite
  • actions/setup-python v4 composite
environment.yml conda
  • bokeh
  • cartopy
  • datapane
  • flask >=2.0.0
  • flask-caching
  • gdal
  • geemap >=0.11.1
  • geopandas
  • imageio
  • ipyvtklink
  • jupyter_bokeh
  • keplergl
  • laspy
  • leafmap >=0.11.3
  • localtileserver >=0.4.0
  • osmnx
  • pip
  • pydeck
  • pyntcloud
  • python >=3.9
  • pyvista
  • requests
  • rio-cogeo
  • tifffile
  • xarray_leaflet

Score: 22.94157491439991