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
Calculate the area inside of any GeoJSON geometry. This is a port of Mapbox's geojson-area for Python

geojson-area Calculate the area inside of any GeoJSON geometry. This is a port of Mapbox's geojson-area for Python. Installation $ pip install area U

Alireza 87 Dec 14, 2022
A package to fetch sentinel 2 Satellite data from Google.

Sentinel 2 Data Fetcher Installation Create a Virtual Environment and activate it. python3 -m venv venv . venv/bin/activate Install the Package via pi

1 Nov 18, 2021
LicenseLocation - License Location With Python

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

The Bin 1 Jan 25, 2022
Tool to suck data from ArcGIS Server and spit it into PostgreSQL

chupaESRI About ChupaESRI is a Python module/command line tool to extract features from ArcGIS Server map services. Name? Think "chupacabra" or "Chupa

John Reiser 34 Dec 04, 2022
Summary statistics of geospatial raster datasets based on vector geometries.

rasterstats rasterstats is a Python module for summarizing geospatial raster datasets based on vector geometries. It includes functions for zonal stat

Matthew Perry 437 Dec 23, 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
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
GeoNode is an open source platform that facilitates the creation, sharing, and collaborative use of geospatial data.

Table of Contents What is GeoNode? Try out GeoNode Install Learn GeoNode Development Contributing Roadmap Showcase Most useful links Licensing What is

GeoNode Development Team 1.2k Dec 26, 2022
Script that allows to download data with satellite's orbit height and create CSV with their change in time.

Satellite orbit height β—Ύ Requirements Python = 3.8 Packages listen in reuirements.txt (run pip install -r requirements.txt) Account on Space Track β—Ύ

Alicja MusiaΕ‚ 2 Jan 17, 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
Python library to decrypt Airtag reports, as well as a InfluxDB/Grafana self-hosted dashboard example

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

Bezmenov Denys 19 Jan 03, 2023
Construct and use map tile grids in different projection.

Morecantile +-------------+-------------+ ymax | | | | x: 0 | x: 1 | | y: 0 | y: 0

Development Seed 67 Dec 23, 2022
Histogram matching plugin for rasterio

rio-hist Histogram matching plugin for rasterio. Provides a CLI and python module for adjusting colors based on histogram matching in a variety of col

Mapbox 75 Sep 23, 2022
A Python tool to display geolocation information in the traceroute.

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

IP2Location 22 Jan 08, 2023
Geographic add-ons for Django REST Framework. Maintained by the OpenWISP Project.

Geographic add-ons for Django REST Framework. Maintained by the OpenWISP Project.

OpenWISP 982 Jan 06, 2023
Read and write rasters in parallel using Rasterio and Dask

dask-rasterio dask-rasterio provides some methods for reading and writing rasters in parallel using Rasterio and Dask arrays. Usage Read a multiband r

Dymaxion Labs 85 Aug 30, 2022
Location field and widget for Django. It supports Google Maps, OpenStreetMap and Mapbox

django-location-field Let users pick locations using a map widget and store its latitude and longitude. Stable version: django-location-field==2.1.0 D

Caio Ariede 481 Dec 29, 2022
How to use COG's (Cloud optimized GeoTIFFs) with Rasterio

How to use COG's (Cloud optimized GeoTIFFs) with Rasterio According to Cogeo.org: A Cloud Opdtimized GeoTIFF (COG) is a regular GeoTIFF file, aimed at

Marvin Gabler 8 Jul 29, 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
A Python framework for building geospatial web-applications

Hey there, this is Greppo... A Python framework for building geospatial web-applications. Greppo is an open-source Python framework that makes it easy

Greppo 304 Dec 27, 2022