Use Mapbox GL JS to visualize data in a Python Jupyter notebook

Overview
https://upload.wikimedia.org/wikipedia/commons/thumb/b/b4/Mapbox_Logo.svg/1280px-Mapbox_Logo.svg.png

Location Data Visualization library for Jupyter Notebooks

Build Status Coverage Status PyPI version

Library documentation at https://mapbox-mapboxgl-jupyter.readthedocs-hosted.com/en/latest/.

Create Mapbox GL JS data visualizations natively in Jupyter Notebooks with Python and Pandas. mapboxgl is a high-performance, interactive, WebGL-based data visualization tool that drops directly into Jupyter. mapboxgl is similar to Folium built on top of the raster Leaflet map library, but with much higher performance for large data sets using WebGL and Mapbox Vector Tiles.

https://cl.ly/3a0K2m1o2j1A/download/Image%202018-02-22%20at%207.16.58%20PM.png

Try out the interactive map example notebooks from the /examples directory in this repository

  1. Categorical points
  2. All visualization types
  3. Choropleth Visualization types
  4. Image Visualization types
  5. Raster Tile Visualization types

Installation

$ pip install mapboxgl

Documentation

Documentation is on Read The Docs at https://mapbox-mapboxgl-jupyter.readthedocs-hosted.com/en/latest/.

Usage

The examples directory contains sample Jupyter notebooks demonstrating usage.

import os

import pandas as pd

from mapboxgl.utils import create_color_stops, df_to_geojson
from mapboxgl.viz import CircleViz


# Load data from sample csv
data_url = 'https://raw.githubusercontent.com/mapbox/mapboxgl-jupyter/master/examples/data/points.csv'
df = pd.read_csv(data_url)

# Must be a public token, starting with `pk`
token = os.getenv('MAPBOX_ACCESS_TOKEN')

# Create a geojson file export from a Pandas dataframe
df_to_geojson(df, filename='points.geojson',
              properties=['Avg Medicare Payments', 'Avg Covered Charges', 'date'],
              lat='lat', lon='lon', precision=3)

# Generate data breaks and color stops from colorBrewer
color_breaks = [0,10,100,1000,10000]
color_stops = create_color_stops(color_breaks, colors='YlGnBu')

# Create the viz from the dataframe
viz = CircleViz('points.geojson',
                access_token=token,
                height='400px',
                color_property = "Avg Medicare Payments",
                color_stops = color_stops,
                center = (-95, 40),
                zoom = 3,
                below_layer = 'waterway-label'
              )
viz.show()

Development

Install the python library locally with pip:

$ pip install -e .

To run tests use pytest:

$ pip install mock pytest
$ python -m pytest

To run the Jupyter examples,

$ cd examples
$ pip install jupyter
$ jupyter notebook

We follow the PEP8 style guide for Python for all Python code.

Release process

  • After merging all relevant PRs for the upcoming release, pull the master branch
    • git checkout master
    • git pull
  • Update the version number in mapboxgl/__init__.py and push directly to master.
  • Tag the release
    • git tag <version>
    • git push --tags
  • Setup for pypi (one time only)
    • You'll need to pip install twine and set up your credentials in a ~/.pypirc file.
  • Create the release files
    • rm dist/* # clean out old releases if they exist
    • python setup.py sdist bdist_wheel
  • Upload the release files
    • twine upload dist/mapboxgl-*
Comments
  • Data does not show in JupyterLab from local geojson file resources

    Data does not show in JupyterLab from local geojson file resources

    I tried to reproduce the example given in the README with an OpenMapTiles style but the data does not show, I only see the tiles. This is the result:

    screenshot-2018-2-26 jupyterlab

    And this is the code:

    import pandas as pd
    import os
    
    from mapboxgl.utils import *
    from mapboxgl.viz import *
    
    # Load data from sample csv
    data_url = 'https://raw.githubusercontent.com/mapbox/mapboxgl-jupyter/master/examples/points.csv'
    df = pd.read_csv(data_url)
    
    # Create a geojson file export from a Pandas dataframe
    df_to_geojson(df, filename='points.geojson',
                  properties=['Avg Medicare Payments', 'Avg Covered Charges', 'date'],
                  lat='lat', lon='lon', precision=3)
    
    # Generate data breaks and color stops from colorBrewer
    color_breaks = [0,10,100,1000,10000]
    color_stops = create_color_stops(color_breaks, colors='YlGnBu')
    
    # Create the viz from the dataframe
    viz = CircleViz('points.geojson',
                    height='400px',
                    access_token='pk',
                    color_property = "Avg Medicare Payments",
                    color_stops = color_stops,
                    center = (-95, 40),
                    zoom = 3,
                    #below_layer = 'waterway-label',
                    style_url='https://openmaptiles.github.io/osm-bright-gl-style/style-cdn.json',
                  )
    viz.show()
    

    I'm using mapboxgl 0.5.1 installed with pip 9.0.1 in Python 3.4 and latest JupyterLab.

    enhancement 
    opened by astrojuanlu 17
  • Support vector tile source for additional viz types

    Support vector tile source for additional viz types

    Adds support for vector tile source for MapViz, CircleViz, GraduatedCircleViz and HeatmapViz via the VectorMixin class. Adds support for allowing JSON/GeoJSON join-data to be passed as data argument as a filename, URL, or dictionary. Closes #71.

    ready for review 
    opened by akacarlyann 15
  • Legend in Graduated Circle Viz only works when both color_property and radius_property specified

    Legend in Graduated Circle Viz only works when both color_property and radius_property specified

    I want to make a GraduatedCircleViz where the circles are sized by a column in a Pandas DataFrame. I don't have a secondary feature for which I'd like to vary the color.

    If I only specify radius_propery, the visualization is correct, but the Legend is not shown (works fine when a secondary color feature is specified)

    opened by Geo-C-Data 13
  • Variable radius legend

    Variable radius legend

    Adds support for a variable radius legend for the GraduatedCircleViz. Adds legend_function parameter for selecting between calcColorLegend and calcRadiusLegend in JavaScript. Addresses #80.

    opened by akacarlyann 12
  • Legend controls

    Legend controls

    Work in progress!

    • [x] adds legend parameter to MapViz to control legend visibility (defaults to True for all viz classes except HeatmapViz, RasterTilesViz and ImageViz)
    • [x] moves legend div creation to JS
    • [x] refine CSS style for default legend
    • [x] horizontal legend style
    • [x] continuous gradient legend

    Leave for separate pr:

    • variable radius legend

    May leave these for map-collections pr:

    • multi-layer legends
    • multi-variable legends
    opened by akacarlyann 12
  • Public documentation

    Public documentation

    As the API for mapboxgl-jupyter solidifies:

    To hit a 1.0 release, we need great documentation. Let's use this ticket to track docs to-dos:

    • [x] Create documentation generation framework
    • [ ] Doc content - viz types
    • [ ] Doc content - utilities
    • [ ] Doc content - web hosting

    cc/ @perrygeo

    help wanted release blocker 
    opened by ryanbaumann 12
  • Blank map on Google Colab, Jupyter on EC2 instance and Local (windows 10)

    Blank map on Google Colab, Jupyter on EC2 instance and Local (windows 10)

    My first baby steps with mapboxgl were no success. I get a blank map using Google Colab, Jupyter on Amazon EC2 and even running locally:

    https://gist.github.com/rutgerhofste/6aadc6835699762889296437e52280d5

    Am I doing something wrong or is the example no longer supported? Maybe you can add a troubleshooting section.

    UPDATE: Seems like the chloropleth example is broken. Other examples work just fine.

    opened by rutgerhofste 10
  • Save Map to HTML

    Save Map to HTML

    This is a feature request to save the map to file such that it could be subsequently served to a web browser, a la folium's save (see cell 3 in this example)

    enhancement 
    opened by sherl0cks 8
  • Streaming data architecture

    Streaming data architecture

    Investigate creating a streaming data architecture from a Pandas dataframe to a map using the approach in the Smalltalk python library https://github.com/murphy214/smalltalk.

    opened by ryanbaumann 8
  • Add graduated circle viz class, add auto HTML legends

    Add graduated circle viz class, add auto HTML legends

    @perrygeo @dnomadb

    • Adds GraduatedCircleViz support

    • Adds HTML legend support for continuous variable properties

    • Adds a utlity function for calculating circle-radius stops given a min/max range and data property values.

    • Updates example with the required points.csv file.

    Closes https://github.com/mapbox/mapboxgl-jupyter/issues/1

    opened by ryanbaumann 8
  • Mapbox Jupyter doesn't render ChoroplethViz

    Mapbox Jupyter doesn't render ChoroplethViz

    I've the following data and I'm trying to plot the Choropleth Viz using Mapbox Jupyter:

    data= {"type": "FeatureCollection", "features": [{"id": "0", "type": "Feature", "properties": {"ID": 1, "GRIDCODE": "2"}, "geometry": {"type": "Polygon", "coordinates": [[[-124.19626705829167, 41.99373103107739], [-124.201058326111, 41.9934289837606], [-124.20146339159642, 41.99700317753936], [-124.1990676349445, 41.99715424480156], [-124.1988651589845, 41.99536713917695], [-124.19646944995517, 41.99551814746546], [-124.19626705829167, 41.99373103107739]]]}}, {"id": "1", "type": "Feature", "properties": {"ID": 2, "GRIDCODE": "2"}, "geometry": {"type": "Polygon", "coordinates": [[[-124.15334355886935, 41.99822782049714], [-124.15094750259264, 41.99837788692177], [-124.15074636440538, 41.99659059233919], [-124.15054524444224, 41.99480329641264], [-124.15294116874556, 41.99465324869], [-124.15334355886935, 41.99822782049714]]]}}, {"id": "2", "type": "Feature", "properties": {"ID": 3, "GRIDCODE": "2"}, "geometry": {"type": "Polygon", "coordinates": [[[-124.13377326465698, 41.99585224227081], [-124.13856534983393, 41.995552791357824], [-124.13876613984962, 41.99734013399236], [-124.13397392268034, 41.99763960356722], [-124.13377326465698, 41.99585224227081]]]}}, {"id": "3", "type": "Feature", "properties": {"ID": 4, "GRIDCODE": "4"}, "geometry": {"type": "Polygon", "coordinates": [[[-124.13137719480609, 41.996001893351924], [-124.13377326465698, 41.99585224227081], [-124.13397392268034, 41.99763960356722], [-124.13157778683046, 41.99778926397471], [-124.13137719480609, 41.996001893351924]]]}}, {"id": "4", "type": "Feature", "properties": {"ID": 5, "GRIDCODE": "5"}, "geometry": {"type": "Polygon", "coordinates": [[[-124.12898110678809, 41.996151494848036], [-124.13137719480609, 41.996001893351924], [-124.13157778683046, 41.99778926397471], [-124.12918163281154, 41.99793887479414], [-124.12898110678809, 41.996151494848036]]]}}, {"id": "5", "type": "Feature", "properties": {"ID": 6, "GRIDCODE": "2"}, "geometry": {"type": "Polygon", "coordinates": [[[-124.131176620957, 41.99421452138939], [-124.13357262481475, 41.99406487963413], [-124.13377326465698, 41.99585224227081], [-124.13137719480609, 41.996001893351924], [-124.131176620957, 41.99421452138939]]]}}, {"id": "6", "type": "Feature", "properties": {"ID": 7, "GRIDCODE": "3"}, "geometry": {"type": "Polygon", "coordinates": [[[-124.12878059893404, 41.994364113562696], [-124.131176620957, 41.99421452138939], [-124.13137719480609, 41.996001893351924], [-124.12898110678809, 41.996151494848036], [-124.12878059893404, 41.994364113562696]]]}}, {"id": "7", "type": "Feature", "properties": {"ID": 8, "GRIDCODE": "4"}, "geometry": {"type": "Polygon", "coordinates": [[[-124.12878059893404, 41.994364113562696], [-124.12898110678809, 41.996151494848036], [-124.12418887627409, 41.99645054908096], [-124.12398850041586, 41.99466314915913], [-124.12878059893404, 41.994364113562696]]]}}, {"id": "8", "type": "Feature", "properties": {"ID": 9, "GRIDCODE": "3"}, "geometry": {"type": "Polygon", "coordinates": [[[-124.12618413505629, 41.992726264209224], [-124.12858010924755, 41.992576730938204], [-124.12878059893404, 41.994364113562696], [-124.12398850041586, 41.99466314915913], [-124.12418887627409, 41.99645054908096], [-124.12179273378982, 41.99660000181562], [-124.12159242393231, 41.99481259258014], [-124.11919632930696, 41.9949619864149], [-124.1189961035962, 41.99317456653169], [-124.12618413505629, 41.992726264209224]]]}}, {"id": "9", "type": "Feature", "properties": {"ID": 10, "GRIDCODE": "2"}, "geometry": {"type": "Polygon", "coordinates": [[[-124.02254750546336, 41.99374589981529], [-124.024944056708, 41.993598527051816], [-124.02514165333511, 41.99538631160286], [-124.02274503603581, 41.99553369355296], [-124.02254750546336, 41.99374589981529]]]}}]}
    
    from mapboxgl.viz import *
    from mapboxgl.utils import *
    
    
    token = 'public token'
    
    viz = ChoroplethViz(data, 
                        access_token=token)
    viz.show()
    

    The output comes out empty as below.

    Screenshot 2019-06-21 at 11 50 36 AM

    When I try the same data using http://geojson.io

    I get the following output.

    Screenshot 2019-06-21 at 11 52 04 AM

    Am I missing something when plotting in Mapbox?

    Any help would be appreciated. Thank you.

    opened by samirak93 7
  • Mapboxgl cannot be imported on Windows 10 after conda install

    Mapboxgl cannot be imported on Windows 10 after conda install

    I installed mapboxgl from conda-forge, but when I try to import it (or anything from it), I get the following error:

    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
      File "C:\Users\manow\miniconda3\envs\py37_test\lib\site-packages\mapboxgl\__init__.py", line 1, in <module>
        from .viz import CircleViz, GraduatedCircleViz, HeatmapViz, ClusteredCircleViz, ImageViz, RasterTilesViz, ChoroplethViz, LinestringViz
      File "C:\Users\manow\miniconda3\envs\py37_test\lib\site-packages\mapboxgl\viz.py", line 12, in <module>
        from mapboxgl import templates
      File "C:\Users\manow\miniconda3\envs\py37_test\lib\site-packages\mapboxgl\templates.py", line 4, in <module>
        loader=PackageLoader('mapboxgl', 'templates'),
      File "C:\Users\manow\miniconda3\envs\py37_test\lib\site-packages\jinja2\loaders.py", line 324, in __init__
        f"The {package_name!r} package was not installed in a"
    ValueError: The 'mapboxgl' package was not installed in a way that PackageLoader understands.
    
    opened by DManowitz 0
  • Add manifest including non-Python files too

    Add manifest including non-Python files too

    Ref: https://docs.python.org/3/distutils/sourcedist.html#manifest

    Sometimes this is enough, but usually you will want to specify additional files to distribute. The typical way to do this is to write a manifest template, called MANIFEST.in by default. The manifest template is just a list of instructions for how to generate your manifest file, MANIFEST, which is the exact list of files to include in your source distribution. The sdist command processes this template and generates a manifest based on its instructions and what it finds in the filesystem.

    After this change, when I test with:

    (venv) $ python setup.py sdist
    

    The generated dist archive contains the template files. Without the manifest the sdist produced doesn't include the templates folder, probably because it doesn't have any Python files.

    I think this PR should fix:

    • https://github.com/mapbox/mapboxgl-jupyter/issues/163
    • https://github.com/conda-forge/mapboxgl-feedstock/issues/2

    Thank you! -Bruno

    opened by kinow 0
  • Uncaught Error: An API access token is required to use Mapbox GL.

    Uncaught Error: An API access token is required to use Mapbox GL.

    I'm using mapboxgl in python, after i entered my API token "token = os.getenv('pk.eyJ1IjoiYnJ5YW5lZW8iLCJhIjoiY2t4aXF3a2I3MGQ1aTJycWtrYXgxNjJwdCJ9xxxxxxxxx')" for reference purposes. I got the error saying that an API access token is required.

    Does anyone knows what seems to be the issue?

    opened by EeoBryan 0
  • Update viz.py

    Update viz.py

    In response to #168 To avoid the error : UserWarning: Consider using IPython.display.IFrame instead warnings.warn("Consider using IPython.display.IFrame instead") you can now call: viz.show(True) to show a jupyter notebook iframe instead of HTML. Default value set to false to provide full backwards combability.

    opened by buzzCraft 1
  • viz.create_html() rounds lat/lng to 4 decimal places which drops accuracy to 11m

    viz.create_html() rounds lat/lng to 4 decimal places which drops accuracy to 11m

    This is the difference between this:

    Screen Shot 2021-05-31 at 3 37 04 pm

    And this:

    Screen Shot 2021-05-31 at 3 38 20 pm

    This is happening here: https://github.com/mapbox/mapboxgl-jupyter/blob/9a15a0759db5b0c5dc8d59f4a8e0d77b9c378daf/mapboxgl/viz.py#L281

    I'm attempting to solve this by passing in a decimal rather than a float when building my FeatureCollection:

        features.append(Feature(
            geometry=Point((Decimal(m['lng']), Decimal(m['lat']))),
        ))
    

    You can monkey patch this like this:

    import json
    import decimal
    
    class FullJSONEncoder(json.JSONEncoder):
        def default(self, o):
            if isinstance(o, decimal.Decimal):
                return str(o)
            return super().default(o)
    
    default_props = {'cls': FullJSONEncoder, 'skipkeys': False, 'check_circular': False, 'allow_nan': False, 'indent': False, 'separators': None, 'default': None, 'sort_keys': False, 'ensure_ascii': False}
    with patch.object(json.dumps, '__kwdefaults__', default_props):
        ...
    
    opened by aidanlister 0
Releases(0.10.2)
  • 0.10.2(Jun 3, 2019)

    • Upgrade to GL JS v1.0.0 to support Map Load pricing. Map Load pricing should reduce customer billing for BI & Analytics use cases by charging the same for each map session, regardless of how many map tiles are loaded. More details here https://www.mapbox.com/pricing/
    • Added support for line-opacity in Choropleth viz https://github.com/mapbox/mapboxgl-jupyter/pull/157
    Source code(tar.gz)
    Source code(zip)
  • 0.10.1(Feb 16, 2019)

    New Features

    • Adds map snapshot option to save your viz directly to an image. Add the add_snapshot_links=True parameter to your viz object to see the options.

    • Adds hover/highlight styles using the highlight_color parameter on Circle, GraduatedCircle, Linestring, Cluster, and Choropleth (and their vector tile equivalent) layers. The default highlight_color is black. Customize the highlight_color in your viz by passing it as a parameter:
    viz = CircleViz(data, access_token=token, highlight_color='red')
    viz.show()
    

    • Adds support for identity function for height_function_type and color_function_type. This is useful for stying features in your layer from a specific property in your data or vector tile, such as building height or extrusion height.

    Upgrades

    • Upgrades to Mapbox GL JS v0.53.0
    Source code(tar.gz)
    Source code(zip)
  • 0.10.0(Nov 27, 2018)

    New Features

    • Added DateTime serialization from Pandas dataframes using the df_to_geojson function, for use in viz tooltips - https://github.com/mapbox/mapboxgl-jupyter/pull/140
    • Add argument to control popup behavior on click or mouseover - https://github.com/mapbox/mapboxgl-jupyter/pull/139
    • Add new option to support exporting a map viz and legend to a PNG image for creating static reports - https://github.com/mapbox/mapboxgl-jupyter/pull/137

    Upgrades

    • Upgrade Mapbox GL JS to v0.51.0

    Bug Fixes

    • Fix df_to_geojson function on Pandas dataframes with non-sequential indicies - https://github.com/mapbox/mapboxgl-jupyter/pull/132
    Source code(tar.gz)
    Source code(zip)
  • 0.9.0(Sep 18, 2018)

    New Features

    • Upgrade to GL JS v0.49.0
    • Added utils functions for converting geoPandas objects to geojson https://github.com/mapbox/mapboxgl-jupyter/pull/122
    • Add boolean options for zoom behavior https://github.com/mapbox/mapboxgl-jupyter/pull/119
    Source code(tar.gz)
    Source code(zip)
  • 0.8.0(Jul 22, 2018)

    Features

    • Greatly improved legend options for all visuals https://github.com/mapbox/mapboxgl-jupyter/pull/100

    Bugs

    • Default line width fix for linestring visual https://github.com/mapbox/mapboxgl-jupyter/pull/109
    • Upgraded to GL JS v0.47.0 https://github.com/mapbox/mapboxgl-jupyter/pull/117
    • Fixed choropleth example https://github.com/mapbox/mapboxgl-jupyter/pull/104
    Source code(tar.gz)
    Source code(zip)
  • 0.7.3(May 14, 2018)

  • 0.7.1(Apr 26, 2018)

  • 0.7.0(Apr 26, 2018)

    New Features

    • Add support for Linestring visualizations! 🚥 #92 @akacarlyann
    • Add support for 3D Extrusions in Choropleth Visualizations! 🏗 #90 @akacarlyann

    Bug Fixes

    • Fix choropleth with large number of numeric stops #94
    • Fix bug with not tagging Mapbox Tile URLS with Parameter #95
    Source code(tar.gz)
    Source code(zip)
  • 0.6.0(Mar 29, 2018)

    Breaking changes

    • The Viz style_url property is now just style to reflect that a local style sheet may be used, not just a URL

    New Features

    • Add Raster Tile Viz class https://github.com/mapbox/mapboxgl-jupyter/pull/63
    • Add Image viz class https://github.com/mapbox/mapboxgl-jupyter/pull/61
    • Enable custom and local mapboxgl style sheets https://github.com/mapbox/mapboxgl-jupyter/pull/59
    • Added Choropleth Viz support, including data-joins from remote vector tile sources https://github.com/mapbox/mapboxgl-jupyter/pull/40

    Improvements

    • Adds label_size, label_color, label_halo_color, label_halo_width, stroke_color, stroke_width properties to all Circle* Viz types
    • Improves default style options for circle* viz types
    • Adds heatmap_intensity style option
    • Removes requirement for any style options to be passed to create a valid Heatmap viz
    • Removes requirement for any style options to be passed to create a valid Circle* viz
    • Changes default interpolation expression to use an exponential function with base 1.2
    • Organized examples in directory

    Bug fixes

    • A list of colors (custom color palettes) now work with utils.create_color_stops() https://github.com/mapbox/mapboxgl-jupyter/pull/52
    • The radius_default value for GraduatedCircleViz is now set to 1 instead of None #72
    • utils.df_to_geojson() now coverts data row-by-row, saving massive amounts of memory when converting large dataframes to geojson files. https://github.com/mapbox/mapboxgl-jupyter/pull/69
    Source code(tar.gz)
    Source code(zip)
  • 0.5.1(Feb 23, 2018)

  • 0.1.5(Feb 23, 2018)

    • Added markdown documentation. @markmisener
      • Visuals: https://github.com/mapbox/mapboxgl-jupyter/blob/master/docs-markdown/viz.md
      • Utilities: https://github.com/mapbox/mapboxgl-jupyter/blob/master/docs-markdown/utils.md
    • Increased performance and type-safe export of all Pandas data frame data types to geojson using df_to_geojson.
    Source code(tar.gz)
    Source code(zip)
  • 0.1.4(Feb 3, 2018)

    • Fix bug requesting non-Mapbox API url resources
    • Fix bug zooming out when clicking on a data point
    • Big code refactoring in viz.py 🙏 @akacarlyann
    • Byline geojson output for df_to_geojson utility function when a filename is specified. See the latest example at www.mapbox.com/labs/jupyter for an example of how to use this function to make a distributable visualization outside of Jupyter.
    Source code(tar.gz)
    Source code(zip)
  • 0.1.2(Jan 28, 2018)

    • Added support for categorical data in circle visualizations - check out the example https://github.com/mapbox/mapboxgl-jupyter/pull/35. Thanks @akacarlyann!
    • Upgraded to Mapbox GL JS 0.44, greatly improving zoom performance and removing CSP requirements for unsafe-eval
    Source code(tar.gz)
    Source code(zip)
Owner
Mapbox
Mapbox is the location data platform for mobile and web applications. We're changing the way people move around cities and explore our world.
Mapbox
Python module and script to interact with the Tractive GPS tracker.

pyTractive GPS Python module and script to interact with the Tractive GPS tracker. Requirements Python 3 geopy folium pandas pillow usage: main.py [-h

Dr. Usman Kayani 3 Nov 16, 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
Record railway train route profile with GNSS tools

Train route profile recording with GNSS technology based on ARDUINO platform Project target Develop GNSS recording tools based on the ARDUINO platform

tomcom 1 Jan 01, 2022
Imports VZD (Latvian State Land Service) open data into postgis enabled database

Python script main.py downloads and imports Latvian addresses into PostgreSQL database. Data contains parishes, counties, cities, towns, and streets.

Kaspars Foigts 7 Oct 26, 2022
3D extension built off of shapely to make working with geospatial/trajectory data easier in python.

PyGeoShape 3D extension to shapely and pyproj to make working with geospatial/trajectory data easier in python. Getting Started Installation pip The e

Marc Brittain 5 Dec 27, 2022
A NASA MEaSUREs project to provide automated, low latency, global glacier flow and elevation change datasets

Notebooks A NASA MEaSUREs project to provide automated, low latency, global glacier flow and elevation change datasets This repository provides tools

NASA Jet Propulsion Laboratory 27 Oct 25, 2022
Python Data. Leaflet.js Maps.

folium Python Data, Leaflet.js Maps folium builds on the data wrangling strengths of the Python ecosystem and the mapping strengths of the Leaflet.js

6k Jan 02, 2023
A GUI widget for Linux to show current time in different timezones.

A GUI widget to show current time in different timezones (under development). To use this widget: Run scripts/startup.py Select a country. A list of t

B.Jothin kumar 11 Nov 10, 2022
Python renderer for OpenStreetMap with custom icons intended to display as many map features as possible

Map Machine project consists of Python OpenStreetMap renderer: SVG map generation, SVG and PNG tile generation, Röntgen icon set: unique CC-BY 4.0 map

Sergey Vartanov 0 Dec 18, 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
A Jupyter - Leaflet.js bridge

ipyleaflet A Jupyter / Leaflet bridge enabling interactive maps in the Jupyter notebook. Usage Selecting a basemap for a leaflet map: Loading a geojso

Jupyter Widgets 1.3k Dec 27, 2022
prettymaps - A minimal Python library to draw customized maps from OpenStreetMap data.

A small set of Python functions to draw pretty maps from OpenStreetMap data. Based on osmnx, matplotlib and shapely libraries.

Marcelo de Oliveira Rosa Prates 9k Jan 08, 2023
Python project to generate Kerala's distrcit level panchayath map.

Kerala-Panchayath-Maps Python project to generate Kerala's distrcit level panchayath map. As of now, geojson files of Kollam and Kozhikode are added t

Athul R T 2 Jan 10, 2022
Replace MSFS2020's bing map to google map

English verison here 中文 免责声明 本教程提到的方法仅用于研究和学习用途。我不对使用、拓展该教程及方法所造成的任何法律责任和损失负责。 背景 微软模拟飞行2020的地景使用了Bing的卫星地图,然而卫星地图比较老旧,很多地区都是几年前的图设置直接是没有的。这种现象在全球不同地区

hesicong 272 Dec 24, 2022
Yet Another Time Series Model

Yet Another Timeseries Model (YATSM) master v0.6.x-maintenance Build Coverage Docs DOI | About Yet Another Timeseries Model (YATSM) is a Python packag

Chris Holden 60 Sep 13, 2022
Google maps for Jupyter notebooks

gmaps gmaps is a plugin for including interactive Google maps in the IPython Notebook. Let's plot a heatmap of taxi pickups in San Francisco: import g

Pascal Bugnion 747 Dec 19, 2022
Geographic add-ons for Django REST Framework. Maintained by the OpenWISP Project.

django-rest-framework-gis Geographic add-ons for Django Rest Framework - Mailing List. Install last stable version from pypi pip install djangorestfra

OpenWISP 981 Jan 03, 2023
Starlite-tile38 - Showcase using Tile38 via pyle38 in a Starlite application

Starlite-Tile38 Showcase using Tile38 via pyle38 in a Starlite application. Repo

Ben 8 Aug 07, 2022
Water Detect Algorithm

WaterDetect Synopsis WaterDetect is an end-to-end algorithm to generate open water cover mask, specially conceived for L2A Sentinel 2 imagery from MAJ

142 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