Google Maps keeps old satellite imagery around for a while – this tool collects what's available for a user-specified region in the form of a GIF.

Overview

google-maps-at-88-mph

The folks maintaining Google Maps regularly update the satellite imagery it serves its users, but outdated versions of the imagery are kept around for a year or two. This Python-based tool automatically crawls its way through these versions, figuring out which provide unique imagery and downloading it for a user-defined (that's you! you get to define things!) area, eventually assembling it in the form of a GIF.

This weekend project is based on ærialbot, a previous weekend project of mine.

Scroll down to learn how to set it up on your machine, or stay up here for some examples.

There's usually two or three different views of any given area available in the "version history", which can yield neat 3D effects (the attributes contain the invocations used to generate them):

For areas of the world that have changed significantly recently, flipping through the imagery versions is almost like a timelapse – consider the port of Beirut before and after the 2020 explosion on the left, or the perpetually-over-budget-and-behind-schedule construction of the new Stuttgart central station on the right.

It's also fun to look at airports and center pivot irrigation fields through the lens this tool provides:

Because Google regularly removes the oldest available versions, all of this is rather ephemeral – a year from now (which, at the time of writing, was July 2021), the invocations of this tool that have created the GIFs above may yield totally different results. Longer-term timelapses of the surface of our planet can be found on Google Earth Timelapse (or through @earthacrosstime, another weekend project of mine, namely a Twitter bot that posts randomly selected timelapses off it), but what's available there doesn't reach the high resolution of Google Maps.

Setup

Being a good Python 3 citizen, this tool integrates with venv to avoid dependency hell. (Although it only requires the Pillow and requests packages.) Run the following commands to get it installed on your system:

$ git clone https://github.com/doersino/google-maps-at-88-mph
$ python3 -m venv google-maps-at-88-mph
$ cd google-maps-at-88-mph
$ source bin/activate
$ pip3 install -r requirements.txt

(To deactivate the virtual environment, run deactivate.)

Usage

Once you've set everything up, run the following command:

$ python3 googlemapsat88mph.py --help

That'll wax poetic about the available command-line flags and arguments. Importantly, there are three positional arguments, i.e., you've got to set these:

  1. The latitude-longitude pair you're interested in, along with
  2. how wide (east-west extent) and...
  3. ...how tall (north-south extent, both in meters) the downloaded area should be.

Along with those three, you need to supply a value for at least one of the -m, -w, and -h flags – the --help output explains them in detail.

For example, the following invocation will create the first of the GIFs embedded above, showing the White House:

$ python3 googlemapsat88mph.py 38.900068,-77.036555 1000 1000 -w 500

That's basically it! For your viewing pleasure, here's a video of the CLI in action, first scrolling through the --help output, then executing the command from above:

cli.mp4

FAQ

Why the name?

Because when this baby hits 88 miles per hour, you're gonna see some serious shit.

Why did you make this tool?

I became aware of how Google Maps versions its imagery as a side-effect of building and maintaining ærialbot. Figuring out a way to explore past imagery seemed super interesting – note that initially, I wasn't sure how far back the available imagery would go. Finding out that it's only about a year was a bit of a letdown, but there's still some gems to be found either way. The ephemerality aspect also appeals to me.

Does this violate Google's terms of use?

Probably. I haven't checked. But they haven't banned my IP for downloading tens of thousands of map tiles during development and testing (of ærialbot and this), so you're probably good as long as you don't use this tool for downloading a centimeter-scale map of your country. What's more, I can't think of a way in which this tool competes with or keeps revenue from any of Google's products. (And it's always worth keeping in mind that Google is an incredibly profitable company that earns the bulk of its income via folks like you just going about their days surfing the ad-filled web.)

Something is broken – can you fix it?

Possibly. Please feel free to file an issue – I'll be sure to take a look!

Owner
Noah Doersing
Frequently web stuff, sometimes weird experiments, occasionally artsy things, almost always code.
Noah Doersing
Open Data Cube analyses continental scale Earth Observation data through time

Open Data Cube Core Overview The Open Data Cube Core provides an integrated gridded data analysis environment for decades of analysis ready earth obse

Open Data Cube 410 Dec 13, 2022
The geospatial toolkit for redistricting data.

maup maup is the geospatial toolkit for redistricting data. The package streamlines the basic workflows that arise when working with blocks, precincts

Metric Geometry and Gerrymandering Group 60 Dec 05, 2022
A Python framework for building geospatial web-applications

Hey there, this is Greppo... A Python framework for building geospatial web-applications. Greppo is an open-source Python framework that makes it easy

Greppo 304 Dec 27, 2022
This program analizes films database with adresses, and creates a folium map with closest films to the coordinates

Films-map-project UCU CS lab 1.2, 1st year This program analizes films database with adresses, and creates a folium map with closest films to the coor

Artem Moskovets 1 Feb 09, 2022
A short term landscape evolution using a path sampling method to solve water and sediment flow continuity equations and model mass flows over complex topographies.

r.sim.terrain A short-term landscape evolution model that simulates topographic change for both steady state and dynamic flow regimes across a range o

Brendan Harmon 7 Oct 21, 2022
Python Data. Leaflet.js Maps.

folium Python Data, Leaflet.js Maps folium builds on the data wrangling strengths of the Python ecosystem and the mapping strengths of the Leaflet.js

6k Jan 02, 2023
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 library to visualize circular plasmid maps

Plasmidviewer Plasmidviewer is a Python library to visualize plasmid maps from GenBank. This library provides only the function to visualize circular

Mori Hideto 9 Dec 04, 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
Tools for the extraction of OpenStreetMap street network data

OSMnet Tools for the extraction of OpenStreetMap (OSM) street network data. Intended to be used in tandem with Pandana and UrbanAccess libraries to ex

Urban Data Science Toolkit 47 Sep 21, 2022
A set of utility functions for working with GeoJSON annotations in Kaibu

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

ImJoy Team 0 Dec 12, 2021
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
A package to fetch sentinel 2 Satellite data from Google.

Sentinel 2 Data Fetcher Installation Create a Virtual Environment and activate it. python3 -m venv venv . venv/bin/activate Install the Package via pi

1 Nov 18, 2021
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
Calculate the area inside of any GeoJSON geometry. This is a port of Mapbox's geojson-area for Python

geojson-area Calculate the area inside of any GeoJSON geometry. This is a port of Mapbox's geojson-area for Python. Installation $ pip install area U

Alireza 87 Dec 14, 2022
Centroids as a Service

Centroids! This application reads a valid geojson FeatureCollection and returns a valid geojson FeatureColleciton of centroids. In the output: All pro

Lyzi Diamond 20 Aug 29, 2021
Open GeoJSON data on geojson.io

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

Jacob Wasserman 114 Dec 21, 2022
Get Landsat surface reflectance time-series from google earth engine

geextract Google Earth Engine data extraction tool. Quickly obtain Landsat multispectral time-series for exploratory analysis and algorithm testing On

Loïc Dutrieux 50 Dec 15, 2022
Google Maps keeps old satellite imagery around for a while – this tool collects what's available for a user-specified region in the form of a GIF.

google-maps-at-88-mph The folks maintaining Google Maps regularly update the satellite imagery it serves its users, but outdated versions of the image

Noah Doersing 111 Sep 27, 2022
A compilation of several single-beam bathymetry surveys of the Caribbean

Caribbean - Single-beam bathymetry This dataset is a compilation of several single-beam bathymetry surveys of the Caribbean ocean displaying a wide ra

Fatiando a Terra Datasets 0 Jan 20, 2022