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
Global topography (referenced to sea-level) in a 10 arcminute resolution grid

Earth - Topography grid at 10 arc-minute resolution Global 10 arc-minute resolution grids of topography (ETOPO1 ice-surface) referenced to mean sea-le

Fatiando a Terra Datasets 1 Jan 20, 2022
Manage your XYZ Hub or HERE Data Hub spaces from Python.

XYZ Spaces for Python Manage your XYZ Hub or HERE Data Hub spaces and Interactive Map Layer from Python. FEATURED IN: Online Python Machine Learning C

HERE Technologies 30 Oct 18, 2022
python toolbox for visualizing geographical data and making maps

geoplotlib is a python toolbox for visualizing geographical data and making maps data = read_csv('data/bus.csv') geoplotlib.dot(data) geoplotlib.show(

Andrea Cuttone 976 Dec 11, 2022
Spectral decomposition for characterizing long-range interaction profiles in Hi-C maps

Inspectral Spectral decomposition for characterizing long-range interaction prof

Nezar Abdennur 6 Dec 13, 2022
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
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
Python package for earth-observing satellite data processing

Satpy The Satpy package is a python library for reading and manipulating meteorological remote sensing data and writing it to various image and data f

PyTroll 882 Dec 27, 2022
Introduction to Geospatial Analysis in Python

Introduction to Geospatial Analysis in Python This repository is in support of a talk on geospatial data. Data To recreate all of the examples, the da

Dillon Gardner 6 Oct 19, 2022
A light-weight, versatile XYZ tile server, built with Flask and Rasterio :earth_africa:

Terracotta is a pure Python tile server that runs as a WSGI app on a dedicated webserver or as a serverless app on AWS Lambda. It is built on a modern

DHI GRAS 531 Dec 28, 2022
Pure python WMS

Ogcserver Python WMS implementation using Mapnik. Depends Mapnik = 0.7.0 (and python bindings) Pillow PasteScript WebOb You will need to install Map

Mapnik 130 Dec 28, 2022
Fiona reads and writes geographic data files

Fiona Fiona reads and writes geographic data files and thereby helps Python programmers integrate geographic information systems with other computer s

987 Jan 04, 2023
Pandas Network Analysis: fast accessibility metrics and shortest paths, using contraction hierarchies :world_map:

Pandana Pandana is a Python library for network analysis that uses contraction hierarchies to calculate super-fast travel accessibility metrics and sh

Urban Data Science Toolkit 321 Jan 05, 2023
:earth_asia: Python Geocoder

Python Geocoder Simple and consistent geocoding library written in Python. Table of content Overview A glimpse at the API Forward Multiple results Rev

Denis 1.5k Jan 02, 2023
Ingest and query genomic intervals from multiple BED files

Ingest and query genomic intervals from multiple BED files.

4 May 29, 2021
r.cfdtools 7 Dec 28, 2022
A Django application that provides country choices for use with forms, flag icons static files, and a country field for models.

Django Countries A Django application that provides country choices for use with forms, flag icons static files, and a country field for models. Insta

Chris Beaven 1.2k Jan 03, 2023
Bacon - Band-limited Coordinate Networks for Multiscale Scene Representation

BACON: Band-limited Coordinate Networks for Multiscale Scene Representation Project Page | Video | Paper Official PyTorch implementation of BACON. BAC

Stanford Computational Imaging Lab 144 Dec 29, 2022
Map Ookla server locations as a Kernel Density Estimation (KDE) geographic map plot.

Ookla Server KDE Plotting This notebook was created to map Ookla server locations as a Kernel Density Estimation (KDE) geographic map plot. Currently,

Jonathan Lo 1 Feb 12, 2022
Automated download of LANDSAT data from USGS website

LANDSAT-Download It seems USGS has changed the structure of its data, and so far, I have not been able to find the direct links to the products? Help

Olivier Hagolle 197 Dec 30, 2022
Creates 3D geometries from 2D vector graphics, for use in geodynamic models

geomIO - creating 3D geometries from 2D input This is the Julia and Python version of geomIO, a free open source software to generate 3D volumes and s

3 Feb 01, 2022