Satellite imagery for dummies.

Overview

felicette

Satellite imagery for dummies.

What can you do with this tool?

TL;DR: Generate JPEG earth imagery from coordinates/location name with publicly available satellite data.

This tool is for a sentient being who wants to view high-res satellite imagery of earth, without digging through all the nitty gritty geospatial details of it. So if this is your first time trying to explore how parts of the Earth look from space, you're at the right place.

NB: felicette at the present state searches for cloud-cover < 10%, and doesn't constrain results on the basis of dates.

One can see Product Roadmap for upcoming features.

Installation

felicette depends on GDAL. But the following steps cover GDAL's installation as well.

rio-color uses numpy headers to setup, thus installing numpy and GDAL=={ogrinfo --version} would be sufficient before installing felicette.

Debian

$ sudo add-apt-repository ppa:ubuntugis/ppa
$ sudo apt-get update
$ sudo apt-get install python-numpy gdal-bin libgdal-dev
$ gdal-config --version
 <version-number>
 
* activate virtual environment *

$ pip install numpy GDAL==<version-number>
$ pip install felicette

MacOS

$ brew install gdal
$ gdal-config --version
 <version-number>

* activate virtual environment *

$ pip install numpy GDAL==<version-number>
$ pip install felicette

Docker

As pointed out here, the following docker image works and is volume-mapped to the present working directory.

$ docker run -it -v "$PWD"/felicette-data:/root/felicette-data milhouse1337/felicette felicette -l "Montreal"

Thanks @milhouse1337 for the docker-image.

"Why you no make a section for Windows?" :|

rio-color, one of the felicette's dependencies isn't available on conda ecosystem yet. Here's the link to a small discussion on an installation-issue. This section would be updated when there is a stable version of felicette for Windows.

Felicette has plans to build in-house RGB image enhancement algorithms or use imagemagick /[similar tools on conda-forge] for a Windows release, at least until rio-color is available on conda-forge/conda.


Usage

To use it:

$ felicette --help
Usage: felicette [OPTIONS]

  Satellite imagery for dummies.

Options:
  -c, --coordinates FLOAT...  Coordinates in (lon, lat) format. This overrides
                              -l command

  -l, --location-name TEXT    Location name in string format
  -pan, --pan-enhancement     Enhance image with panchromatic band
  --no-preview                Skip previewing of pre-processed low resolution RGB
                              satellite image.

  -v, --vegetation            Show Color Infrared image to highlight
                              vegetation

  -V, --version               Show the version number and quit
  -p, --product TEXT          Product name 'landsat'/'sentinel'
  --help                      Show this message and exit.

Felicette can download and process Landsat images taking the location's input as (lon, lat) or the location name. They can be used in the following way.

With location name:

$ felicette -l "Kanyakumari"

With coordinates:

$ felicette -c 77.5385 8.0883

--product / -p option is used to specify which data-product is used to generate images i.e Sentinel or Landsat. By default, Landsat-8 data will be used to generate images.

$ felicette -l "Kanyakumari" -p "sentinel"

NB: *To use sentinel data source, one has to set AWS_ACCESS_KEY_ID and AWS_SECRET_ACCESS_KEY (To generate a pair, go to AWS console -> My Security Credentials -> Access keys). This is because Sentinel-2 data is in a Requester Pays bucket.

-pan option uses the panchromatic band to enhance image's resolution to 15 meters, contrary to resolution of RGB bands(30 meters) if Landsat product is being used. Felicette doesn't support any panchromatic enhancements for Sentinel-2 data which already have a resolution of 10m. To get a better Landsat image using felicette use:

$ felicette -pan -c 77.5385 8.0883

--no-preview option doesn't download image to preview, and directly downloads and processes original data. Please use this if you're sure of the location/quality of the images to be generated by felicette with the arguments provided to it.

$ felicette --no-preview -p -c 77.5385 8.0883

-v option generates a CIR image to highlight vegetation in 'red' color. Note that, '-p' option isn't taken into consideration while generating CIR imagery in felicette.

$ felicette  -v -l "Kanyakumari"

Latest release

0.1.12


Feli.. what?

FΓ©licette

FΓ©licette was the first cat launched into space, on 18 October 1963. Even though she landed back on earth safely, FΓ©licette was euthanized two months after the launch so that scientists could perform a necropsy to examine her brain. She was the only cat to have survived spaceflight. Here's a footage of the mission from the archives.

When you get a satellite imagery using this tool, imagine FΓ©licette took the picture for you :))


Preview and examples

Coastal Odisha

Here are some more sample images generated by felicette.

Here is a link to the original images generated with RGB, CIR options.

Following is a recording of the terminal session recording usage of felicette. asciicast


Contributing

felicette is open-source and welcomes all kinds of contributions, be it documentation/wiki pages/bug-fixes/development of new features. A small contributors' guide is available here.

Comments
  • Feature request: fail early if there is no satellite imagery for requested area

    Feature request: fail early if there is no satellite imagery for requested area

    For some locations, images for all bands are entirely black (they still weigh more than 30 MB each though). I assume this is because of unavailable satellite imagery. This could be detected before resources are spent on color-correcting and sharpeningπŸ€”

    opened by strogonoff 6
  • No module named 'osgeo' on Debian 10

    No module named 'osgeo' on Debian 10

    (env) [email protected]:~/GIS_dumps$ felicette -c "51.311454,4.867640" 
    Traceback (most recent call last):
      File "/home/elmos/.local/bin/felicette", line 5, in <module>
        from felicette.cli import main
      File "/home/elmos/.local/lib/python3.6/site-packages/felicette/cli.py", line 13, in <module>
        from felicette.sat_processor import process_landsat_data
      File "/home/elmos/.local/lib/python3.6/site-packages/felicette/sat_processor.py", line 9, in <module>
        from felicette.utils.gdal_pansharpen import gdal_pansharpen
      File "/home/elmos/.local/lib/python3.6/site-packages/felicette/utils/gdal_pansharpen.py", line 35, in <module>
        from osgeo import gdal
    ModuleNotFoundError: No module named 'osgeo'
    

    I followed installation instructions and made sure I'm using python3. Also tried pip3 install -r requirements.txt. Also, tried updating pip in the virtual environment via https://bootstrap.pypa.io/get-pip.py .. same same Any other suggestions? thanks

    opened by naim5am 5
  • Failed on partial data (I think)

    Failed on partial data (I think)

    Sorry for the rapid fire issues!

    I wanted to preview my images, and I thought that -pre was -p, so I started a query:

    $ felicette -p -c 34.6064 -70.345
    βœ— required data doesn't exist, downloading blue band
    b2:  51%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Ž                                                             | 28.9M/56.2M [00:08<00:16, 1.73MB/s]b2:  52%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–‹                                                             | 29.1M/56.2M [00:08<00:07, 3.64MB/s]
    
    Aborted!
    

    When I looked at the docs and realized I wanted -pre instead of -p, I aborted the felicette task with ^c and ran it again, but this time it thought it had the full blue band and didn't download it, then failed on decoding a partial tiff:

    $ felicette -pre -c 34.6064 -70.345
    βœ— preview data doesn't exist, downloading image
    preview: 100%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ| 162k/162k [00:00<00:00, 518kB/s]
    Preview image saved at:
    /Users/llimllib/felicette-data/LC81511092019265/LC81511092019265-preview.jpg
    Are you sure you want to see an enhanced version of the image at the path shown above? [Y/n]
     βœ“  required data exists for blue band
    βœ— required data doesn't exist, downloading green band
    b3: 100%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ| 57.7M/57.7M [00:23<00:00, 2.56MB/s]
    βœ— required data doesn't exist, downloading red band
    b4: 100%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ| 59.3M/59.3M [00:15<00:00, 4.14MB/s]
    ERROR 1: TIFFFillTile:Read error at row 7168, col 7168, tile 159; got 281659 bytes, expected 310764
    ERROR 1: TIFFReadEncodedTile() failed.
    ERROR 1: /Users/llimllib/felicette-data/LC81511092019265/LC81511092019265-b2.tiff, band 1: IReadBlock failed at X offset 15, Y offset 8: TIFFReadEncodedTile() failed.
    Traceback (most recent call last):
      File "rasterio/_io.pyx", line 695, in rasterio._io.DatasetReaderBase._read
      File "rasterio/shim_rasterioex.pxi", line 142, in rasterio._shim.io_multi_band
      File "rasterio/_err.pyx", line 182, in rasterio._err.exc_wrap_int
    rasterio._err.CPLE_AppDefinedError: /Users/llimllib/felicette-data/LC81511092019265/LC81511092019265-b2.tiff, band 1: IReadBlock failed at X offset 15, Y offset 8: TIFFReadEncodedTile() failed.
    
    During handling of the above exception, another exception occurred:
    
    Traceback (most recent call last):
      File "/Users/llimllib/.pyenv/versions/3.8.5/bin/felicette", line 8, in <module>
        sys.exit(main())
      File "/Users/llimllib/.pyenv/versions/3.8.5/lib/python3.8/site-packages/click/core.py", line 829, in __call__
        return self.main(*args, **kwargs)
      File "/Users/llimllib/.pyenv/versions/3.8.5/lib/python3.8/site-packages/click/core.py", line 782, in main
        rv = self.invoke(ctx)
      File "/Users/llimllib/.pyenv/versions/3.8.5/lib/python3.8/site-packages/click/core.py", line 1066, in invoke
        return ctx.invoke(self.callback, **ctx.params)
      File "/Users/llimllib/.pyenv/versions/3.8.5/lib/python3.8/site-packages/click/core.py", line 610, in invoke
        return callback(*args, **kwargs)
      File "/Users/llimllib/.pyenv/versions/3.8.5/lib/python3.8/site-packages/felicette/cli.py", line 76, in main
        process_landsat_data(data_id, bands)
      File "/Users/llimllib/.pyenv/versions/3.8.5/lib/python3.8/site-packages/felicette/sat_processor.py", line 153, in process_landsat_data
        process_landsat_rgb(id, bands)
      File "/Users/llimllib/.pyenv/versions/3.8.5/lib/python3.8/site-packages/felicette/sat_processor.py", line 94, in process_landsat_rgb
        b = b2.read(1)
      File "rasterio/_io.pyx", line 359, in rasterio._io.DatasetReaderBase.read
      File "rasterio/_io.pyx", line 698, in rasterio._io.DatasetReaderBase._read
    rasterio.errors.RasterioIOError: Read or write failed. /Users/llimllib/felicette-data/LC81511092019265/LC81511092019265-b2.tiff, band 1: IReadBlock failed at X offset 15, Y offset 8: TIFFReadEncodedTile() failed.
    

    I hope these issue reports are helpful and not bothersome! Thank you for putting a cool tool out into the world, I appreciate it.

    edit: I would report the version but there's no felicette --version - you may want to add that!

    opened by llimllib 4
  • Fails to re-download data if there was a network error

    Fails to re-download data if there was a network error

    If any of the bands (blue, green or red) fails during the download, felicette doesn't re-download it. Rerunning the program again for the specific place shows the required data exists for the said band. But in reality it is an incomplete download. This throws an error

    rasterio.errors.RasterioIOError: Read or write failed. /home/mithun/felicette-data/LC81430542020100/LC81430542020100-b4.tiff, band 1: IReadBlock failed at X offset 1, Y offset 6: TIFFReadEncodedTile() failed.

    Current workaround is to delete the folder and run again.

    opened by mantleCurve 4
  • Flag -p generates error

    Flag -p generates error

    Using the -p flag to get even more eye-cany generates an error. I reveived this error during usage of the docker image. However I assume this is an error in the code.. Here is the output, first without the -p flag then with:

    [email protected]:/tmp/lm> docker run -it -v "$PWD"/felicette-data:/root/felicette-data milhouse1337/felicette felicette --no-preview -v -l Neede βœ— required data doesn't exist, downloading green band b3: 100%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ| 60.0M/60.0M [00:04<00:00, 13.8MB/s] βœ— required data doesn't exist, downloading red band b4: 100%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ| 62.0M/62.0M [00:04<00:00, 14.1MB/s] βœ— required data doesn't exist, downloading NIR band b5: 100%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ| 68.0M/68.0M [00:05<00:00, 13.8MB/s] Let's make our 🌍 imagery a bit more colorful for a human eye! Generated 🌍 images!πŸŽ‰ Please wait while I resize and crop the image :) GeoTIFF saved at: /root/felicette-data/LC08_L1TP_197024_20210305_20210312_01_T1/LC08_L1TP_197024_20210305_20210312_01_T1-vegetation.tiff JPEG image saved at: /root/felicette-data/LC08_L1TP_197024_20210305_20210312_01_T1/LC08_L1TP_197024_20210305_20210312_01_T1-vegetation.jpeg sh: 1: xdg-open: not found

    [email protected]:/tmp/lm> docker run -it -v "$PWD"/felicette-data:/root/felicette-data milhouse1337/felicette felicette --no-preview -p -v -l Neede Traceback (most recent call last): File "/usr/local/bin/felicette", line 8, in sys.exit(main()) File "/usr/local/lib/python3.7/dist-packages/click/core.py", line 829, in call return self.main(*args, **kwargs) File "/usr/local/lib/python3.7/dist-packages/click/core.py", line 782, in main rv = self.invoke(ctx) File "/usr/local/lib/python3.7/dist-packages/click/core.py", line 1066, in invoke return ctx.invoke(self.callback, **ctx.params) File "/usr/local/lib/python3.7/dist-packages/click/core.py", line 610, in invoke return callback(*args, **kwargs) File "/usr/local/lib/python3.7/dist-packages/felicette/cli.py", line 73, in main item = search_satellite_data(coordinates, 10, product=product) File "/usr/local/lib/python3.7/dist-packages/felicette/sat_downloader.py", line 53, in search_satellite_data search_items = search.items() File "/usr/local/lib/python3.7/dist-packages/satsearch/search.py", line 90, in items found = self.found(headers=headers) File "/usr/local/lib/python3.7/dist-packages/satsearch/search.py", line 62, in found results = self.query(url=url, headers=headers, **kwargs) File "/usr/local/lib/python3.7/dist-packages/satsearch/search.py", line 80, in query raise SatSearchError(response.text) satsearch.search.SatSearchError: index_not_found_exception [email protected]:/tmp/lm>

    Cheers, Arjan

    opened by arjantenhoopen 3
  • IndexError on failed reverse geocodes

    IndexError on failed reverse geocodes

    I live in Portland, Maine so if I search for Portland it almost always brings up Oregon. Therefore the first thing I did when downloading this was:

    $ felicette -l "Portland, ME"
    Traceback (most recent call last):
      File "/Users/llimllib/.pyenv/versions/3.8.5/bin/felicette", line 8, in <module>
        sys.exit(main())
      File "/Users/llimllib/.pyenv/versions/3.8.5/lib/python3.8/site-packages/click/core.py", line 829, in __call__
        return self.main(*args, **kwargs)
      File "/Users/llimllib/.pyenv/versions/3.8.5/lib/python3.8/site-packages/click/core.py", line 782, in main
        rv = self.invoke(ctx)
      File "/Users/llimllib/.pyenv/versions/3.8.5/lib/python3.8/site-packages/click/core.py", line 1066, in invoke
        return ctx.invoke(self.callback, **ctx.params)
      File "/Users/llimllib/.pyenv/versions/3.8.5/lib/python3.8/site-packages/click/core.py", line 610, in invoke
        return callback(*args, **kwargs)
      File "/Users/llimllib/.pyenv/versions/3.8.5/lib/python3.8/site-packages/felicette/cli.py", line 50, in main
        coordinates = geocoder_util(location_name)
      File "/Users/llimllib/.pyenv/versions/3.8.5/lib/python3.8/site-packages/felicette/utils/geo_utils.py", line 19, in geocoder_util
        return (float(r_json[0]["lon"]), float(r_json[0]["lat"]))
    IndexError: list index out of range
    

    I debugged into it a bit and nominatim returns empty results for Portland Maine and Portland, ME:

    $ curl 'https://nominatim.openstreetmap.org/search?city=Portland%20Maine&format=json'
    []
    $ curl 'https://nominatim.openstreetmap.org/search?city=Portland,%20ME&format=json'
    []
    

    It would be best if the reverse geocode worked, but also totally OK for felicette to print out an understandable error if the reverse geocode failed.

    opened by llimllib 3
  • 'earth-search-legacy.aws.element84.com' which cannot be resolved anymore

    'earth-search-legacy.aws.element84.com' which cannot be resolved anymore

    L.S. I can't get Felicette working anymore. It complains about 'earth-search-legacy.aws.element84.com' which cannot be resolved anymore. Can you fix it? I really like to use felicette.

    TIA, Arjan

    opened by arjantenhoopen 2
  • Bump pillow from 8.3.2 to 9.0.0

    Bump pillow from 8.3.2 to 9.0.0

    Bumps pillow from 8.3.2 to 9.0.0.

    Release notes

    Sourced from pillow's releases.

    9.0.0

    https://pillow.readthedocs.io/en/stable/releasenotes/9.0.0.html

    Changes

    ... (truncated)

    Changelog

    Sourced from pillow's changelog.

    9.0.0 (2022-01-02)

    • Restrict builtins for ImageMath.eval(). CVE-2022-22817 #5923 [radarhere]

    • Ensure JpegImagePlugin stops at the end of a truncated file #5921 [radarhere]

    • Fixed ImagePath.Path array handling. CVE-2022-22815, CVE-2022-22816 #5920 [radarhere]

    • Remove consecutive duplicate tiles that only differ by their offset #5919 [radarhere]

    • Improved I;16 operations on big endian #5901 [radarhere]

    • Limit quantized palette to number of colors #5879 [radarhere]

    • Fixed palette index for zeroed color in FASTOCTREE quantize #5869 [radarhere]

    • When saving RGBA to GIF, make use of first transparent palette entry #5859 [radarhere]

    • Pass SAMPLEFORMAT to libtiff #5848 [radarhere]

    • Added rounding when converting P and PA #5824 [radarhere]

    • Improved putdata() documentation and data handling #5910 [radarhere]

    • Exclude carriage return in PDF regex to help prevent ReDoS #5912 [hugovk]

    • Fixed freeing pointer in ImageDraw.Outline.transform #5909 [radarhere]

    • Added ImageShow support for xdg-open #5897 [m-shinder, radarhere]

    • Support 16-bit grayscale ImageQt conversion #5856 [cmbruns, radarhere]

    • Convert subsequent GIF frames to RGB or RGBA #5857 [radarhere]

    ... (truncated)

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies 
    opened by dependabot[bot] 1
  • Bump pillow from 8.1.1 to 8.2.0

    Bump pillow from 8.1.1 to 8.2.0

    Bumps pillow from 8.1.1 to 8.2.0.

    Release notes

    Sourced from pillow's releases.

    8.2.0

    https://pillow.readthedocs.io/en/stable/releasenotes/8.2.0.html

    Changes

    Dependencies

    Deprecations

    ... (truncated)

    Changelog

    Sourced from pillow's changelog.

    8.2.0 (2021-04-01)

    • Added getxmp() method #5144 [UrielMaD, radarhere]

    • Add ImageShow support for GraphicsMagick #5349 [latosha-maltba, radarhere]

    • Do not load transparent pixels from subsequent GIF frames #5333 [zewt, radarhere]

    • Use LZW encoding when saving GIF images #5291 [raygard]

    • Set all transparent colors to be equal in quantize() #5282 [radarhere]

    • Allow PixelAccess to use Python int when parsing x and y #5206 [radarhere]

    • Removed Image._MODEINFO #5316 [radarhere]

    • Add preserve_tone option to autocontrast #5350 [elejke, radarhere]

    • Fixed linear_gradient and radial_gradient I and F modes #5274 [radarhere]

    • Add support for reading TIFFs with PlanarConfiguration=2 #5364 [kkopachev, wiredfool, nulano]

    • Deprecated categories #5351 [radarhere]

    • Do not premultiply alpha when resizing with Image.NEAREST resampling #5304 [nulano]

    • Dynamically link FriBiDi instead of Raqm #5062 [nulano]

    • Allow fewer PNG palette entries than the bit depth maximum when saving #5330 [radarhere]

    • Use duration from info dictionary when saving WebP #5338 [radarhere]

    • Stop flattening EXIF IFD into getexif() #4947 [radarhere, kkopachev]

    ... (truncated)

    Commits
    • e0e353c 8.2.0 version bump
    • ee635be Merge pull request #5377 from hugovk/security-and-release-notes
    • 694c84f Fix typo [ci skip]
    • 8febdad Review, typos and lint
    • fea4196 Reorder, roughly alphabetic
    • 496245a Fix BLP DOS -- CVE-2021-28678
    • 22e9bee Fix DOS in PSDImagePlugin -- CVE-2021-28675
    • ba65f0b Fix Memory DOS in ImageFont
    • bb6c11f Fix FLI DOS -- CVE-2021-28676
    • 5a5e6db Fix EPS DOS on _open -- CVE-2021-28677
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies 
    opened by dependabot[bot] 1
  • Unable to install on macOS: 'numpy/arrayobject.h' file not found

    Unable to install on macOS: 'numpy/arrayobject.h' file not found

    Installation fails for rio-color. Actually, this may not belong to felicette’s repository, since installing rio-color alone results in the same error.

    Getting error:

        rio_color/colorspace.c:583:10: fatal error: 'numpy/arrayobject.h' file not found
    

    Full log, from a freshly created virtual environment (GDAL also installed with brew system-wide per instructions):

    bash-5.0:felicette:felicette$ source bin/activate
    (felicette) bash-5.0:felicette$ python --version
    Python 3.8.5
    (felicette) bash-5.0:felicette$ which python
    /Users/tonys/Developer/felicette/bin/python
    (felicette) bash-5.0:felicette$ 
    (felicette) bash-5.0:felicette$ which pi
    (felicette) bash-5.0:felicette$ which pip
    /Users/tonys/Developer/felicette/bin/pip
    (felicette) bash-5.0:felicette$ gdal-config --version
    3.1.2
    (felicette) bash-5.0:felicette$ pip install numpy GDAL==3.1.2
    Collecting numpy
      Downloading numpy-1.19.1-cp38-cp38-macosx_10_9_x86_64.whl (15.3 MB)
         |β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ| 15.3 MB 2.7 MB/s 
    Collecting GDAL==3.1.2
      Downloading GDAL-3.1.2.tar.gz (593 kB)
         |β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ| 593 kB 3.1 MB/s 
    Building wheels for collected packages: GDAL
      Building wheel for GDAL (setup.py) ... done
      Created wheel for GDAL: filename=GDAL-3.1.2-cp38-cp38-macosx_10_15_x86_64.whl size=832103 sha256=4774963a7a77bc43cfb6b29dde62de2270f6227b9568601e9d8cf5932aba7151
      Stored in directory: /Users/tonys/Library/Caches/pip/wheels/8f/1d/48/b1adb343d1b157fb1be5511a81afdf195c505d11712e526e28
    Successfully built GDAL
    Installing collected packages: numpy, GDAL
    Successfully installed GDAL-3.1.2 numpy-1.19.1
    (felicette) bash-5.0:felicette$ pip install felicette
    Collecting felicette
      Using cached felicette-0.1.9-py2.py3-none-any.whl (25 kB)
    Collecting rich==3.3.2
      Using cached rich-3.3.2-py3-none-any.whl (137 kB)
    Collecting opencv-python==4.3.0.36
      Using cached opencv_python-4.3.0.36-cp38-cp38-macosx_10_9_x86_64.whl (52.6 MB)
    Collecting rio-color==1.0.0
      Using cached rio-color-1.0.0.tar.gz (71 kB)
    Collecting click==7.1.2
      Using cached click-7.1.2-py2.py3-none-any.whl (82 kB)
    Collecting tqdm==4.48.0
      Using cached tqdm-4.48.0-py2.py3-none-any.whl (67 kB)
    Collecting pillow==7.2.0
      Using cached Pillow-7.2.0-cp38-cp38-macosx_10_10_x86_64.whl (2.2 MB)
    Collecting requests==2.24.0
      Using cached requests-2.24.0-py2.py3-none-any.whl (61 kB)
    Processing /Users/tonys/Library/Caches/pip/wheels/d8/bc/05/19898a607218ae30f53e9eeefe20ed676b90cef501b7edf908/sat_search-0.2.3-py3-none-any.whl
    Collecting rasterio==1.1.5
      Using cached rasterio-1.1.5-cp38-cp38-macosx_10_9_x86_64.whl (17.4 MB)
    Collecting pygments<3.0.0,>=2.6.0
      Using cached Pygments-2.6.1-py3-none-any.whl (914 kB)
    Collecting colorama<0.5.0,>=0.4.0
      Using cached colorama-0.4.3-py2.py3-none-any.whl (15 kB)
    Collecting typing-extensions<4.0.0,>=3.7.4
      Using cached typing_extensions-3.7.4.2-py3-none-any.whl (22 kB)
    Collecting pprintpp<0.5.0,>=0.4.0
      Using cached pprintpp-0.4.0-py2.py3-none-any.whl (16 kB)
    Collecting commonmark<0.10.0,>=0.9.0
      Using cached commonmark-0.9.1-py2.py3-none-any.whl (51 kB)
    Requirement already satisfied: numpy>=1.17.3 in ./lib/python3.8/site-packages (from opencv-python==4.3.0.36->felicette) (1.19.1)
    Collecting rio-mucho
      Using cached rio_mucho-1.0.0-py3-none-any.whl (5.8 kB)
    Collecting idna<3,>=2.5
      Using cached idna-2.10-py2.py3-none-any.whl (58 kB)
    Collecting certifi>=2017.4.17
      Using cached certifi-2020.6.20-py2.py3-none-any.whl (156 kB)
    Collecting urllib3!=1.25.0,!=1.25.1,<1.26,>=1.21.1
      Using cached urllib3-1.25.10-py2.py3-none-any.whl (127 kB)
    Collecting chardet<4,>=3.0.2
      Using cached chardet-3.0.4-py2.py3-none-any.whl (133 kB)
    Processing /Users/tonys/Library/Caches/pip/wheels/83/0e/ee/2d26cc743e0d27215aa05d51b59d429780c691d54ba08946a8/sat_stac-0.3.3-py3-none-any.whl
    Collecting affine
      Using cached affine-2.3.0-py2.py3-none-any.whl (15 kB)
    Collecting snuggs>=1.4.1
      Using cached snuggs-1.4.7-py3-none-any.whl (5.4 kB)
    Collecting cligj>=0.5
      Using cached cligj-0.5.0-py3-none-any.whl (5.7 kB)
    Collecting attrs
      Using cached attrs-19.3.0-py2.py3-none-any.whl (39 kB)
    Collecting click-plugins
      Using cached click_plugins-1.1.1-py2.py3-none-any.whl (7.5 kB)
    Collecting python-dateutil~=2.7.5
      Using cached python_dateutil-2.7.5-py2.py3-none-any.whl (225 kB)
    Collecting pyparsing>=2.1.6
      Using cached pyparsing-2.4.7-py2.py3-none-any.whl (67 kB)
    Collecting six>=1.5
      Using cached six-1.15.0-py2.py3-none-any.whl (10 kB)
    Building wheels for collected packages: rio-color
      Building wheel for rio-color (setup.py) ... error
      ERROR: Command errored out with exit status 1:
       command: /Users/tonys/Developer/felicette/bin/python -u -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/private/var/folders/zv/dw7jcgw93sjcxcjlw3p_9rfc0000gn/T/pip-install-4e0p0ol9/rio-color/setup.py'"'"'; __file__='"'"'/private/var/folders/zv/dw7jcgw93sjcxcjlw3p_9rfc0000gn/T/pip-install-4e0p0ol9/rio-color/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' bdist_wheel -d /private/var/folders/zv/dw7jcgw93sjcxcjlw3p_9rfc0000gn/T/pip-wheel-j0d05h8s
           cwd: /private/var/folders/zv/dw7jcgw93sjcxcjlw3p_9rfc0000gn/T/pip-install-4e0p0ol9/rio-color/
      Complete output (34 lines):
      running bdist_wheel
      running build
      running build_py
      creating build
      creating build/lib.macosx-10.15-x86_64-3.8
      creating build/lib.macosx-10.15-x86_64-3.8/rio_color
      copying rio_color/__init__.py -> build/lib.macosx-10.15-x86_64-3.8/rio_color
      copying rio_color/operations.py -> build/lib.macosx-10.15-x86_64-3.8/rio_color
      copying rio_color/utils.py -> build/lib.macosx-10.15-x86_64-3.8/rio_color
      copying rio_color/workers.py -> build/lib.macosx-10.15-x86_64-3.8/rio_color
      creating build/lib.macosx-10.15-x86_64-3.8/rio_color/scripts
      copying rio_color/scripts/__init__.py -> build/lib.macosx-10.15-x86_64-3.8/rio_color/scripts
      copying rio_color/scripts/cli.py -> build/lib.macosx-10.15-x86_64-3.8/rio_color/scripts
      running egg_info
      writing rio_color.egg-info/PKG-INFO
      writing dependency_links to rio_color.egg-info/dependency_links.txt
      writing entry points to rio_color.egg-info/entry_points.txt
      writing requirements to rio_color.egg-info/requires.txt
      writing top-level names to rio_color.egg-info/top_level.txt
      reading manifest file 'rio_color.egg-info/SOURCES.txt'
      reading manifest template 'MANIFEST.in'
      writing manifest file 'rio_color.egg-info/SOURCES.txt'
      copying rio_color/colorspace.c -> build/lib.macosx-10.15-x86_64-3.8/rio_color
      copying rio_color/colorspace.pyx -> build/lib.macosx-10.15-x86_64-3.8/rio_color
      running build_ext
      building 'rio_color.colorspace' extension
      creating build/temp.macosx-10.15-x86_64-3.8
      creating build/temp.macosx-10.15-x86_64-3.8/rio_color
      clang -Wno-unused-result -Wsign-compare -Wunreachable-code -fno-common -dynamic -DNDEBUG -g -fwrapv -O3 -Wall -isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk -I/Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk/usr/include -I/Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk/System/Library/Frameworks/Tk.framework/Versions/8.5/Headers -I/usr/local/include -I/usr/local/opt/[email protected]/include -I/usr/local/opt/sqlite/include -I/Users/tonys/Developer/felicette/include -I/usr/local/opt/[email protected]/Frameworks/Python.framework/Versions/3.8/include/python3.8 -c rio_color/colorspace.c -o build/temp.macosx-10.15-x86_64-3.8/rio_color/colorspace.o
      rio_color/colorspace.c:583:10: fatal error: 'numpy/arrayobject.h' file not found
      #include "numpy/arrayobject.h"
               ^~~~~~~~~~~~~~~~~~~~~
      1 error generated.
      error: command 'clang' failed with exit status 1
      ----------------------------------------
      ERROR: Failed building wheel for rio-color
      Running setup.py clean for rio-color
    Failed to build rio-color
    Installing collected packages: pygments, colorama, typing-extensions, pprintpp, commonmark, rich, opencv-python, click, affine, pyparsing, snuggs, cligj, attrs, click-plugins, rasterio, rio-mucho, rio-color, tqdm, pillow, idna, certifi, urllib3, chardet, requests, six, python-dateutil, sat-stac, sat-search, felicette
        Running setup.py install for rio-color ... error
        ERROR: Command errored out with exit status 1:
         command: /Users/tonys/Developer/felicette/bin/python -u -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/private/var/folders/zv/dw7jcgw93sjcxcjlw3p_9rfc0000gn/T/pip-install-4e0p0ol9/rio-color/setup.py'"'"'; __file__='"'"'/private/var/folders/zv/dw7jcgw93sjcxcjlw3p_9rfc0000gn/T/pip-install-4e0p0ol9/rio-color/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' install --record /private/var/folders/zv/dw7jcgw93sjcxcjlw3p_9rfc0000gn/T/pip-record-e2ctigmf/install-record.txt --single-version-externally-managed --compile --install-headers /Users/tonys/Developer/felicette/include/site/python3.8/rio-color
             cwd: /private/var/folders/zv/dw7jcgw93sjcxcjlw3p_9rfc0000gn/T/pip-install-4e0p0ol9/rio-color/
        Complete output (34 lines):
        running install
        running build
        running build_py
        creating build
        creating build/lib.macosx-10.15-x86_64-3.8
        creating build/lib.macosx-10.15-x86_64-3.8/rio_color
        copying rio_color/__init__.py -> build/lib.macosx-10.15-x86_64-3.8/rio_color
        copying rio_color/operations.py -> build/lib.macosx-10.15-x86_64-3.8/rio_color
        copying rio_color/utils.py -> build/lib.macosx-10.15-x86_64-3.8/rio_color
        copying rio_color/workers.py -> build/lib.macosx-10.15-x86_64-3.8/rio_color
        creating build/lib.macosx-10.15-x86_64-3.8/rio_color/scripts
        copying rio_color/scripts/__init__.py -> build/lib.macosx-10.15-x86_64-3.8/rio_color/scripts
        copying rio_color/scripts/cli.py -> build/lib.macosx-10.15-x86_64-3.8/rio_color/scripts
        running egg_info
        writing rio_color.egg-info/PKG-INFO
        writing dependency_links to rio_color.egg-info/dependency_links.txt
        writing entry points to rio_color.egg-info/entry_points.txt
        writing requirements to rio_color.egg-info/requires.txt
        writing top-level names to rio_color.egg-info/top_level.txt
        reading manifest file 'rio_color.egg-info/SOURCES.txt'
        reading manifest template 'MANIFEST.in'
        writing manifest file 'rio_color.egg-info/SOURCES.txt'
        copying rio_color/colorspace.c -> build/lib.macosx-10.15-x86_64-3.8/rio_color
        copying rio_color/colorspace.pyx -> build/lib.macosx-10.15-x86_64-3.8/rio_color
        running build_ext
        building 'rio_color.colorspace' extension
        creating build/temp.macosx-10.15-x86_64-3.8
        creating build/temp.macosx-10.15-x86_64-3.8/rio_color
        clang -Wno-unused-result -Wsign-compare -Wunreachable-code -fno-common -dynamic -DNDEBUG -g -fwrapv -O3 -Wall -isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk -I/Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk/usr/include -I/Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk/System/Library/Frameworks/Tk.framework/Versions/8.5/Headers -I/usr/local/include -I/usr/local/opt/[email protected]/include -I/usr/local/opt/sqlite/include -I/Users/tonys/Developer/felicette/include -I/usr/local/opt/[email protected]/Frameworks/Python.framework/Versions/3.8/include/python3.8 -c rio_color/colorspace.c -o build/temp.macosx-10.15-x86_64-3.8/rio_color/colorspace.o
        rio_color/colorspace.c:583:10: fatal error: 'numpy/arrayobject.h' file not found
        #include "numpy/arrayobject.h"
                 ^~~~~~~~~~~~~~~~~~~~~
        1 error generated.
        error: command 'clang' failed with exit status 1
        ----------------------------------------
    ERROR: Command errored out with exit status 1: /Users/tonys/Developer/felicette/bin/python -u -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/private/var/folders/zv/dw7jcgw93sjcxcjlw3p_9rfc0000gn/T/pip-install-4e0p0ol9/rio-color/setup.py'"'"'; __file__='"'"'/private/var/folders/zv/dw7jcgw93sjcxcjlw3p_9rfc0000gn/T/pip-install-4e0p0ol9/rio-color/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' install --record /private/var/folders/zv/dw7jcgw93sjcxcjlw3p_9rfc0000gn/T/pip-record-e2ctigmf/install-record.txt --single-version-externally-managed --compile --install-headers /Users/tonys/Developer/felicette/include/site/python3.8/rio-color Check the logs for full command output.
    
    opened by strogonoff 1
  • Getting Felicette to run on Debian in WSL

    Getting Felicette to run on Debian in WSL

    I had to run these commands in order to get it to work in Debian on WSL

    sudo apt -y install python3-venv python-numpy gdal-bin libgdal-dev
    pip3 install wheel
    pip3 install --upgrade pip
    pip3 install numpy GDAL==$(gdal-config --version)
    pip3 install opencv-python==4.3.0.36
    pip3 install felicette

    I was getting random errors otherwise.

    Also xdg-open is meaningless in the context of WSL. WSL can launch windows exes directly, ~but I'm not sure if there is a shim available so that xdg-open would invoke ShellOpen somehow on the windows side.~

    I used xdg-open-wsl. Works great.

    opened by beigexperience 1
  • Bump pillow from 8.3.2 to 9.0.1

    Bump pillow from 8.3.2 to 9.0.1

    Bumps pillow from 8.3.2 to 9.0.1.

    Release notes

    Sourced from pillow's releases.

    9.0.1

    https://pillow.readthedocs.io/en/stable/releasenotes/9.0.1.html

    Changes

    • In show_file, use os.remove to remove temporary images. CVE-2022-24303 #6010 [@​radarhere, @​hugovk]
    • Restrict builtins within lambdas for ImageMath.eval. CVE-2022-22817 #6009 [radarhere]

    9.0.0

    https://pillow.readthedocs.io/en/stable/releasenotes/9.0.0.html

    Changes

    ... (truncated)

    Changelog

    Sourced from pillow's changelog.

    9.0.1 (2022-02-03)

    • In show_file, use os.remove to remove temporary images. CVE-2022-24303 #6010 [radarhere, hugovk]

    • Restrict builtins within lambdas for ImageMath.eval. CVE-2022-22817 #6009 [radarhere]

    9.0.0 (2022-01-02)

    • Restrict builtins for ImageMath.eval(). CVE-2022-22817 #5923 [radarhere]

    • Ensure JpegImagePlugin stops at the end of a truncated file #5921 [radarhere]

    • Fixed ImagePath.Path array handling. CVE-2022-22815, CVE-2022-22816 #5920 [radarhere]

    • Remove consecutive duplicate tiles that only differ by their offset #5919 [radarhere]

    • Improved I;16 operations on big endian #5901 [radarhere]

    • Limit quantized palette to number of colors #5879 [radarhere]

    • Fixed palette index for zeroed color in FASTOCTREE quantize #5869 [radarhere]

    • When saving RGBA to GIF, make use of first transparent palette entry #5859 [radarhere]

    • Pass SAMPLEFORMAT to libtiff #5848 [radarhere]

    • Added rounding when converting P and PA #5824 [radarhere]

    • Improved putdata() documentation and data handling #5910 [radarhere]

    • Exclude carriage return in PDF regex to help prevent ReDoS #5912 [hugovk]

    • Fixed freeing pointer in ImageDraw.Outline.transform #5909 [radarhere]

    ... (truncated)

    Commits
    • 6deac9e 9.0.1 version bump
    • c04d812 Update CHANGES.rst [ci skip]
    • 4fabec3 Added release notes for 9.0.1
    • 02affaa Added delay after opening image with xdg-open
    • ca0b585 Updated formatting
    • 427221e In show_file, use os.remove to remove temporary images
    • c930be0 Restrict builtins within lambdas for ImageMath.eval
    • 75b69dd Dont need to pin for GHA
    • cd938a7 Autolink CWE numbers with sphinx-issues
    • 2e9c461 Add CVE IDs
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies 
    opened by dependabot[bot] 0
  • Collecting opencv-python==4.3.0.36 (from felicette) could not find a version that satisfies the requirement opencv-python==4.3.0.36 (from felicette) (from versions 3.4.2.16 ... 4.4.0.46 ) No matching distribustion found for opencv-python opencv-python==4.3.0.36

    Collecting opencv-python==4.3.0.36 (from felicette) could not find a version that satisfies the requirement opencv-python==4.3.0.36 (from felicette) (from versions 3.4.2.16 ... 4.4.0.46 ) No matching distribustion found for opencv-python opencv-python==4.3.0.36

    Dear community :) Hope someone can give advise. Tried to pip install and got the above mentioned fault message. This is on a x86 rapbian os on a virtualbox Have upgraded pip and pip3 best regards, Rune

    opened by rune2291 7
  • Experiment with robotsat

    Experiment with robotsat

    https://github.com/mapbox/robosat gives nice analysis of satellite images for a higher zoom-level. Experiment with this when zoom-levels are implemented.

    enhancement 
    opened by plant99 0
  • felicette -l jacksonvlile

    felicette -l jacksonvlile

    the tile LC81162052019260 seems to preview into a grey diamond. i've been able to load some other tiles correctly, but the one for north florida seems to be not rendering correctly for some reason?

    opened by ryx2 2
Releases(0.1.13)
Owner
Shivashis Padhi
I love earth and computers.
Shivashis Padhi
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
A library to access OpenStreetMap related services

OSMPythonTools The python package OSMPythonTools provides easy access to OpenStreetMap (OSM) related services, among them an Overpass endpoint, Nomina

Franz-Benjamin Mocnik 342 Dec 31, 2022
Color correction plugin for rasterio

rio-color A rasterio plugin for applying basic color-oriented image operations to geospatial rasters. Goals No heavy dependencies: rio-color is purpos

Mapbox 111 Nov 15, 2022
GebPy is a Python-based, open source tool for the generation of geological data of minerals, rocks and complete lithological sequences.

GebPy is a Python-based, open source tool for the generation of geological data of minerals, rocks and complete lithological sequences. The data can be generated randomly or with respect to user-defi

Maximilian Beeskow 16 Nov 29, 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
Geocode rows in a SQLite database table

Geocode rows in a SQLite database table

Chris Amico 225 Dec 08, 2022
Interactive Maps with Geopandas

Create Interactive maps πŸ—ΊοΈ with your geodataframe Geopatra extends geopandas for interactive mapping and attempts to wrap the goodness of amazing map

sangarshanan 46 Aug 16, 2022
Pure Python NetCDF file reader and writer

Pyncf Pure Python NetCDF file reading and writing. Introduction Inspired by the pyshp library, which provides simple pythonic and dependency free data

Karim Bahgat 14 Sep 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
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
Ingest and query genomic intervals from multiple BED files

Ingest and query genomic intervals from multiple BED files.

4 May 29, 2021
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
framework for large-scale SAR satellite data processing

pyroSAR A Python Framework for Large-Scale SAR Satellite Data Processing The pyroSAR package aims at providing a complete solution for the scalable or

John Truckenbrodt 389 Dec 21, 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
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
Geodata extensions for Django REST Framework

Django-Spillway Django and Django REST Framework integration of raster and feature based geodata. Spillway builds on the immensely marvelous Django RE

Brian Galey 62 Jan 04, 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
Focal Statistics

Focal-Statistics The Focal statistics tool in many GIS applications like ArcGIS, QGIS and GRASS GIS is a standard method to gain a local overview of r

Ifeanyi Nwasolu 1 Oct 21, 2021
scalable analysis of images and time series

thunder scalable analysis of image and time series analysis in python Thunder is an ecosystem of tools for the analysis of image and time series data

thunder-project 813 Dec 29, 2022
Python bindings to libpostal for fast international address parsing/normalization

pypostal These are the official Python bindings to https://github.com/openvenues/libpostal, a fast statistical parser/normalizer for street addresses

openvenues 651 Dec 16, 2022