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
Geocode rows in a SQLite database table

Geocode rows in a SQLite database table

Chris Amico 225 Dec 08, 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 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
Django model field that can hold a geoposition, and corresponding widget

django-geoposition A model field that can hold a geoposition (latitude/longitude), and corresponding admin/form widget. Prerequisites Starting with ve

Philipp Bosch 324 Oct 17, 2022
Python tools for geographic data

GeoPandas Python tools for geographic data Introduction GeoPandas is a project to add support for geographic data to pandas objects. It currently impl

GeoPandas 3.5k Jan 03, 2023
iNaturalist observations along hiking trails

This tool reads the route of a hike and generates a table of iNaturalist observations along the trails. It also shows the observations and the route of the hike on a map. Moreover, it saves waypoints

7 Nov 11, 2022
Constraint-based geometry sketcher for blender

Geometry Sketcher Constraint-based sketcher addon for Blender that allows to create precise 2d shapes by defining a set of geometric constraints like

1.7k Jan 02, 2023
A package built to support working with spatial data using open source python

EarthPy EarthPy makes it easier to plot and manipulate spatial data in Python. Why EarthPy? Python is a generic programming language designed to suppo

Earth Lab 414 Dec 23, 2022
Example of animated maps in matplotlib + geopandas using entire time series of congressional district maps from UCLA archive. rendered, interactive version below

Example of animated maps in matplotlib + geopandas using entire time series of congressional district maps from UCLA archive. rendered, interactive version below

Apoorva Lal 5 May 18, 2022
Program that shows all the details of the given IP address. Build with Python and ipinfo.io API

ip-details This is a program that shows all the details of the given IP address. Build with Python and ipinfo.io API Usage To use this program, run th

4 Mar 01, 2022
Interactive Maps with Geopandas

Create Interactive maps πŸ—ΊοΈ with your geodataframe Geopatra extends geopandas for interactive mapping and attempts to wrap the goodness of amazing map

sangarshanan 46 Aug 16, 2022
gjf: A tool for fixing invalid GeoJSON objects

gjf: A tool for fixing invalid GeoJSON objects The goal of this tool is to make it as easy as possible to fix invalid GeoJSON objects through Python o

Yazeed Almuqwishi 91 Dec 06, 2022
LicenseLocation - License Location With Python

LicenseLocation Hi,everyone! ❀ 🧑 πŸ’› πŸ’š πŸ’™ πŸ’œ This is my first project! βœ” Actual

The Bin 1 Jan 25, 2022
PyTorch implementation of ''Background Activation Suppression for Weakly Supervised Object Localization''.

Background Activation Suppression for Weakly Supervised Object Localization PyTorch implementation of ''Background Activation Suppression for Weakly S

34 Dec 27, 2022
A proof-of-concept jupyter extension which converts english queries into relevant python code

Text2Code for Jupyter notebook A proof-of-concept jupyter extension which converts english queries into relevant python code. Blog post with more deta

DeepKlarity 2.1k Dec 29, 2022
Enable geospatial data mining through Google Earth Engine in Grasshopper 3D, via its most recent Hops component.

AALU_Geo Mining This repository is produced for a masterclass at the Architectural Association Landscape Urbanism programme. Requirements Rhinoceros (

4 Nov 16, 2022
Geocoding library for Python.

geopy geopy is a Python client for several popular geocoding web services. geopy makes it easy for Python developers to locate the coordinates of addr

geopy 3.8k Dec 30, 2022
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
Rasterio reads and writes geospatial raster datasets

Rasterio Rasterio reads and writes geospatial raster data. Geographic information systems use GeoTIFF and other formats to organize and store gridded,

Mapbox 1.9k Jan 07, 2023
Python interface to PROJ (cartographic projections and coordinate transformations library)

pyproj Python interface to PROJ (cartographic projections and coordinate transformations library). Documentation Stable: http://pyproj4.github.io/pypr

832 Dec 31, 2022