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
A ready-to-use curated list of Spectral Indices for Remote Sensing applications.

A ready-to-use curated list of Spectral Indices for Remote Sensing applications. GitHub: https://github.com/davemlz/awesome-ee-spectral-indices Docume

David Montero Loaiza 488 Jan 03, 2023
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
Calculate & view the trajectory and live position of any earth-orbiting satellite

satellite-visualization A cross-platform application to calculate & view the trajectory and live position of any earth-orbiting satellite in 3D. This

Space Technology and Astronomy Cell - Open Source Society 3 Jan 08, 2022
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
This repository contains the scripts to derivate the ENU and ECEF coordinates from the longitude, latitude, and altitude values encoded in the NAD83 coordinates.

This repository contains the scripts to derivate the ENU and ECEF coordinates from the longitude, latitude, and altitude values encoded in the NAD83 coordinates.

Luigi Cruz 1 Feb 07, 2022
Solving the Traveling Salesman Problem using Self-Organizing Maps

Solving the Traveling Salesman Problem using Self-Organizing Maps This repository contains an implementation of a Self Organizing Map that can be used

Diego Vicente 3.1k Dec 31, 2022
Raster-based Spatial Analysis for Python

🌍 xarray-spatial: Raster-Based Spatial Analysis in Python 📍 Fast, Accurate Python library for Raster Operations ⚡ Extensible with Numba ⏩ Scalable w

makepath 649 Jan 01, 2023
A toolbox for processing earth observation data with Python.

eo-box eobox is a Python package with a small collection of tools for working with Remote Sensing / Earth Observation data. Package Overview So far, t

13 Jan 06, 2022
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 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
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
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
This is the antenna performance plotted from tinyGS reception data.

tinyGS-antenna-map This is the antenna performance plotted from tinyGS reception data. See their repository. The code produces a plot that provides Az

Martin J. Levy 14 Aug 21, 2022
A python package that extends Google Earth Engine.

A python package that extends Google Earth Engine GitHub: https://github.com/davemlz/eemont Documentation: https://eemont.readthedocs.io/ PyPI: https:

David Montero Loaiza 307 Jan 01, 2023
A modern, geometric typeface by @chrismsimpson (last commit @ 85fa625 Jun 9, 2020 before deletion)

Metropolis A modern, geometric typeface. Influenced by other popular geometric, minimalist sans-serif typefaces of the new millenium. Designed for opt

Darius 183 Dec 25, 2022
Read images to numpy arrays

mahotas-imread: Read Image Files IO with images and numpy arrays. Mahotas-imread is a simple module with a small number of functions: imread Reads an

Luis Pedro Coelho 67 Jan 07, 2023
Hapi is a Python library for building Conceptual Distributed Model using HBV96 lumped model & Muskingum routing method

Current build status All platforms: Current release info Name Downloads Version Platforms Hapi - Hydrological library for Python Hapi is an open-sourc

Mostafa Farrag 15 Dec 26, 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
Minimum Bounding Box of Geospatial data

BBOX Problem definition: The spatial data users often are required to obtain the coordinates of the minimum bounding box of vector and raster data in

Ali Khosravi Kazazi 1 Sep 08, 2022