peartree: A library for converting transit data into a directed graph for sketch network analysis.

Overview

peartree ๐Ÿ ๐ŸŒณ

https://img.shields.io/travis/kuanb/peartree.svg?branch=master

peartree is a library for converting GTFS feed schedules into a representative directed network graph. The tool uses Partridge to convert the target operator schedule data into Pandas dataframes and then NetworkX to hold the manipulated schedule data as a directed multigraph.

https://raw.githubusercontent.com/kuanb/peartree/master/examples/example.gif

Above, an example of multiple Bay Area transit operators being incrementally loaded into peartree.

Installation

pip install peartree

Usage

See a full notebook at this gist to see a simple, step-by-step iPython Notebook pulling in an AC Transit GTFS feed and converting it to a NetworkX graph.

import peartree as pt

path = 'path/to/actransit_gtfs.zip'

# Automatically identify the busiest day and
# read that in as a Partidge feed
feed = pt.get_representative_feed(path)

# Set a target time period to
# use to summarize impedance
start = 7*60*60  # 7:00 AM
end = 10*60*60  # 10:00 AM

# Converts feed subset into a directed
# network multigraph
G = pt.load_feed_as_graph(feed, start, end)

Examples

I've yet to produce a full how-to guide for this library, but will begin to populate this section with any blog posts or notebooks that I or others produce, that include workflows using peartree.

Calculating betweeness centrality with Brooklyn bus network

Combining a peartree transit network and an OpenStreetMap walk network

Generating comparative acyclic route graphs

Coalescing transit network graphs and spectral clustering methods

Exploratory graph analysis with betweenness and load centrality

Comments
  • not able to plot GTFS data using peartree

    not able to plot GTFS data using peartree

    Hello everyone, I have been trying to implement an already existing code to plot GTFS feed but getting attribute error somewhere in pandas module getting called inside from peartree module. I would be thankful for any help. Python --version -3.8 OS -- Windows 10 P.S. I have updated required modules still the problem persists.

    Script:-

    try: import peartree as pt except: pass import os import pickle PKL_PATH = 'graph.pkl' #Creating the graph takes a gazillion time so I pickle it if not os.path.exists(PKL_PATH): # Automatically identify the busiest day and # read that in as a Partidge feed feed = pt.get_representative_feed("F:\PhD\GTFS\GTFS_trial.zip") # Set a target time period to # use to summarize impedance start = 76060 # 7:00 AM end = 106060 # 10:00 AM # Converts feed subset into a directed # network multigraph G = pt.load_feed_as_graph(feed, start, end) with open(PKL_PATH, 'wb') as pkl_file: pickle.dump(G, pkl_file) else: with open(PKL_PATH, 'rb') as pkl_file: G = pickle.load(pkl_file)

    Traceback (most recent call last): File "F:/PhD/Python/Directed_multigraph.py", line 31, in feed = pt.get_representative_feed("F:\PhD\GTFS\GTFS_trial.zip") File "C:\Anaconda3\envs\Python\lib\site-packages\peartree\paths.py", line 95, in get_representative_feed service_ids_by_date = ptg.read_service_ids_by_date(file_loc) File "C:\Anaconda3\envs\Python\lib\site-packages\partridge\readers.py", line 72, in read_service_ids_by_date return _service_ids_by_date(feed) File "C:\Anaconda3\envs\Python\lib\site-packages\partridge\readers.py", line 156, in _service_ids_by_date service_ids = set(feed.trips.service_id) File "C:\Anaconda3\envs\Python\lib\site-packages\pandas\core\generic.py", line 5274, in getattr return object.getattribute(self, name) AttributeError: 'DataFrame' object has no attribute 'service_id'

    opened by Pranav-Gairola 12
  • Load feed as graph issue for reduced GTFS feed

    Load feed as graph issue for reduced GTFS feed

    Hello,

    I find myself facing an issue with the use of the G = pt.load_feed_as_graph(feed, start, end) command.

    I am working with GTFS feed of the Paris region in France but I am not interested in the totality of the feed. As I only wanted to work on a smallest area, I selected the stop stations that were of interest to me and then extracted -into new GTFS files- the data of the original GTFS files that were linked to these stop stations. I used a script I found here that I modified a bit to fit my GTFS files and to trim them.

    However, when I try to load my trimmed feed with G = pt.load_feed_as_graph(feed, start, end) I get the following error:

    InsufficientSummaryResults

    ---------------------------------------------------------------------------
    InsufficientSummaryResults                Traceback (most recent call last)
    <ipython-input-119-74a13fcca0d5> in <module>
          3 # Converts feed subset into a directed network mugenerate_plotph
          4 
    ----> 5 G = pt.load_feed_as_graph(feed, start, end)
          6 
          7 end_time = time.time()
    
    ~/anaconda3/envs/iox/lib/python3.6/site-packages/peartree/paths.py in load_feed_as_graph(feed, start_time, end_time, name, existing_graph, connection_threshold, walk_speed_kmph, stop_cost_method, fallback_stop_cost, interpolate_times, impute_walk_transfers, use_multiprocessing)
        218                                                            interpolate_times,
        219                                                            stop_cost_method,
    --> 220                                                            use_multiprocessing)
        221 
        222     # This is a flag used to check if we need to run any additional steps
    
    ~/anaconda3/envs/iox/lib/python3.6/site-packages/peartree/graph.py in generate_summary_graph_elements(feed, target_time_start, target_time_end, fallback_stop_cost, interpolate_times, stop_cost_method, use_multiprocessing)
        119 
        120     # Same sanity checks on the output before we continue
    --> 121     _verify_outputs(all_edge_costs, all_wait_times)
        122 
        123     summary_edge_costs = generate_summary_edge_costs(all_edge_costs)
    
    ~/anaconda3/envs/iox/lib/python3.6/site-packages/peartree/graph.py in _verify_outputs(all_edge_costs, all_wait_times)
        208     # Handle if there are no valid edges returned (or wait times)
        209     if all_edge_costs is None or len(all_edge_costs) == 0:
    --> 210         raise InsufficientSummaryResults('The target time frame returned no '
        211                                          'valid edge costs from feed object.')
        212     if all_wait_times is None or len(all_wait_times) == 0:
    
    InsufficientSummaryResults: The target time frame returned no valid edge costs from feed object.
    

    I don't understand why the error is raised, I think my GTFS files where trimmed properly so I should be able to create a graph with them.

    Any help or indications would be greatly appreciated.

    opened by M-nes 8
  • AttributeError: 'float' object has no attribute 'add_node'

    AttributeError: 'float' object has no attribute 'add_node'

    Hi, I am getting the above error when setting impute_walk_transfers to True in pt.load_feed_as_graph. I am able to construct the graph with just (feed, start, end), but unable to when including impute_walk_transfer. I want to incorporate bus to bus transfer and bus to subway transfer as well as walking edges in my network. Is this the right way to achieve that?

    question 
    opened by rxl204 8
  • [feature] Support export to graph-tool

    [feature] Support export to graph-tool

    Per this tweet by GH user @rafapereirabr: A request to support graph-tool.

    A Gist does exist to support graph-tool conversion from NetworkX.

    Potential snafus would be increasing the complexity of the installation of this library by supporting graph-tool. One way around this would be to make the installation optional (akin to how GeoPandas treats Rtree).

    enhancement 
    opened by kuanb 7
  • UserWarning: Boolean Series key will be reindexed to match DataFrame index.

    UserWarning: Boolean Series key will be reindexed to match DataFrame index.

    I just upgraded to Pandas 1.2.0 on Python 3.8.5 and I am getting a warning from Pandas:

    UserWarning: Boolean Series key will be reindexed to match DataFrame index.

    At this line of code: https://github.com/kuanb/peartree/blob/254207ba759d82a1d66f84287075ce1f8d093463/peartree/parallel.py#L127

    I think this is because the filter is using a different Dataframe from the Dataframe being filtered.

    opened by bryanculbertson 5
  • [coalesce] Use mean of grouped edge weights rather than minimum

    [coalesce] Use mean of grouped edge weights rather than minimum

    Using minimum of grouped edge weights effectively reduce path costs, and increase accessibility significantly. The following map shows shortest path lengths from one single source to all destinations in Berkeley. It changes from using original full network to coalesced network using min grouped edge weights. Noticing the shortest path lengths reduce significantly (darker color to lighter color) use_min

    The following map shows the same change but using coalesced network using mean (different color bins though). The change is less significant. use_mean

    Also some stats comparison:

    Stats | Full Network | Coalesced w Min | Coalesced w Mean --|--|--|-- Max shortest path length | 5172 | 3092 | 3493 Mean shortest path length | 2488 | 1383 | 1619

    Visuals made by UrbanFootprint :))

    opened by yiyange 5
  • Can not use peartree to plot the data

    Can not use peartree to plot the data

    Hello,

    I am trying to using peartree to plot the GTFS data, but in the end I meet this error

    UnboundLocalError`                         `Traceback` `(most` recent call last)
    <ipython-input-12-3fede03b6b3a> in <module>
    ----> 1 pt.generate_plot(G)
    
    ~\Anaconda3\lib\site-packages\peartree\plot.py in generate_plot(G, use_agg)
         25     #       also plan on incorporating OSMnx into this library
         26     #       down the road so it isn't too extraneous an import.
    ---> 27     fig, ax = ox.plot_graph(G,
         28                             fig_height=12,
         29                             `show=False,`
    UnboundLocalError: local variable 'ox' referenced before assignment
    
    
    opened by Weiji-a 4
  • KeyError: 'GRAPH_TOOL_DIR'

    KeyError: 'GRAPH_TOOL_DIR'

    i have the following error, iยดm using python 3.6.


    KeyError Traceback (most recent call last) in () 1 from peartree.graph_tool import nx_to_gt 2 ----> 3 gtG = nx_to_gt(G.copy())

    ~/anaconda3/lib/python3.6/site-packages/peartree/graph_tool.py in nx_to_gt(nxG) 103 """ 104 # First, attempt to import graph-tool --> 105 gt = _import_graph_tool() 106 107 # Phase 0: Create a directed or undirected graph-tool Graph

    ~/anaconda3/lib/python3.6/site-packages/peartree/graph_tool.py in _import_graph_tool() 19 # If we fail to import it the first time, check to see if it 20 # has been downloaded in its default apt-get install directory ---> 21 sys.path.append(os.environ['GRAPH_TOOL_DIR']) 22 23 # Now retry with the new system path appended

    ~/anaconda3/lib/python3.6/os.py in getitem(self, key) 667 except KeyError: 668 # raise KeyError with the original key value --> 669 raise KeyError(key) from None 670 return self.decodevalue(value) 671

    KeyError: 'GRAPH_TOOL_DIR'

    opened by patsotoe 4
  • Compatibility issues peartree 0.6.0 - partridge 1.0.0

    Compatibility issues peartree 0.6.0 - partridge 1.0.0

    I believe peartree 0.6.0 and partridge 1.0.0 are incompatible, although it seems to import correctly with partridge 0.11.0. The solution is to either include an explicit number reference to the partridge library on install, or identify the problem.

    C:\WBG\anaconda3\envs\GOSTnet\lib\site-packages\peartree_init_.py in 
    
    from peartree.version import version # noqa: F401
         from peartree.paths import (
    load_feed_as_graph,
    get_representative_feed,
    
    C:\WBG\anaconda3\envs\GOSTnet\lib\site-packages\peartree\paths.py in 
    import partridge as ptg
         from .graph import (generate_empty_md_graph, generate_summary_graph_elements,
    make_synthetic_system_network, populate_graph)
    from .synthetic import SyntheticTransitNetwork
    
    C:\WBG\anaconda3\envs\GOSTnet\lib\site-packages\peartree\graph.py in 
    from .settings import WGS84
        from .summarizer import (generate_edge_and_wait_values,
    generate_summary_edge_costs, generate_summary_wait_times)
    
    C:\WBG\anaconda3\envs\GOSTnet\lib\site-packages\peartree\summarizer.py in 
    def generate_edge_and_wait_values(
        feed: ptg.feed,
        target_time_start: int,
        target_time_end: int,
    
    AttributeError: module 'partridge' has no attribute 'feed'
    
    bug good first issue 
    opened by bpstewar 4
  • Syntax error in parallel.py when importing peartree

    Syntax error in parallel.py when importing peartree

    Hi,

    I have this kind of error after using import peartree as pt

      File "C:\anaconda2\lib\site-packages\peartree\parallel.py", line 18
        target_time_start: int,
                         ^
    SyntaxError: invalid syntax
    

    Looks like some very basic problem, but I'm not very well in python :)

    opened by doman84 4
  • [performance] Trim stop_times before stop time interpolation

    [performance] Trim stop_times before stop time interpolation

    Stop time interpolation works on the entire stop_times df, majority of which will be tossed later based on given requested time range.

    Trimming down stop_times before passing it to the stop time interpolation step increases performance by a huge amount.

    Here are some evidence of the performance gain on the pt.paths.generate_summary_graph_elements step:

    gtfs id | current version | with trimming --|--|-- f-9q9-bart | 9.0s, 97 edges, 50 stops | 3.8s, 97 edges, 50 stops f-9q9-actransit | 132.0s, 5670 edges, 5050 stops | 59.8s, 5670 edges, 5050 stops f-9q8y-sfmta | 131.3s, 3806 edges, 3409 stops | 66.7s, 3806 edges, 3409 stops f-9qb-goldengatetransit | 10.6s, 519 edges, 473 stops | 7.5s, 519 edges, 473 stops f-9qc-fairfield~ca~us | 5.0s, 280 edges, 245 stops | 3.1s, 280 edges, 245 stops f-9qc0-soltrans~ca~us | 6.6s, 475 edges, 408 stops | 4.3s, 475 edges, 408 stops f-9qc-westcat~ca~us | 6.2s, 263 edges, 220 stops | 3.6s, 263 edges, 220 stops f-9-amtrak*** | 14.5s, 306 edges, 260 stops | 12.0s, 306 edges, 260 stops

    opened by yiyange 4
  • iteritems -> items: Fixing terminal spam

    iteritems -> items: Fixing terminal spam

    The library generates the following error, spamming my terminal:

    /home/user/.local/lib/python3.10/site-packages/peartree/graph.py:197: FutureWarning: iteritems is deprecated and will be removed in a future version. Use .items instead.
    

    This PR fixes this.

    opened by gutjuri 0
  • Fails to run generate_plot because of axis order changes needed

    Fails to run generate_plot because of axis order changes needed

    There is a new ordering for axis in pyproj that requires +init=<auth>:<auth_code> to be replaced with <auth>:<auth_code>

    Reference: https://pyproj4.github.io/pyproj/stable/gotchas.html#axis-order-changes-in-proj

    Screen Shot 2021-10-31 at 12 40 48 PM

    I was planning on using this library for something but it keeps giving me errors so I will try looking for others

    opened by mSitkovets 0
  • option to add an attribute to graph edges that represents the number of trips that pass through an edge

    option to add an attribute to graph edges that represents the number of trips that pass through an edge

    I would like to have the option to add an attribute to graph edges that represents the number of trips that pass through an edge. This would be good for inspecting my GTFS data. I am making a pull request (#164) that adds this feature

    opened by d3netxer 0
  • Coalesce non-GTFS network

    Coalesce non-GTFS network

    Hello,

    When I try to use the coalesce function on a path network from OSM the following error is raised:

    KeyError                                  Traceback (most recent call last)
    c:\Users\arqui\Documents\Repositorios\Identifying urban zones with spectral clustering\coalesse_poa.py in 
          81     # network_type='walk'
          82 )
    ----> 83 Gc = pt.toolkit.coalesce(G, 400)
    
    ~\anaconda3\envs\ox\lib\site-packages\peartree\toolkit.py in coalesce(G_orig, resolution, edge_summary_method, boarding_cost_summary_method)
        216     # such that we won't generate isolated nodes that become disconnected
        217     # from key coalesced nodes (because too many intermediary nodes)
    --> 218     G = simplify_graph(G)
        219 
        220     # Extract all x, y values
    
    ~\anaconda3\envs\ox\lib\site-packages\peartree\toolkit.py in simplify_graph(G_orig)
        582         # If the path is not all one mode of travel, skip the
        583         # proposed simplification
    --> 584         if not _path_has_consistent_mode_type(G, path):
        585             continue
        586 
    
    ~\anaconda3\envs\ox\lib\site-packages\peartree\toolkit.py in _path_has_consistent_mode_type(G, path)
        364         for i in range(edge_count):
        365             edge = G.edges[u, v, i]
    --> 366             path_modes.append(edge['mode'])
        367     path_clear = all(x == path_modes[0] for x in path_modes)
        368     return path_clear
    
    KeyError: 'mode'
    

    Peartree version: 0.6.3 osmnx verson: 0.16.1

    It's possible to use this function on a network without GTFS information?

    opened by Ar-Kan 0
  • Multimodal graph linking not working?

    Multimodal graph linking not working?

    Hi again @kuanb,

    I continued digging around (see #124) and tested using the existing_graph -parameter to link walking and PT graphs together. I found that the stops around transit areas are connected together, but edges that would link stops to road network does not seem to work (as in the example below). Is this expected behavior?

    image

    The code that I used to produce the graph is:

    G = pt.load_feed_as_graph(feed, start, end, 
                                     walk_speed_kmph=walk_speed,
                                     impute_walk_transfers=False,
                                     use_multiprocessing=True,
                                     existing_graph=walk_graph)
    
    bug question 
    opened by HTenkanen 2
Releases(0.6.4)
  • 0.6.4(Jan 15, 2021)

    This release just addresses 2 reported issues:

    • OSMnx API had changed so the plotter was broken
    • There was a warning being emitted when using a mask operation in one of the graph analysis workflows
    Source code(tar.gz)
    Source code(zip)
  • 0.6.3(May 27, 2020)

    • Housekeeping upgrades for pandas, numpy, scipy
    • New attributes on nodes (modes at node as list)
    • Allow custom wait time as a parameter
    • Logger on coalesce function
    Source code(tar.gz)
    Source code(zip)
  • 0.6.2(Jul 15, 2019)

    • Reduce processed trip selection to only those within service times parameters (https://github.com/kuanb/peartree/commit/85daf756885b9e2afb87b98b72b35a01876d3c5c)
    • Wait time estimation ignores overweighting of zero values (https://github.com/kuanb/peartree/commit/e9b038f7b1fe3e6e1a60895841a00a076b441d5c)
    • Wait time estimation can account for service time start and end parameters (https://github.com/kuanb/peartree/commit/a9ef0bd4d13796ead921d9d575834e5fe6fa9e95)
    • Safer direction id handling (https://github.com/kuanb/peartree/commit/0c5073d8b62a49ea299e8e2c2df1369fc4dcb3ea)
    • More careful testing around single stop/arrival stop-schedule pairs (https://github.com/kuanb/peartree/commit/fbd32f1d971558f7f32530c99d43e7891b185b00)

    Note: Also included were the two changes included in v0.6.1 which failed to get a release on Github. Updates pertinent to that version are the following:

    • Auto detection of transfer points when ingesting custom transit line transitJSON
    • Pinning partridge dependency to >= 1.0.0 with new Feed class
    Source code(tar.gz)
    Source code(zip)
  • 0.6.0(Nov 1, 2018)

    • Update partridge dependency
    • Improved Docker container creation (support for graph-tool)
    • graph-tool export feature
    • Class-based transitJSON validation
    • Consolidate OSMnx dependency
    • Resolve CRS reset bug
    • Significant increase in documentation for library methods
    Source code(tar.gz)
    Source code(zip)
  • 0.5.1(Jul 28, 2018)

    • Handle when only on trip exists within the target time frame
    • Avoid errors related to no valid wait times being able to be parsed (due to single trip)
    Source code(tar.gz)
    Source code(zip)
  • 0.5.0(Jul 16, 2018)

    • Reduce stop times calculations within route processing through timeframe trimming
    • Remove append operations on pandas DataFrames inside RouteProcessor
    • Overall 2/3 reduction in run time, on average, to process a new GTFS feed
    • Resolve direction ids being NaN only some of the time by dealing with direction id on a per-route level
    • Parallelization of intermediary stop times imputation
    Source code(tar.gz)
    Source code(zip)
  • 0.4.8(Jul 9, 2018)

  • 0.4.2(Jun 5, 2018)

  • 0.4.1(May 31, 2018)

    • Custom stop coordinates for synthetic routes
    • Drop duplicate edges during simplify operation
    • Updates to Makefile scripts
    • Assorted refactoring
    Source code(tar.gz)
    Source code(zip)
  • 0.4.0(Apr 22, 2018)

    • Refactor map operation for multiprocessing pool
    • MultiDiGraph to DiGraph converter
    • Simplify graph method
    • Refactor of coalesce to deal with lost edges problem
    Source code(tar.gz)
    Source code(zip)
  • 0.3.0(Apr 1, 2018)

    • Parallelization of route segments processing
    • Fix log
    • Coalescing function to sumarize complex graphs
    • Graph re-projection
    • Fix absent wait times during bus stop processing
    • Bidirectional synthetic networks
    Source code(tar.gz)
    Source code(zip)
  • 0.2.0(Mar 6, 2018)

    • Improved layering of multiple feeds correctly on top of one another
    • Support synthetic new route addition, bidirectionality
    • Bug fixes: directionality, better connector edges, node id naming, refactor of edge generators
    Source code(tar.gz)
    Source code(zip)
  • v0.1.2(Nov 24, 2017)

  • v0.1.0(Nov 21, 2017)

Owner
Kuan Butts
@mapbox Prev @CalthorpeAnalytics, @codeforamerica, @microsoftny, @mit, @urbanlaunchpad.
Kuan Butts
A set of utility functions for working with GeoJSON annotations in Kaibu

kaibu-utils A set of utility functions for working with Kaibu. Create a new repository Create a new repository and select imjoy-team/imjoy-python-temp

ImJoy Team 0 Dec 12, 2021
Search and download Copernicus Sentinel satellite images

sentinelsat Sentinelsat makes searching, downloading and retrieving the metadata of Sentinel satellite images from the Copernicus Open Access Hub easy

837 Dec 28, 2022
Raster processing benchmarks for Python and R packages

Raster processing benchmarks This repository contains a collection of raster processing benchmarks for Python and R packages. The tests cover the most

Krzysztof Dyba 13 Oct 24, 2022
FDTD simulator that generates s-parameters from OFF geometry files using a GPU

Emport Overview This repo provides a FDTD (Finite Differences Time Domain) simulator called emport for solving RF circuits. Emport outputs its simulat

4 Dec 15, 2022
An API built to format given addresses using Python and Flask.

An API built to format given addresses using Python and Flask. About The API returns properly formatted data, i.e. removing duplicate fields, distingu

1 Feb 27, 2022
Computer Vision in Python

Mahotas Python Computer Vision Library Mahotas is a library of fast computer vision algorithms (all implemented in C++ for speed) operating over numpy

Luis Pedro Coelho 792 Dec 20, 2022
Asynchronous Client for the worlds fastest in-memory geo-database Tile38

This is an asynchonous Python client for Tile38 that allows for fast and easy interaction with the worlds fastest in-memory geodatabase Tile38.

Ben 53 Dec 29, 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
Evaluation of file formats in the context of geo-referenced 3D geometries.

Geo-referenced Geometry File Formats Classic geometry file formats as .obj, .off, .ply, .stl or .dae do not support the utilization of coordinate syst

Advanced Information Systems and Technology 11 Mar 02, 2022
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
Geocoding library for Python.

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

geopy 3.8k Dec 30, 2022
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
Extract GoPro highlights and GPMF data.

Python script that parses the gpmd stream for GOPRO moov track (MP4) and extract the GPS info into a GPX (and kml) file.

Chris Auron 2 May 13, 2022
Python interface to PROJ (cartographic projections and coordinate transformations library)

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

832 Dec 31, 2022
๐ŸŒ Local tile server for viewing geospatial raster files with ipyleaflet

๐ŸŒ Local Tile Server for Geospatial Rasters Need to visualize a rather large raster (gigabytes) you have locally? This is for you. A Flask application

Bane Sullivan 192 Jan 04, 2023
Download and process satellite imagery in Python using Sentinel Hub services.

Description The sentinelhub Python package allows users to make OGC (WMS and WCS) web requests to download and process satellite images within your Py

Sentinel Hub 659 Dec 23, 2022
Get-countries-info - A python code that fetches data of any country

Country-info A python code getting countries information including country's map

CODE 2 Feb 21, 2022
Digital Earth Australia notebooks and tools repository

Repository for Digital Earth Australia Jupyter Notebooks: tools and workflows for geospatial analysis with Open Data Cube and xarray

Geoscience Australia 335 Dec 24, 2022
๐ŸŒ Local tile server for viewing geospatial raster files with ipyleaflet or folium

๐ŸŒ Local Tile Server for Geospatial Rasters Need to visualize a rather large (gigabytes) raster you have locally? This is for you. A Flask application

Bane Sullivan 192 Jan 04, 2023
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