Streamlit Component for rendering Folium maps

Overview

streamlit-folium

Run tests each PR

Open in Streamlit

This Streamlit Component is a work-in-progress to determine what functionality is desirable for a Folium and Streamlit integration. Currently, one method folium_static() is defined, which takes a folium.Map or folium.Figure object and displays it in a Streamlit app.

Installation

pip install streamlit-folium

or

conda install -c conda-forge streamlit-folium

Example

import streamlit as st
from streamlit_folium import folium_static
import folium

"# streamlit-folium"

with st.echo():
    import streamlit as st
    from streamlit_folium import folium_static
    import folium

    # center on Liberty Bell
    m = folium.Map(location=[39.949610, -75.150282], zoom_start=16)

    # add marker for Liberty Bell
    tooltip = "Liberty Bell"
    folium.Marker(
        [39.949610, -75.150282], popup="Liberty Bell", tooltip=tooltip
    ).add_to(m)

    # call to render Folium map in Streamlit
    folium_static(m)

"streamlit_folium example"

Comments
  • Map flickering

    Map flickering

    I am trying to add some Google Earth Engine layers (XYZ tile layers) to the map. You can see that the layers have been added successfully, but the map keeps refreshing. Any advice?

    import ee
    import geemap.foliumap as geemap
    import streamlit as st
    from streamlit_folium import st_folium
    
    m = geemap.Map()
    dem = ee.Image("USGS/SRTMGL1_003")
    m.addLayer(dem, {}, "DEM")
    st_data = st_folium(m, width=1000)
    

    Peek 2022-05-07 22-25

    To test it in a notebook:

    import ee
    import geemap.foliumap as geemap
    
    m = geemap.Map()
    dem = ee.Image("USGS/SRTMGL1_003")
    m.addLayer(dem, {}, "DEM")
    m
    
    opened by giswqs 13
  • Returning Latitude, Longitude values from folium map on mouse click to python script (streamlit webapp)

    Returning Latitude, Longitude values from folium map on mouse click to python script (streamlit webapp)

    I am writing a webapp where the user will click on the map and the latitude, longitude will be returned to the python script. the webapp is written on streamlit and for the map I am using folium. Currently, I used folium.LatLngPopup() to get the on click lat long of the clicked location, but I am very confused how to retrieve the values in my python script for further processing.

    This is how it looks currently:

    [This is how it looks currently]1

    #code snippet

    import streamlit as st
    from streamlit_folium import folium_static
    import folium
    m = folium.Map()
    m.add_child(folium.LatLngPopup())
    folium_static(m)
    

    There might not be a native solution to it but any workaround will be appreciated!

    opened by hasantanvir79 8
  • st_folium() autorefresh issue

    st_folium() autorefresh issue

    I recently switched from using folium_static() to st_folium() but I have an issue with its autorefresh. Whenever the folium map is interacted with, the website refreshes from the very top of the page. My project involves scraping data from a website, so anytime the page refreshes, all the code runs again. This makes it virtually impossible to interact with the map. Below is the streamlit app and code

    Code (code for map beings on line 248): https://github.com/daniyal-d/COVID-19-Tracker-Web-App/blob/main/coronavirus_web_app.py Streamlit app (using st_folium): https://daniyal-d-covid-19-tracker-web-app-coronavirus-web-app-fah46j.streamlitapp.com/

    I am unsure if this is an issue with my code or the function. Either way, using folium_static() doesn't lead to any issues. If this problem can't be solved, would you be able to not depreciate 'folium_static()` as the app uses it?

    Thank you

    opened by daniyal-d 7
  • Use Folium attribute selection to populate ST controls

    Use Folium attribute selection to populate ST controls

    Hi Randy. I have created a user story for a use case I have which is to use information from selected features in a specific map layer to populate ST controls. An example : populating an image list in a ST dropdown with the currently visible (or selected) features on a given layer in the map.

    I'd like to work on a PR for that and wondered if you had thoughts or plans along those lines. Here is the (short) document : https://github.com/ymoisan/streamlit-folium/blob/master/user-stories.md. Comments welcome. Thanx for the component !

    opened by ymoisan 7
  • Caching Folium Maps

    Caching Folium Maps

    Hello everyone!

    In the meanwhile, that we start making a bidirectional component with javascript, I was wondering how caching Folium Maps.

    I have created this example for the purpose of it:

    import streamlit as st
    import folium
    import pandas as pd
    import streamlit.components.v1 as components
    import numpy as np
    
    def create_test_df():
        data = {"id": range(10000),
                "year": np.random.choice(range(2018, 2021), 10000),
                "type": np.random.choice(["type_a", "type_b", "type_c"], 10000),
                "latitude": np.random.uniform(low=10, high=20, size=10000),
                "longitude": np.random.uniform(low=10, high=20, size=10000)}
    
        # Respects order
        return pd.DataFrame(data, columns=["id", "year", "type", "latitude", "longitude"])
    
    
    def _plot_dot(point, map_element, color_col, radius=4, weight=1, color='black'):
        color_dict = {2018: "blue", 2019: "orange", 2020: "red"}
    
        folium.CircleMarker(location=[point["latitude"], point["longitude"]], radius=radius, weight=weight,
                            color=color, fill=True,
                            fill_color=color_dict[point[color_col]],
                            fill_opacity=0.9,
                            tooltip=f'<b>id: </b>{str(point["id"])}'
                                    f'<br></br>'f'<b>year: </b>{str(point["year"])}'
                                    f'<br></br>'f'<b>type: </b>{str(point["type"])}',
                            popup=f'<b>id: </b>{str(point["id"])}'
                                  f'<br></br>'f'<b>year: </b>{str(point["year"])}'
                                  f'<br></br>'f'<b>type: </b>{str(point["type"])}'
                            ).add_to(map_element)
    
    
    def generate_map(df):
        map_element = folium.Map(location=[15, 15], zoom_start=6, tiles='cartodbpositron')
    
        df.apply(_plot_dot, axis=1, args=[map_element, "year"])
    
        return map_element
    
    
    def folium_static(fig, width=700, height=500):
        if isinstance(fig, folium.Map):
            fig = folium.Figure().add_child(fig)
    
        return components.html(fig.render(), height=(fig.height or height) + 10, width=width)
    
    
    if __name__ == "__main__":
        st.title("Caching Folium Maps")
    
        df = create_test_df()
    
        option = st.selectbox('Select year?', df['year'].unique())
        st.write('You selected: ', option)
    
        dict_years = {}
        for year in df['year'].unique():
            dict_years[year] = generate_map(df[df["year"] == year])
    
        folium_static(dict_years[option])
    

    This code runs correctly: 1

    I had tried to @st.cache functions with no positive results: Capture

    I understand that I must get deeper into advanced caching (https://docs.streamlit.io/en/stable/advanced_caching.html). Any guidelines about this are welcome.

    enhancement question 
    opened by juancalvof 7
  • Editing+Saving modified drawn layer does not update geometry

    Editing+Saving modified drawn layer does not update geometry

    Thanks a lot for this great library!

    I'm using streamlit-folium in mapa-streamlit and I believe we have found a bug.

    Observed Behavior

    When drawing a rectangle on the folium map, the streamlit app "Running" mode seems to get triggered whenever the rectangle was finished drawing. I can then access the resulting geojson geometry of the rectangle. That is expected and in line with the desired behavior. However, if I now were to edit the drawn rectangle using the "Edit layers" button (see below picture), the streamlit "running" mode does not get triggered when I click on "Save". At the same time, if I inspect the given geojson geometry, it is still the same and did not get updated to the modified geometry.

    Desired Behavior

    Updating a drawn layer (e.g. a rectangle) using the edit button updates the output of st_folium.

    Picture for reference: Screenshot 2022-04-10 at 10 59 53

    opened by fgebhart 6
  • Render <class 'branca.element.Figure'> to allow resizing without white space

    Render to allow resizing without white space

    Hey @randyzwitch , thank you for providing this component, it's been very useful.

    The only issue so far is that reducing folium width/height produces white space on the borders:

    import folium
    m = folium.Map(width='70%', height='50%')
    m
    

    The solution is to use branca.element.Figure class:

    from branca.element import Figure
    fig = Figure(width='70%', height='50%')
    m = folium.Map()
    fig.add_child(m)
    

    However, your component currently is not able to render it. Could you please enable that or suggest a workaround?

    opened by GitHunter0 6
  • Add DualMap support

    Add DualMap support

    Streamlit-folium component now supports also DualMap from Folium plugins.

    • Add switch in streamlit-folium __init__.py to properly handle DualMap rendering

    • Update app example adding DualMap

    opened by a-slice-of-py 6
  • Feature request: return map bounds to streamlit

    Feature request: return map bounds to streamlit

    I have a pandas dataframe that contains the lat/lon location of a bunch of markers (plus other data) and am displaying that when a pin is clicked on via a popup, with the map generated by:

    import folium
    from folium import IFrame
    import pandas as pd
    
    df = pd.read_csv("my.csv")
    
    location = df['latitude'].mean(), df['longitude'].mean()
    m = folium.Map(location=location, zoom_start=15)
    
    width = 900
    height = 600 
    fat_wh = 1 # border around image
    
    for i in range(0, len(df)):
        html = pd.DataFrame(df[["latitude", "longitude", "time"]].iloc[i]).to_html()
        iframe = IFrame(html, width=width*fat_wh, height=height*fat_wh)
        popup  = folium.Popup(iframe, parse_html = True, max_width=2000)
        folium.Marker([df['latitude'].iloc[i], df['longitude'].iloc[i]], popup=popup).add_to(m)
    
    folium_static(m)
    

    Now this dataframe may in future get VERY large as it potentially covers the whole world, so I only want to return the markers that are in the current map view, and do some clever aggregation when the map is zoomed out. For this I need to get the extent of the map view coordinates, and use these to filter the dataframe (I probably also want to do some caching somewhere). Can you advise if this is possible/requires a new feature? Many thanks

    opened by robmarkcole 6
  • Controlled data return

    Controlled data return

    Adds an argument for specifying what data gets returned from the bidrectional st_folium via an argument returned_objects. Anything that is not returned does not cause an app return. If you pass an empty list, it returns an empty dictionary. This leads to a simple rewrite of folium_static to simply call st_folium with an empty list of data items to return.

    Also refactored the example app into a MPA and added a page showing the new limited-return functionality.

    e.g. st_folium(m, returned_objects=["last_clicked"]) -- app would only return the last value clicked, and any other map interactions would not change the value returned, or trigger an app rerun.

    Resolves: #85 Resolves: #77

    opened by blackary 5
  • Get zoom level

    Get zoom level

    Is it possible to get the zoom level of a map object? I saw a similar question at https://github.com/python-visualization/folium/issues/1352, but there is no solution.

    opened by giswqs 5
  • Question: can we get more information on

    Question: can we get more information on "last_object_clicked" than 'lat', 'lng'

    Hello,

    Thank you very much for this library. I am wondering if we can get more information from "last_object_clicked" than 'lat', 'lng'? For example, I set a marker with "popup" and "location". When I click on it and generate an output "last_object_clicked", it generates only 'lat' and 'lng'. I would like to also be able to return 'text from popup'. Is that possible? Or maybe some other attributes related to the marker, so that eventually I can identify which marker was clicked.

    Thanks!

    opened by JurijsNazarovs 0
  • Legend of the map is not displayed

    Legend of the map is not displayed

    The legend of my map is not displayed using the st_folium when colorbar= false. The code:

    import pandas as pd
    import folium
    import geopandas as gpd
    import numpy as np
    import mapclassify
    import streamlit as st
    from streamlit_folium import st_folium
    
    url = ("https://raw.githubusercontent.com/python-visualization/folium/master/examples/data")
    state_geo = f"{url}/us-states.json"
    state_unemployment = f"{url}/US_Unemployment_Oct2012.csv"
    
    state_unemployment = pd.read_csv(state_unemployment)
    geoJSON_df = gpd.read_file(state_geo)
    
    geoJSON_df.rename(columns={'id': 'State'}, inplace=True)
    
    gdf = state_unemployment.merge(geoJSON_df, on='State', how='left')
    gdf = gpd.GeoDataFrame(gdf)
    
    bins = mapclassify.Quantiles(gdf['Unemployment'], k=5).bins
    choropleth = gdf.explore(
        column='Unemployment',
        scheme='UserDefined',
        classification_kwds=dict(bins=bins),
        legend=True,
        legend_kwds=dict(colorbar=False),
    )
    
    st_folium(choropleth, width=700,height=500)
    

    Displayed: displayed

    Expected: expected

    opened by MatheusLevy 0
  • Error when I try to add plugins.FloatImage with st_folium

    Error when I try to add plugins.FloatImage with st_folium

    Hi :wave:

    ... and thanks for providing this great addition to streamlit.

    I was wondering: are folium.plugins generally supported? I wanted to add a FloatImage to the canvas (using st_folium) but I get an error:

    .../lib/python3.11/site-packages/streamlit_folium/__init__.py", line 242, in generate_leaflet_string
        leaflet = m._template.module.script(m)
                  ^^^^^^^^^^^^^^^^^^^^^^^^^
    AttributeError: 'TemplateModule' object has no attribute 'script'
    

    I see there's some special magic for the DualMap plugins - so maybe the FloatImage requires some special treatment, too?

    I'm using python 3.11 and streamlit-folium 0.7

    Cheers, C

    opened by cwerner 0
  • Just a question: extract more values based on user click on Draw plugin.

    Just a question: extract more values based on user click on Draw plugin.

    Hi, thanks for this great library. Really helpful!

    btw I am a beginner in the web developing and github as well, I am so sorry if there are some stupidities on my questions.

    I would like to ask, is it possible to return every value of click event?

    At the moment, I am trying to present folium map on Streamlit. I used the st_folium with Draw plugin and then utilized some of its return values. However I would like to go further.

    For instance, I want user to be able comment on a certain feature or a drawn polygon. For that I created a Popup page that contains a html from. I succeeded to attach the form into the GeojsonPopup however I have struggled to find a way to return the comment and not found it yet. Do you have any idea how to solve it?

    Another example regarding clicking event, I would like to get clicking event when a features e.g., a polygon has finished to be created/edited. Is it possible to return a value on that event?

    Thank you for you time.

    Best wishes, Leclab Research Assistance,

    opened by leclab0 0
  • Your app is having trouble loading the streamlit_folium.st_folium component.

    Your app is having trouble loading the streamlit_folium.st_folium component.

    Hi great job on this library it has been invaluable for my project.

    Lately I have been getting this issue Your app is having trouble loading the streamlit_folium.st_folium component. both on the locally hosted and on streamlit share version. I have been doing lots of updates so not sure which change actually kicked this off. I have seem other people have this error with other components so not sure the cause (https://github.com/PablocFonseca/streamlit-aggrid/issues/7).

    If you leave it a minute or so the map will eventually load (and this issue only occurs sometimes). Does anyone have any thoughts?

    opened by thomasdkelly 5
Releases(v0.10.0)
  • v0.10.0(Jan 4, 2023)

    What's Changed

    • Fix bug, isolate string generation, add more tests by @blackary in https://github.com/randyzwitch/streamlit-folium/pull/108
    • Add VectorGrid support by @blackary in https://github.com/randyzwitch/streamlit-folium/pull/109
    • Use playwright to generate functional frontend tests by @blackary in https://github.com/randyzwitch/streamlit-folium/pull/110
    • Try and make tests more reliable by clicking on navigation links twice and checking for page title by @blackary in https://github.com/randyzwitch/streamlit-folium/pull/111

    Full Changelog: https://github.com/randyzwitch/streamlit-folium/compare/v0.9.0...v0.10.0

    Source code(tar.gz)
    Source code(zip)
  • v0.9.0(Jan 2, 2023)

    What's Changed

    • Update requirements to make examples use 0.8.1 by @blackary in https://github.com/randyzwitch/streamlit-folium/pull/101
    • Add code and test to make sure all references to variables are correctly overwritten with standardized ones… by @blackary in https://github.com/randyzwitch/streamlit-folium/pull/104

    Full Changelog: https://github.com/randyzwitch/streamlit-folium/compare/v0.8.1...v0.9.0

    Source code(tar.gz)
    Source code(zip)
  • v0.8.1(Dec 9, 2022)

    What's Changed

    • Bump example by @blackary in https://github.com/randyzwitch/streamlit-folium/pull/99
    • Standardize ids that get assigned to force unnecessary rerunning, and explicitly turn off events for old layers by @blackary in https://github.com/randyzwitch/streamlit-folium/pull/100

    Full Changelog: https://github.com/randyzwitch/streamlit-folium/compare/v0.8.0...v0.8.1

    Source code(tar.gz)
    Source code(zip)
  • v0.8.0(Dec 8, 2022)

    What's Changed

    • Force the example app to use the latest release by @blackary in https://github.com/randyzwitch/streamlit-folium/pull/90
    • Shrink second pane unless using it for DualMap by @blackary in https://github.com/randyzwitch/streamlit-folium/pull/96
    • Dynamic updates by @blackary in https://github.com/randyzwitch/streamlit-folium/pull/97
    • Ignore warnings by @blackary in https://github.com/randyzwitch/streamlit-folium/pull/98

    Full Changelog: https://github.com/randyzwitch/streamlit-folium/compare/v0.7.0...v0.8.0

    Source code(tar.gz)
    Source code(zip)
  • v0.7.0(Nov 10, 2022)

    What's Changed

    • Controlled data return by @blackary in https://github.com/randyzwitch/streamlit-folium/pull/89

    Full Changelog: https://github.com/randyzwitch/streamlit-folium/compare/v0.6.15...v0.7.0

    Source code(tar.gz)
    Source code(zip)
  • v0.6.15(Aug 31, 2022)

    What's Changed

    • Bump streamlit from 1.8.1 to 1.11.1 in /examples by @dependabot in https://github.com/randyzwitch/streamlit-folium/pull/80
    • Bump streamlit from 1.8.1 to 1.11.1 in /tests by @dependabot in https://github.com/randyzwitch/streamlit-folium/pull/81
    • Support html siblings to the map by @blackary in https://github.com/randyzwitch/streamlit-folium/pull/83

    New Contributors

    • @dependabot made their first contribution in https://github.com/randyzwitch/streamlit-folium/pull/80

    Full Changelog: https://github.com/randyzwitch/streamlit-folium/compare/v0.6.14...v0.6.15

    Source code(tar.gz)
    Source code(zip)
  • v0.6.14(Jul 6, 2022)

    Fix Draw plugin functionality

    What's Changed

    • Fix all_drawings to get properly populated by @blackary in https://github.com/randyzwitch/streamlit-folium/pull/76

    Full Changelog: https://github.com/randyzwitch/streamlit-folium/compare/v0.6.13...v0.6.14

    Source code(tar.gz)
    Source code(zip)
  • v0.6.13(May 31, 2022)

    What's Changed

    • Return map center by @blackary in https://github.com/randyzwitch/streamlit-folium/pull/69

    Full Changelog: https://github.com/randyzwitch/streamlit-folium/compare/v0.6.12...v0.6.13

    Source code(tar.gz)
    Source code(zip)
  • v0.6.12(May 26, 2022)

    Sets default value for bounds, working around an upstream bug in Folium

    What's Changed

    • Dont fail on bounds by @blackary in https://github.com/randyzwitch/streamlit-folium/pull/68

    Full Changelog: https://github.com/randyzwitch/streamlit-folium/compare/v0.6.11...v0.6.12

    Source code(tar.gz)
    Source code(zip)
  • v0.6.11(May 23, 2022)

    What's Changed

    • Fix google earth engine flickering and cleanup code by @blackary in https://github.com/randyzwitch/streamlit-folium/pull/66

    Full Changelog: https://github.com/randyzwitch/streamlit-folium/compare/v0.6.10...v0.6.11

    Source code(tar.gz)
    Source code(zip)
  • v0.6.10(May 16, 2022)

    What's Changed

    • Add last drawn circle radius and polygon to output by @sfc-gh-zblackwood in https://github.com/randyzwitch/streamlit-folium/pull/59
    • Fix safari by @blackary in https://github.com/randyzwitch/streamlit-folium/pull/60

    Full Changelog: https://github.com/randyzwitch/streamlit-folium/compare/v0.6.9...v0.6.10

    Source code(tar.gz)
    Source code(zip)
  • v0.6.9(May 11, 2022)

    Resolves issue where a double-click was required for update

    What's Changed

    • Fix layer-click bug by @blackary in https://github.com/randyzwitch/streamlit-folium/pull/57

    Full Changelog: https://github.com/randyzwitch/streamlit-folium/compare/v0.6.8...v0.6.9

    Source code(tar.gz)
    Source code(zip)
  • v0.6.8(May 11, 2022)

    Fixes type instability on map load, where the default instantiated value returned a list and component then returns a dict.

    Full Changelog: https://github.com/randyzwitch/streamlit-folium/compare/v0.6.7...v0.6.8

    Source code(tar.gz)
    Source code(zip)
  • v0.6.7(Apr 25, 2022)

    What's Changed

    • Fix popups and default return by @blackary in https://github.com/randyzwitch/streamlit-folium/pull/49

    Full Changelog: https://github.com/randyzwitch/streamlit-folium/compare/v0.6.6...v0.6.7

    Source code(tar.gz)
    Source code(zip)
  • v0.6.6(Apr 21, 2022)

    What's Changed

    • Fix popups and default return by @blackary in https://github.com/randyzwitch/streamlit-folium/pull/48

    Full Changelog: https://github.com/randyzwitch/streamlit-folium/compare/v0.6.5...v0.6.6

    Source code(tar.gz)
    Source code(zip)
  • v0.6.5(Apr 12, 2022)

    What's Changed

    • Update drawn objects on edit and delete by @sfc-gh-zblackwood in https://github.com/randyzwitch/streamlit-folium/pull/42

    New Contributors

    • @sfc-gh-zblackwood made their first contribution in https://github.com/randyzwitch/streamlit-folium/pull/42

    Full Changelog: https://github.com/randyzwitch/streamlit-folium/compare/v0.6.4...v0.6.5

    Source code(tar.gz)
    Source code(zip)
  • v0.6.4(Mar 21, 2022)

  • v0.6.3(Mar 17, 2022)

    Adds zoom level as one of the properties returned on interaction with st_folium

    What's Changed

    • Get map zoom by @blackary in https://github.com/randyzwitch/streamlit-folium/pull/39

    Full Changelog: https://github.com/randyzwitch/streamlit-folium/compare/v0.6.2...v0.6.3

    Source code(tar.gz)
    Source code(zip)
  • v0.6.2(Feb 18, 2022)

    #34 highlighted that some features weren't working as expected, which was determined to be at least partially due to missing JS dependencies inside the iframe. This release fixes that.

    Source code(tar.gz)
    Source code(zip)
  • v0.6.0(Feb 15, 2022)

    This release adds bi-directional support via the st_folium function. When calling mapdata = st_folium(m), a dict will be returned back to Python with the bounding box and other click data. Improved documentation will come in a future release as time allows, but you can see the examples folder for ideas of how to use this new functionality.

    What's Changed

    • Make component bidirectional by @blackary in https://github.com/randyzwitch/streamlit-folium/pull/28
    • Fix manifest, bump version by @randyzwitch in https://github.com/randyzwitch/streamlit-folium/pull/29
    • Fix manifest by @randyzwitch in https://github.com/randyzwitch/streamlit-folium/pull/31
    • Add support for getting all drawn objects on the map by @blackary in https://github.com/randyzwitch/streamlit-folium/pull/32

    New Contributors

    • @blackary made their first contribution in https://github.com/randyzwitch/streamlit-folium/pull/28

    Full Changelog: https://github.com/randyzwitch/streamlit-folium/compare/v0.5.0...v0.6.0

    Source code(tar.gz)
    Source code(zip)
  • v0.6.0a4(Feb 15, 2022)

  • v0.6.0a3(Feb 11, 2022)

    Test of building the bi-directional component and submitting to PyPI.

    USERS SHOULD NOT USE THIS VERSION UNLESS YOU UNDERSTAND WHAT THIS MEANS

    Source code(tar.gz)
    Source code(zip)
  • v0.5.0(Feb 9, 2022)

    Release moves required version of Streamlit >= 1.2 to ensure memory improvements are incorporated, adds Branca rendering, fixes CI by pinning dependencies closer

    Source code(tar.gz)
    Source code(zip)
  • v0.4.0(May 17, 2021)

  • 0.3.0(Mar 9, 2021)

  • 0.2.0(Mar 3, 2021)

  • v0.1.1(Feb 5, 2021)

  • v0.1.0(Aug 13, 2020)

  • v0.0.1(Jul 20, 2020)

Owner
Randy Zwitch
Head of Developer Relations at Streamlit. Julia enthusiast, R and Python developer
Randy Zwitch
A simple reverse geocoder that resolves a location to a country

Reverse Geocoder This repository holds a small web service that performs reverse geocoding to determine whether a user specified location is within th

4 Dec 25, 2021
Search and download Copernicus Sentinel satellite images

sentinelsat Sentinelsat makes searching, downloading and retrieving the metadata of Sentinel satellite images from the Copernicus Open Access Hub easy

837 Dec 28, 2022
geobeam - adds GIS capabilities to your Apache Beam and Dataflow pipelines.

geobeam adds GIS capabilities to your Apache Beam pipelines. What does geobeam do? geobeam enables you to ingest and analyze massive amounts of geospa

Google Cloud Platform 61 Nov 08, 2022
Using Global fishing watch's data to build a machine learning model that can identify illegal fishing and poaching activities through satellite and geo-location data.

Using Global fishing watch's data to build a machine learning model that can identify illegal fishing and poaching activities through satellite and geo-location data.

Ayush Mishra 3 May 06, 2022
Python module to access the OpenCage geocoding API

OpenCage Geocoding Module for Python A Python module to access the OpenCage Geocoder. Build Status / Code Quality / etc Usage Supports Python 3.6 or n

OpenCage GmbH 57 Nov 01, 2022
Code and coordinates for Matt's 2021 xmas tree

xmastree2021 Code and coordinates for Matt's 2021 xmas tree This repository contains the code and coordinates used for Matt's 2021 Christmas tree, as

Stand-up Maths 117 Jan 01, 2023
A Python package for delineating nested surface depressions from digital elevation data.

Welcome to the lidar package lidar is Python package for delineating the nested hierarchy of surface depressions in digital elevation models (DEMs). I

Qiusheng Wu 166 Jan 03, 2023
Python bindings and utilities for GeoJSON

geojson This Python library contains: Functions for encoding and decoding GeoJSON formatted data Classes for all GeoJSON Objects An implementation of

Jazzband 763 Dec 26, 2022
r.cfdtools 7 Dec 28, 2022
Deal with Bing Maps Tiles and Pixels / WGS 84 coordinates conversions, and generate grid Shapefiles

PyBingTiles This is a small toolkit in order to deal with Bing Tiles, used i.e. by Facebook for their Data for Good datasets. Install Clone this repos

Shoichi 1 Dec 08, 2021
Use Mapbox GL JS to visualize data in a Python Jupyter notebook

Location Data Visualization library for Jupyter Notebooks Library documentation at https://mapbox-mapboxgl-jupyter.readthedocs-hosted.com/en/latest/.

Mapbox 620 Dec 15, 2022
Download and process satellite imagery in Python using Sentinel Hub services.

Description The sentinelhub Python package allows users to make OGC (WMS and WCS) web requests to download and process satellite images within your Py

Sentinel Hub 659 Dec 23, 2022
Digital Earth Australia notebooks and tools repository

Repository for Digital Earth Australia Jupyter Notebooks: tools and workflows for geospatial analysis with Open Data Cube and xarray

Geoscience Australia 335 Dec 24, 2022
Python library to decrypt Airtag reports, as well as a InfluxDB/Grafana self-hosted dashboard example

Openhaystack-python This python daemon will allow you to gather your Openhaystack-based airtag reports and display them on a Grafana dashboard. You ca

Bezmenov Denys 19 Jan 03, 2023
Computer Vision in Python

Mahotas Python Computer Vision Library Mahotas is a library of fast computer vision algorithms (all implemented in C++ for speed) operating over numpy

Luis Pedro Coelho 792 Dec 20, 2022
A Python tool to display geolocation information in the traceroute.

IP2Trace Python IP2Trace Python is a Python tool allowing user to get IP address information such as country, region, city, latitude, longitude, zip c

IP2Location 22 Jan 08, 2023
A simple python script that, given a location and a date, uses the Nasa Earth API to show a photo taken by the Landsat 8 satellite. The script must be executed on the command-line.

What does it do? Given a location and a date, it uses the Nasa Earth API to show a photo taken by the Landsat 8 satellite. The script must be executed

Caio 42 Nov 26, 2022
A part of HyRiver software stack for handling geospatial data manipulations

Package Description Status PyNHD Navigate and subset NHDPlus (MR and HR) using web services Py3DEP Access topographic data through National Map's 3DEP

Taher Chegini 5 Dec 14, 2022
pure-Python (Numpy optional) 3D coordinate conversions for geospace ecef enu eci

Python 3-D coordinate conversions Pure Python (no prerequistes beyond Python itself) 3-D geographic coordinate conversions and geodesy. API similar to

Geospace code 292 Dec 29, 2022
Mmdb-server - An open source fast API server to lookup IP addresses for their geographic location

mmdb-server mmdb-server is an open source fast API server to lookup IP addresses

Alexandre Dulaunoy 67 Nov 25, 2022