As oil and gas production continues to ramp up in the Texas Permian Basin, advances in the processing and use of satellite imagery can be leveraged to identify when and where  oil and gas production facilities are changing. Additional details regarding the activities at the identified locations can also be determined through the analysis of satellite images. Change detection techniques for satellite images can provide increased insight into the capacity, functional state, and impact of oil and gas production projects, as well as serve as inputs into predictive models for more accurate output generation.


Develop a basic methodology to automatically determine where oil extraction infrastructure has been altered using SPOT Imagery from AirBus’s new and exciting imagery offering from OneAtlas.

OneAtlas – SPOT Imagery

For the purpose of developing some basic unsupervised change detection models, Bytelion made use of the OneAtlas project from Airbus. As part of their OneAtlas Sandbox initiative, Airbus provided both SPOT and Pleiades imagery sets for two coverage areas: The Permian Basin, TX and Amenas, Algeria. For the purposes of this initiative, we focused on using the SPOT Imagery. The following SPOT Image sets were provided:

  • (Permian Basin – Odessa, TX – 2013)
  • (Permian Basin – Odessa, TX – 2015)
  • (Amenas, Algeria – 2015)
  • (Amenas, Algeria – 2016)

Multiple image files are included within each zip archive. As the data is high resolution and rich, the zip archives that we used were up to 10-15GB in size.


Unpacking the SPOT Imagery

To begin developing change detection capabilities, we first needed to unzip the imagery packages and load the images into a GIS software application. All images within each of the zip archives are orthorectified and include three spectral bands (red, green, blue) at 8 bit resolution.

Each of the SPOT imagery datasets consists of a nested directory structure which contains multiple files. Within the directory tree are multiple files and levels which include spectral masks, metadata files, processing descriptions, image files, and projection files. The primary image file is in JPEG2000 format located at the IMG_<Product_ID> Level.    


Unsupervised Change Detection Methodology

QGIS Desktop, an open-source GIS Software Package, was used to perform a change detection analysis using the SPOT imagery for the Permian Basin area. The 2 SPOT Images were brought into a QGIS project in order to perform a visual comparison. By overlaying the latest imagery on top of the previous imagery, a visual scan and comparison effort identified areas of change which could be used to validate the automated methodology.

The above image depicts an area where the imagery has changed between 2013 and 2015.

As the extent of the SPOT images is extremely large, only a subset of the imagery was needed to perform the initial proof of concept analysis. Using the QGIS “Clip raster by extent” tool, a smaller image was clipped from each of the source image files. The clipped files were saved as GeoTIFFs and added to the project in QGIS.

Raster arithmetics

Within QGIS, the Raster Calculator can be used to perform a mathematical comparison between the 2 subset images. The following Python code demonstrates the process:

1 – Import Libraries
from PyQt5.QtGui import *
from PyQt5.QtCore import *
from qgis.analysis import *

2 – Set pathnames for raster images
early = “D:/OneAtlas/qgis1/clip2013.tif”
later =”D:/OneAtlas/qgis1/clip2015.tif”
earlyName = “Early”
laterName = “Later”

3 – Set images as raster layers
earlyRaster = QgsRasterLayer(early, earlyName)
laterRaster = QgsRasterLayer(later, laterName)

4 – Build the Raster Calculator Entries
earlyEntry = QgsRasterCalculatorEntry()
laterEntry = QgsRasterCalculatorEntry()
earlyEntry.Raster = earlyRaster
laterEntry.Raster = laterRaster
earlyEntry.bandNumber = 1
laterEntry.bandNumber = 2
earlyEntry.ref = earlyName + “@1”
laterEntry.ref = laterName + “@2”
entries = [laterEntry, earlyEntry]

5 – Generate the expression for the Raster Calculator
exp = “%s – %s” % (laterEntry.ref, earlyEntry.ref)

6 – Set up the output file properties as GeoTIFF
output = “D:/OneAtlas/change_spot.tif”
rasterExtent = earlyRaster.extent()
rasterWidth = earlyRaster.width()
rasterHeight = earlyRaster.height()

7 – Perform the calculation in the Raster Calculator
changeAreas = QgsRasterCalculator(exp, output, “GTiff”, rasterExtent, rasterWidth, rasterHeight, entries)

Once the processing is complete the output GeoTIFF image is added to the project. Rendering the output image as a Singleband Pseudocolor that includes an equal interval classification scheme (In this case 5 intervals that reflect a degree of change) yields a grayscale image where the larger spectral differences are depicted as white, while the areas of no or minor change are depicted in black.

Binary representation of the output change image. White pixels represent areas of more extreme change.

Greyscale rendering of the output change image.

The output change raster image (center) identifies an area of change between the 2013 SPOT image (left) and the 2015 SPOT image (right)


By calculating the spectral differences between the SPOT Images provided by Airbus OneAtlas, a basic change detection raster image is generated that can be used to identify areas of interest where landscape features have changed.  From the output raster, the pixels that depict more extreme change are Areas Of Interest that can be further researched to determine the extent and scope of landscape change.

What is next? 

In the next phase, we might be exploring the identified areas to determine what changed between the images and if any patterns or signatures can be automatically recognized and incorporated into machine learning models.  Alternatively, we are considering how we can tackle all of the oil fields and not just this simple test.  Would love to hear from you if you had some other ideas.  Please let us know!

Your Name (required)

Your Email (required)


Your Message