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

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

David Montero Loaiza 488 Jan 03, 2023
Geospatial Image Processing for Python

GIPPY Gippy is a Python library for image processing of geospatial raster data. The core of the library is implemented as a C++ library, libgip, with

GIPIT 83 Aug 19, 2022
ColoringMapAlgorithm-CSP- - Graphical Coloring of Countries with Condition Satisfaction Algorithm

ColoringMapAlgorithm-CSP- Condition Satisfaction Algorithm Output Condition

Kerem TAN 2 Jan 10, 2022
A bot that tweets info and location map for new bicycle parking added to OpenStreetMap within a GeoJSON boundary.

Bike parking tweepy bot app A twitter bot app that searches for bicycle parking added to OpenStreetMap. Relies on AWS Lambda/S3, Python3, Tweepy, Flas

Angelo Trivisonno 1 Dec 19, 2021
A simple reverse geocoder that resolves a location to a country

Reverse Geocoder This repository holds a small web service that performs reverse geocoding to determine whether a user specified location is within th

4 Dec 25, 2021
A light-weight, versatile XYZ tile server, built with Flask and Rasterio :earth_africa:

Terracotta is a pure Python tile server that runs as a WSGI app on a dedicated webserver or as a serverless app on AWS Lambda. It is built on a modern

DHI GRAS 531 Dec 28, 2022
Imports VZD (Latvian State Land Service) open data into postgis enabled database

Python script main.py downloads and imports Latvian addresses into PostgreSQL database. Data contains parishes, counties, cities, towns, and streets.

Kaspars Foigts 7 Oct 26, 2022
PyTorch implementation of ''Background Activation Suppression for Weakly Supervised Object Localization''.

Background Activation Suppression for Weakly Supervised Object Localization PyTorch implementation of ''Background Activation Suppression for Weakly S

34 Dec 27, 2022
This GUI app was created to show the detailed information about the weather in any city selected by user

WeatherApp Content Brief description Tools Features Hotkeys How it works Screenshots Ways to improve the project Installation Brief description This G

TheBugYouCantFix 5 Dec 30, 2022
Python project to generate Kerala's distrcit level panchayath map.

Kerala-Panchayath-Maps Python project to generate Kerala's distrcit level panchayath map. As of now, geojson files of Kollam and Kozhikode are added t

Athul R T 2 Jan 10, 2022
Using Global fishing watch's data to build a machine learning model that can identify illegal fishing and poaching activities through satellite and geo-location data.

Using Global fishing watch's data to build a machine learning model that can identify illegal fishing and poaching activities through satellite and geo-location data.

Ayush Mishra 3 May 06, 2022
When traveling in the backcountry during winter time, updating yourself on current and recent weather data is important to understand likely avalanche danger.

Weather Data When traveling in the backcountry during winter time, updating yourself on current and recent weather data is important to understand lik

Trevor Allen 0 Jan 02, 2022
Simple CLI for Google Earth Engine Uploads

geeup: Simple CLI for Earth Engine Uploads with Selenium Support This tool came of the simple need to handle batch uploads of both image assets to col

Samapriya Roy 79 Nov 26, 2022
GeoNode is an open source platform that facilitates the creation, sharing, and collaborative use of geospatial data.

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

GeoNode Development Team 1.2k Dec 26, 2022
Expose a GDAL file as a HTTP accessible on-the-fly COG

cogserver Expose any GDAL recognized raster file as a HTTP accessible on-the-fly COG (Cloud Optimized GeoTIFF) The on-the-fly COG file is not material

Even Rouault 73 Aug 04, 2022
A part of HyRiver software stack for handling geospatial data manipulations

Package Description Status PyNHD Navigate and subset NHDPlus (MR and HR) using web services Py3DEP Access topographic data through National Map's 3DEP

Taher Chegini 5 Dec 14, 2022
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
A proof-of-concept jupyter extension which converts english queries into relevant python code

Text2Code for Jupyter notebook A proof-of-concept jupyter extension which converts english queries into relevant python code. Blog post with more deta

DeepKlarity 2.1k Dec 29, 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
A package built to support working with spatial data using open source python

EarthPy EarthPy makes it easier to plot and manipulate spatial data in Python. Why EarthPy? Python is a generic programming language designed to suppo

Earth Lab 414 Dec 23, 2022