About GeoTIFF files

  • The dataLayers endpoint provides access to various geographical data layers like elevation, aerial imagery, and solar potential, encoded in GeoTIFF format for use in GIS applications.

  • GeoTIFF URLs are valid for one hour and the downloaded files can be stored for up to 30 days, with most layers requiring specialized software for proper visualization due to data encoding.

  • The hourly shade layer is encoded to indicate sun exposure for each location at a specific time and day of the month, requiring bitwise operations to decode the information.

  • The hourly shade data uses the location's regional time zone, assumes no leap days or daylight savings, and treats all days as 24 hours long with standard time noon.

European Economic Area (EEA) developers If your billing address is in the European Economic Area, effective on 8 July 2025, the Google Maps Platform EEA Terms of Service will apply to your use of the Services.Learn more. In addition, certain content from the Solar API will no longer be returned.Learn more.

Rendering of 4 stacked rasters.

ThedataLayers endpointreturns data encoded as GeoTIFF files, which can be used in any geographicinformation system (GIS) application to design solar systems.

Each string in the dataLayers response contains a URL, which you canuse to fetch the corresponding GeoTIFF. URLs are valid for up to an hour afterthey are generated from the original data layers request. GeoTIFF files can bestored for up to 30 days.

With the exception of the RGB layer, GeoTIFF files don't display correctly withan image viewer, as the content is encoded data rather than RGB images. GeoTIFFfiles also cannot be used directly as an overlay image with Maps Javascript API.

The following table describes each layer in detail.

LayerPixel depthResolutionDescription
Digital Surface Model (DSM)32-bit float0.1 m/pixelElevation data that represents the topography of Earth's surface, including natural and built features. Values are in meters above sea level. Invalid locations, or areas where we don't have data, are stored as -9999.
RGB8-bit0.1 m/pixel
0.25 m/pixel
An aerial or satellite image of the region. The GeoTIFF imagery file contains three bands corresponding to red, green and blue values in order to form 24-bit RGB value for each pixel.

By default, the pixel resolution is 0.1 m/pixel.
Building mask1-bit0.1 m/pixelOne bit per pixel indicating whether that pixel is considered to be part of a rooftop.
Annual flux32-bit float0.1 m/pixelThe annual flux map, or annual sunlight on roofs, of the region. Values are kWh/kW/year.

Flux is computed for every location, not just building rooftops. Invalid locations, or areas where we couldn't calculate flux, are stored as -9999. Locations outside ourcoverage area are invalid.

Note: This is unmasked flux.
Monthly flux32-bit float0.5 m/pixelThe monthly flux map (sunlight on roofs, broken down by month) of the region. Values are kWh/kW/year. The GeoTIFF imagery file contains 12 bands corresponding to January — December, in order.
Hourly shade32-bit integer1 m/pixel12 URLs for hourly shade maps corresponding to January — December, in order.

Each GeoTIFF file contains 24 bands, corresponding to the 24 hours of the day. Each pixel is a 32 bit integer, corresponding to the (up to) 31 days of that month. A 1 bit means that the corresponding location is able to see the sun on that day, at that hour, in that month.

Invalid locations are stored as -9999 and have bit 31 set, as that corresponds to the 32nd day of the month and is therefore invalid.

Decode hourly shade rasters

Hourly shade data is encoded in multiband rasters. To learn more about rasterbasics, seeSolar API Concepts.

When you make a request for hourly shade data, you can receive up to 12 rasters,one for each month of the calendar year (January through December). Each rasteris composed of 24 layers, orbands, which correspond to the 24 hours of theday.

Each band is represented by a matrix of cells, orpixels. Each pixel has adepth of 32 bits, which correspond to the (maximum) 31 days of the month.Decoding the day, time, and month of shade data, therefore, requiresunderstanding the bit, band, and raster that you are analyzing.

For example, to identify whether a given location at coordinates (x, y) saw thesun at 4:00 PM on June 22, do the following:

  1. Make a data layers request for all layers for location (x, y).
  2. Because the month of June is the sixth month of the year, fetch the sixthURL in thehourlyShadeUrls list.
  3. Hourly bands are given in 24-hour time. To get data for 4:00 PM (16:00),look up the 17th channel.
  4. Bits (days) index from 0. To get data for the 22nd day of June, read bit 21.
  5. Bits provide binary data indicating whether that location saw sun at thegiven date and time. If the bit is 1, the location saw sun. If the bit is 0,the location saw shade.

The following code summarizes the steps above:

(hourly_shade[month - 1])(x,y)[hour]&(1<<(day-1))
Note: Hourly shade data is based on the regional time zone of the requestedlocation. Hourly shade data also assumes that there are no leap days and thatDaylight Savings Time does not exist. All days are assumed to be 24 hours longand noon is always "standard time" noon (12:00).

Except as otherwise noted, the content of this page is licensed under theCreative Commons Attribution 4.0 License, and code samples are licensed under theApache 2.0 License. For details, see theGoogle Developers Site Policies. Java is a registered trademark of Oracle and/or its affiliates.

Last updated 2025-11-21 UTC.