68 comments

[ 4.7 ms ] story [ 111 ms ] thread
Felicette is a dead-simple CLI tool which searches, downloads, generates, and visualizes satellite imagery in the form of RGB jpegs, taking inputs in the form of location's name or coordinates. It also has options to visualize CIR vegetation data.
Neat project! The example photos in Drive are a bit wonky on mobile and only one of the files is accessible. Consider adding a few example photos in the readme. What’s the licensing and usage rights of the produced images?
(comment deleted)
(comment deleted)
Seems nice but sends you to dependency hell when you try to install on Ubuntu.

On 18.04, it can't find the correct openvc On 19.04, same things On 20.04, the repo doesn't include config for 20.04

Would love to try it, but ...

Very weird, can you raise an issue with some logs, I'd love to take a look at them and see what went wrong. Thanks for looking into the tool.
Wont have time to do this, nor do I have a github account anymore since that once welcoming place has been assimilated by the borg.

However, here's a hint: try to install a minimal ubuntu server on a VM and install/run your package.

You'll quickly discover the real transitive dependency set of your software.

Update your pip and you should be fine. Or modify the package requirements. It worked even with older versions for me.
>dead-simple CLI tool

    $ sudo add-apt-repository ppa:ubuntugis/ppa
    $ sudo apt-get update
    $ sudo apt-get install python-numpy gdal-bin libgdal-dev
    $ gdal-config --version

    * activate virtual environment *

    $ pip install numpy GDAL==<version-number>
    $ pip install felicette
Hey the images turn out great. That’s really cool!
is it live? Like can a get a pic of a place made at day light in the last 24 hours?
Hi, not yet. It searches for all Landsat 8 images on AWS with lowest cloud cover.

But even at it's full potential, Landsat 8 gives a temporal resolution of 14 days for a location, iirc.

Landsat 8 has a 16 day repeat cycle
Yess, thanks for the correction.

"The satellite has a 16-day repeat cycle with an equatorial crossing time: 10:00 a.m. +/- 15 minutes." from USGS website.

For a little more effort you could "interleave" the Sentinel 2 images as well, which are of a similar resolution and also have a simple access API.
Oh yes, there are plans to integrate Sentinel images as well, but the data fetch layer has to be worked on to handle auth/AWS config to fetch data from buckets.

So released with Landsat 8 first, and I think sentinel 2 has better resolution, up to 10m, if I am not wrong. So it'd be a lot better if Sentinel 2 integration were in-place.

There's also this, if you are interested in downloading timeseries as a whole: https://github.com/cmla/tsd

It supports sentinel 1/2/5p, landsat 8 and a few other satellites if you have the required API access identifiers. The idea is to fetch data not from buckets but from the actual sources, so the underlying philosophy is a bit different.

This is a gold mine, thanks for sharing!
Looking at the code, it appears to be a nice front end to sat-search https://github.com/sat-utils/sat-search
Yes, it uses sat-utils to search STAC. It's a beautiful project.
Yeah amazing they’ve left out the key info like source of images. Does this API need a token?
Panache Bespoke is the world’s leading provider of shirts for the gentleman of the day. We are proud to have a fanatical attention to detail, a unique customer experience and a premium product. Our staff, experience and product distinguish us in the resurgence of custom clothing. We offer tailor-made clothing for everyday people, business, semi-formal and fashion. The line of shirts includes options for everyday shirts such as button down, pin collar and work wear, weekend and travel linens, and black tie shirt options. https://tailormade-shirts.com/ https://tailormade-shirts.com/
(comment deleted)
This is neat!

I’ve built something similar, although my tool can pull its data from any service that supports tile indexing via the Web Mercator Transform (e.g. Google Maps, OSM, basically every online mapping service):

https://github.com/doersino/aerialbot

Its original purpose is the creation of Twitter bots like the ones liked below, but it works well for grabbing detailed satellite maps of arbitrary areas.

https://twitter.com/placesfromorbit

https://twitter.com/americasquared

https://twitter.com/baekmanpyeong

https://twitter.com/nihonmusuukei

This is awesome! I'd go through the code as well in a bit, but the twitter bots are really amazing.
Love this, and the bots. I had one running myself for a while, but I missed the part that grabbed the satellite imagery, do I did that in bulk ahead and had a folder of them.

https://twitter.com/FiveEarthColors

Ha hacker my old fortnite account mah_spider2011
A couple of comments...

> TL;DR: Generate JPEG earth imagery from a location's name/coordinates

It downloads imagery. At first I thought this was a project to simulate satellite imagery from OSM data or something.

> This tool is for a sentient being who wants to view high-res satellite imagery of earth

Landsat is what 30 meters-per-pixel? That's not high-resolution.

> It downloads imagery. At first I thought this was a project to simulate satellite imagery from OSM data or something.

Will update the README, thanks for pointing it out.

> Landsat is what 30 meters-per-pixel? That's not high-resolution.

With the panchromatic band, we can get 15m resolution. But you're right with the fact that one can get images with better resolution on any commercial platforms.

But even OpenMapTiles renders at 15m, I feel. Still have to look into some docs though, I'm curious.

NAIP has 1 m/pixel imagery, only over US.
Thanks, I'll look into it, and try integrating the data source with the tool.
I give it a coordinate and it give me a picture of the French and UK sea towns. That is quite a low resolution I guess.
Looks like a great tool, but its dependencies are sufficiently complex to warrant a Dockerfile. This way it would be very clear what the dependencies are independent of how the host system is configured.
Thanks for the feedback, I agree with you on this. I'll add this to the to-do list.
I just pushed a Docker build here: https://hub.docker.com/r/milhouse1337/felicette

You can use it like this:

  docker run -it -v "$PWD"/felicette-data:/root/felicette-data milhouse1337/felicette felicette -l "Montreal"
That's a very cool project to play with! Thank you @plant99 for this.
Wow, that just makes it a lot simpler for people to test/use. Could you please share your GitHub username, so I can attribute with a link to the docker image in the README?
Off-topic but slightly related, so I'll just post it here in comments.

I've recently discovered pretty cool telnet server. Map in telnet: telnet mapscii.me

That is really neat, thanks for the share. I am amazed at how much detail they managed to include as you zoom in.
That was super cool! They really get all the details.

At first I couldn't figure out how to zoom in. I pressed all they keys. Then I accidentally moved the mouse over the window and it zoomed in.

So my first thought was, "how the heck do they capture the mouse in the terminal!".

Then I exited out of it by killing telnet, and noticed that my terminal was still capturing my mouse input! Just moving the mouse over the terminal put ASCII codes on the command line.

What is this sorcery?

This is great, thanks for building this
Thanks for trying it out. ^^
https://imgur.com/a/dKc2OlG - The example images for those who don't have want to download a 40mb image or don't use google drive
What are the two variations? One looks like a regular image, is the 2nd an IR band?
Yes, RGB and CIR. Btw, all the top nav links in the dochuddle site in your bio are broken and don't do anything.
On a tangent, but any suggestions for a tool to stitch up drone aerial imagery and use it as a map?

Preferably on the phone/tablet.

Um, don't know of a tool to process aerial imagery using phone/tablet.

But I'm sure you're aware of https://qgis.org/en/site/. Some of my friends used this to analyze vegetation using drone imagery.

https://www.opendronemap.org/

Works quite well. Input images must have geo data in the exif metadata like longitude, latitude, FOV, camera pitch (most drones e.g. Autel and DJI drones will include this). You need to set it up on a server, then it's a web app which you could access from a phone/tablet but it involves uploading the images so it probably won't work well like that.

Sounds like the perfect tool for a spy/hacker/csi TV show.
Interesting.

Take quite some time to install. And some images are great like `felicette -l "New York" Some totally blank (real time and dark) felicette -l "Hong Kong" Some not sure as a bit random like those of Three Gorges Dam using ``` felicette -c 109.5568 31.0390 felicette -c 111.003761 30.823748 felicette -c 110.25 30.95 ``` One has coloured and the other not sure.

I guess this is part of being satellite images?

Hmm. Weird, maybe faulty data for some row/path(s).

I'm checking on this, thanks for reporting this. Meanwhile, could you please raise this as an issue on the repository?

I'm used to writing latitude first when writing coordinates so I couldn't get the tool to find any images for a while. Other than that neat tool
Oh yes haha, I feel you. I'm using some amazing libraries as dependencies, created by 'Mapbox'. Now you know why it's (lon, lat) ^^

And thanks for checking it out!

Here are some possibilities to add:

- Allow farbfeld output (to stdout)

- Allow specifying your own assignment of bands

- Allow to skip the colour adjustment if you want to do that separately

- Ensure it works correctly with a non-Unicode locale

Right, thanks a lot for your suggestions.

Points 2, 3 are in the to-do list. Will definitely add 1, 4.