Search code examples
rbinarygiselevationtopography

How to read .HGT files in R


I'm trying to read elevation data from NASA stored in .HGT files into R. I've checked rgdal library but apparently it does not read this type of file.

ps. The Stack Overflow community shows how to read this typee of file in Python and C++, but I was looking for a pure R solution.

More Info on topographic data in .HGT files:

In 2014, the topographic data generated from NASA's Shuttle Radar Topography Mission (SRTM) was released globally. The resolution of SRTM data for regions outside the United States is 1 arc-second, or about 30 meters (98 feet). You can read more information here and download the data here.

At the present moment, the data is available for these regions of the world: enter image description here

Here is a description from www2.jpl.nasa.gov/srtm/faq.html:

The SRTM data files have names like "N34W119.hgt". What do the letters and numbers refer to, and what is ".hgt" format?

Each data file covers a one-degree-of-latitude by one-degree-of-longitude block of Earth's surface. The first seven characters indicate the southwest corner of the block, with N, S, E, and W referring to north, south, east, and west. Thus, the "N34W119.hgt" file covers latitudes 34 to 35 North and longitudes 118-119 West (this file includes downtown Los Angeles, California). The filename extension ".hgt" simply stands for the word "height", meaning elevation. It is NOT a format type. These files are in "raw" format (no headers and not compressed), 16-bit signed integers, elevation measured in meters above sea level, in a "geographic" (latitude and longitude array) projection, with data voids indicated by -32768. International 3-arc-second files have 1201 columns and 1201 rows of data, with a total filesize of 2,884,802 bytes ( = 1201 x 1201 x 2). United States 1-arc-second files have 3601 columns and 3601 rows of data, with a total filesize of 25,934,402 bytes ( = 3601 x 3601 x 2). For more information read the text file "SRTM_Topo.txt" at http://edcftp.cr.usgs.gov/pub/data/srtm/Readme.html


Solution

  • The answer is quite simple using the raster package (thanks to the comments of @Pascal and @hrbrmstr). The rgdal package must be installed as well.

    # Load libraries
      library(raster)
      library(rgdal)
    
    # read file
      elevation <- raster("S23W044.hgt") 
    # view image
      image(elevation)