gotopo30

package module
v1.0.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Aug 26, 2024 License: MIT Imports: 7 Imported by: 0

README

GoTOPO30

GoTOPO30 is a Golang package designed to read GTOPO30 files and extract elevation data from them. GTOPO30 is a global digital elevation model (DEM) that provides elevation data with a horizontal grid spacing of 30 arc seconds (approximately 1 kilometer). I have included some additional information at the bottom of the README below the usage.

Features

  • Read GTOPO30 DEM Files: Parse and read elevation data from GTOPO30 files in Golang.
  • Retrieve Elevation Data: Get the elevation for any latitude and longitude within the bounds of the GTOPO30 dataset.
  • Supports Large Datasets: Efficiently handles large binary raster files using Golang's robust file handling capabilities.

Installation

To install GoTOPO30, simply run:

go get github.com/1dylan1/gotopo30

Usage

package main

import (
    "fmt"
    "log"

    "github.com/1dylan1/gotopo30"
)

func main() {
    lat := 37.7749   // Latitude for San Francisco, CA
    lon := -122.4194 // Longitude for San Francisco, CA
    baseFilePath := "/path/to/gtopo30/files"

    elevation, err := gotopo30.GetGTOPOElevation(lat, lon, baseFilePath)
    if err != nil {
        log.Fatalf("Failed to get elevation: %v", err)
    }

    fmt.Printf("Elevation at (%.4f, %.4f): %d meters\n", lat, lon, elevation)
}

GetGTOPOElevation Function

The GetGTOPOElevation function retrieves the elevation for a given latitude and longitude using the GTOPO30 data files.

Function Signature
func GetGTOPOElevation(lat float64, lon float64, baseFilePath string) (int16, error)
Parameters
  • lat (float64): The latitude of the point for which you want to get the elevation.
  • lon (float64): The longitude of the point.
  • baseFilePath (string): The base directory path where the GTOPO30 .DEM and .HDR files are stored.
Returns
  • int16: The elevation at the given latitude and longitude in meters.
  • error: An error message if the elevation could not be retrieved.

GTOPO Overview

GTOPO30 is a digital elevation model developed by the United States Geological Survey (USGS). It provides elevation data globally with a 30 arc-second resolution, covering the Earth's land surface between 90 degrees north and 90 degrees south latitude. GTOPO is spread up into 27 tiles, with 6 tiles covering Antarctica, Each non-Antarctic tile will cover 50 degrees of latitude and 40 degrees of longitude, whereas the Antarctic tiles will cover 30 degrees of latitude and 60 degrees of longitude. The tiles' names refer to the longitude and latitude of the upper-left (northwest) corner of the tile. For example, the coordinates of the upper-left corner of the tile E020N40 are 20 degrees east longitude and 40 degrees north latitude. There is one additional tile that covers all of Antarctica with data in a polar stereographic projection, but I do not handle this.

The horizontal coordinate system is decimal degrees of latitude and longitude referenced to WGS84. The vertical units represent elevation in meters above mean sea level. The elevation values range from -407 to 8,752 meters. In the DEM, ocean areas have been masked as "no data" and have been assigned a value of 9999 (hence why I return -9999 for error handling purposes). Lowland coastal areas have an elevation of at least 1 meter, so in the event that a user reassigns the ocean value from -9999 to 0 the land boundary portrayal will be maintained. Due to the nature of the raster structure of the DEM, small islands in the ocean less than approximately 1 square kilometer will not be represented.

If you're looking for a place to obtain the files, the NCAR has some available for download (https://rda.ucar.edu/datasets/d758000/dataaccess/#)

Contributing

I'm always open to contributions as it's possible I've missed an edge case or fundamentally misunderstood something. Feel free to open an issue or PR.

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func GetGTOPOElevation

func GetGTOPOElevation(lat float64, lon float64, baseFilePath string) (int16, error)

Types

type GTOPOHeaderInfo

type GTOPOHeaderInfo struct {
	// contains filtered or unexported fields
}

type LatRange

type LatRange struct {
	// contains filtered or unexported fields
}

type LonRange

type LonRange struct {
	// contains filtered or unexported fields
}

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL