A toolbox for processing earth observation data with Python.

Related tags

Geolocationeo-box
Overview

Build Status Docs Status

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, the following subpackages are available:

  • eobox.sampledata contains small sample data that can be used for playing around and testing.

  • eobox.raster contains raster processing tools for

    • extracting raster values at given (by vector data) locations,

    • window- / chunk-wise processing of multiple single layer raster files that do not fit in memory, e.g.

      • calculating virtual time series and temporal statistical metrics from all cloud-free observations,

      • predicting a machine learning model,

      • custom processing functions.

  • eobox.vector contains vector processing tools for

    • clean convertion of polygons to lines and

    • distance-to-polygon border calculation.

  • eobox.ml contains machine learning related tools, e.g.

    • plotting a confusion matrix including with precision and recall

    • extended predict function which returns prediction, confidences, and probabilities.

Installation

The package requires Python 3. It can be installed with the following command:

pip install eobox

The environment.yaml in the repository can be used to setup a conda environment with all dependencies required for using and building the package and running the tests and documentation code.

conda env create --name=eobox --file=environment.yml
pip install eobox

Documentation

The package documentation can be found at readthedocs.

Comments
  • Module convert_df_to_geodf not found

    Module convert_df_to_geodf not found

    hi @benmack. I am having an issue (I am using eobox version 0.3.1.). Python version 3.6.10. I can import fine eobox.

    import convert_df_to_geodf

    Error

    ---------------------------------------------------------------------------
    ModuleNotFoundError                       Traceback (most recent call last)
    <ipython-input-22-bb79235e32c0> in <module>
    ----> 1 import convert_df_to_geodf
    
    ModuleNotFoundError: No module named 'convert_df_to_geodf'
    

    Thank you!

    opened by elsadg 2
  • Change the internal package structure back to standard

    Change the internal package structure back to standard

    from v0.0.3 onwards the package will have a simple structure again, i.e. it will not be possible to install the sub-pacakges independently. I started to set it up like this to learn and understand, however it makes it more difficult to extend and maintain the package and since it is rather a playground and learning package the easier way seems better to me now.

    So Up to v0.0.2 you read this in the READMY:

    The structure of this project has been created following the eo-learn project of Sinergise. For a package containing diverse functionalities as it is envisaged for this package as well, it is convincing to subdivide the pacakge into "several subpackages according to different functionalities and external package dependencies".

    But that will change.

    enhancement 
    opened by benmack 1
  • error when running extraction

    error when running extraction

    Hello, I want to want to do pixel-based processing with eo-box. I am following the blog post in https://benmack.github.io/blog/2020-01-06-1_federsee-blog-series_part-3_clf/ to do so. I have one tif image and a shapefile with some polygons (same projection). The error I get when I run the extraction is the following:

    CalledProcessError: Command 'C:\DIR\lib\site-packages\GDAL-3.1.4-py3.7-win-amd64.egg-info\scripts\gdal_proximity.py C:\DIR\TEMPDIR_aux_vector_dist2pb_5yp1nyvy\interim_sample_vector_dataset_lines.tif C:\DIR\aux_vector_dist2pb.tif -ot Float32 -distunits PIXEL -values 1 -maxdist 255' returned non-zero exit status 1.

    Any idea what might be wrong?

    opened by Sananvalinta 1
  • Create docker image to handle non-root users

    Create docker image to handle non-root users

    Build a docker image for running jupyterlab in a container with a non-root user, e.g.

    docker run -u $(id -u $USER):$(id -g $USER) -v ${PWD}:/home/eoboxer/lucas-hls -p 8888:8888 benmack/eobox:latest

    This is currently not possible and throws an exeption (see below).

    The problem is that on the one hand we need a geospatial setup on the other hand we need a proper jupyter setup. Both can be tricky. Options for base images:

    • https://github.com/OSGeo/gdal - relatively slim geo option
    • https://jupyter-docker-stacks.readthedocs.io/en/latest/ - slim jupyter options
    • https://github.com/SCiO-systems/cgspatial-notebook - very large option that might contain both

    Current exception

    docker run -u $(id -u $USER):$(id -g $USER) -v ${PWD}:/home/eoboxer/lucas-hls -p 8888:8888 benmack/eobox:latest
    Traceback (most recent call last):
      File "/usr/local/lib/python3.8/dist-packages/traitlets/traitlets.py", line 528, in get
        value = obj._trait_values[self.name]
    KeyError: 'runtime_dir'
    
    During handling of the above exception, another exception occurred:
    
    Traceback (most recent call last):
      File "/usr/local/bin/jupyter-notebook", line 8, in <module>
        sys.exit(main())
      File "/usr/local/lib/python3.8/dist-packages/jupyter_core/application.py", line 270, in launch_instance
        return super(JupyterApp, cls).launch_instance(argv=argv, **kwargs)
      File "/usr/local/lib/python3.8/dist-packages/traitlets/config/application.py", line 663, in launch_instance
        app.initialize(argv)
      File "<decorator-gen-7>", line 2, in initialize
      File "/usr/local/lib/python3.8/dist-packages/traitlets/config/application.py", line 87, in catch_config_error
        return method(app, *args, **kwargs)
      File "/usr/local/lib/python3.8/dist-packages/notebook/notebookapp.py", line 1766, in initialize
        self.init_configurables()
      File "/usr/local/lib/python3.8/dist-packages/notebook/notebookapp.py", line 1380, in init_configurables
        connection_dir=self.runtime_dir,
      File "/usr/local/lib/python3.8/dist-packages/traitlets/traitlets.py", line 556, in __get__
        return self.get(obj, cls)
      File "/usr/local/lib/python3.8/dist-packages/traitlets/traitlets.py", line 535, in get
        value = self._validate(obj, dynamic_default())
      File "/usr/local/lib/python3.8/dist-packages/jupyter_core/application.py", line 100, in _runtime_dir_default
        ensure_dir_exists(rd, mode=0o700)
      File "/usr/local/lib/python3.8/dist-packages/jupyter_core/utils/__init__.py", line 13, in ensure_dir_exists
        os.makedirs(path, mode=mode)
      File "/usr/lib/python3.8/os.py", line 213, in makedirs
        makedirs(head, exist_ok=exist_ok)
      File "/usr/lib/python3.8/os.py", line 213, in makedirs
        makedirs(head, exist_ok=exist_ok)
      File "/usr/lib/python3.8/os.py", line 213, in makedirs
        makedirs(head, exist_ok=exist_ok)
      File "/usr/lib/python3.8/os.py", line 223, in makedirs
        mkdir(name, mode)
    PermissionError: [Errno 13] Permission denied: '/.local'
    
    opened by benmack 0
  • Extraction: store user-given numeric columns from vector file as pixel level .npy file

    Extraction: store user-given numeric columns from vector file as pixel level .npy file

    This makes sense since at the moment we only store the polygon ID but usually we want to frequently work with at least the class ID which we have stored in the vector file.

    At the moment the user has to join that data on the pixel level by himself. But we could do that in the extraction function or provide as a separate function which works on top of an existing extraction folder.

    enhancement 
    opened by benmack 0
  • Implement EOCubeSceneCollection method for statistical metrics

    Implement EOCubeSceneCollection method for statistical metrics

    Practically we only need to wrap what ther is already in ./examples/raster/cube_custom_functions_with_eocubescenecollection.ipynb in a method like EOCubeSceneCollection.create_virtual_time_series

    enhancement 
    opened by benmack 0
  • Create Intro to EOCubeSceneCollection class

    Create Intro to EOCubeSceneCollection class

    See what parts are useful of the following ones:

    • ./examples/raster/cube_calculate_virtual_time_series_with_eocube.ipynb

    • ./examples/raster/cube_eocubescenecollection_and_virtual_time_series.ipynb

    documentation 
    opened by benmack 0
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
Xarray backend to Copernicus Sentinel-1 satellite data products

xarray-sentinel WARNING: this product is a "technology preview" / pre-Alpha Xarray backend to explore and load Copernicus Sentinel-1 satellite data pr

B-Open 191 Dec 15, 2022
Tile Map Service and OGC Tiles API for QGIS Server

Tiles API Add tiles API to QGIS Server Tiles Map Service API OGC Tiles API Tile Map Service API - TMS The TMS API provides these URLs: /tms/? to get i

3Liz 6 Dec 01, 2021
Open GeoJSON data on geojson.io

geojsonio.py Open GeoJSON data on geojson.io from Python. geojsonio.py also contains a command line utility that is a Python port of geojsonio-cli. Us

Jacob Wasserman 114 Dec 21, 2022
Zora is a python program that searches for GeoLocation info for given CIDR networks , with options to search with API or without API

Zora Zora is a python program that searches for GeoLocation info for given CIDR networks , with options to search with API or without API Installing a

z3r0day 1 Oct 26, 2021
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
Python tools for geographic data

GeoPandas Python tools for geographic data Introduction GeoPandas is a project to add support for geographic data to pandas objects. It currently impl

GeoPandas 3.5k Jan 03, 2023
A public data repository for datasets created from TransLink GTFS data.

TransLink Spatial Data What: TransLink is the statutory public transit authority for the Metro Vancouver region. This GitHub repository is a collectio

Henry Tang 3 Jan 14, 2022
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
Build, deploy and extract satellite public constellations with one command line.

SatExtractor Build, deploy and extract satellite public constellations with one command line. Table of Contents About The Project Getting Started Stru

Frontier Development Lab 70 Nov 18, 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
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
LEOGPS - Satellite Navigation with GPS on Python!

LEOGPS is an open-source Python software which performs relative satellite navigation between two formation flying satellites, with the objective of high accuracy relative positioning. Specifically,

Samuel Low 50 Dec 13, 2022
Python module to access the OpenCage geocoding API

OpenCage Geocoding Module for Python A Python module to access the OpenCage Geocoder. Build Status / Code Quality / etc Usage Supports Python 3.6 or n

OpenCage GmbH 57 Nov 01, 2022
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
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
Python script to locate mobile number

Python script to locate mobile number How to use this script run the command to install the required libraries pip install -r requirements.txt run the

Shekhar Gupta 8 Oct 10, 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
glTF to 3d Tiles Converter. Convert glTF model to Glb, b3dm or 3d tiles format.

gltf-to-3d-tiles glTF to 3d Tiles Converter. Convert glTF model to Glb, b3dm or 3d tiles format. Usage λ python main.py --help Usage: main.py [OPTION

58 Dec 27, 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