Package edu.cnu.mdi.mapping.loader
Class Etopo5Loader
java.lang.Object
edu.cnu.mdi.mapping.loader.Etopo5Loader
Loader/query class for the NOAA ETOPO5 global relief grid.
ETOPO5.DAT is a global 5 arc-minute grid stored as signed 16-bit big-endian integers. Each value is an elevation in meters, with negative values representing ocean depth.
Grid layout
- 2160 latitude rows
- 4320 longitude columns
- 5 arc-minute spacing = 1/12 degree
- first row: 90 degrees north
- rows proceed southward
- columns proceed eastward from 0 degrees longitude
This class loads the whole grid into memory. That is only about 18.7 MB of raw data, plus Java array overhead, so it is quite reasonable for a MDI mapping demo.
-
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final intNumber of longitude columns in ETOPO5.static final StringDefault classpath location based on src/main/resources layout.static final intNumber of latitude rows in ETOPO5.static final doubleGrid spacing in degrees: 5 arc-minutes = 1/12 degree. -
Method Summary
Modifier and TypeMethodDescriptionstatic doublecolToLongitudeDegrees(int col) Converts a grid column to longitude in degrees, in [0, 360).intgetElevationMeters(double latitudeDegrees, double longitudeDegrees) Returns the nearest-neighbor elevation in meters for a latitude and longitude given in degrees.intgetElevationMetersAtGridPoint(int row, int col) Returns the raw grid value at a row and column.doublegetInterpolatedElevationMeters(double latitudeDegrees, double longitudeDegrees) Returns bilinearly interpolated elevation in meters.static Etopo5LoaderLoads ETOPO5 from a filesystem path.static Etopo5LoaderLoads ETOPO5 from the default classpath resource:static Etopo5LoaderloadFromResource(String resourcePath) Loads ETOPO5 from a classpath resource.static doublerowToLatitudeDegrees(int row) Converts a grid row to latitude in degrees.
-
Field Details
-
DEFAULT_RESOURCE
Default classpath location based on src/main/resources layout.- See Also:
-
ROWS
public static final int ROWSNumber of latitude rows in ETOPO5.- See Also:
-
COLS
public static final int COLSNumber of longitude columns in ETOPO5.- See Also:
-
STEP_DEGREES
public static final double STEP_DEGREESGrid spacing in degrees: 5 arc-minutes = 1/12 degree.- See Also:
-
-
Method Details
-
loadDefaultResource
Loads ETOPO5 from the default classpath resource:/edu/cnu/mdi/etopo5/ETOPO5.DAT
- Returns:
- loaded ETOPO5 grid
- Throws:
IOException- if the resource cannot be found or read
-
loadFromResource
Loads ETOPO5 from a classpath resource.- Parameters:
resourcePath- absolute classpath resource path- Returns:
- loaded ETOPO5 grid
- Throws:
IOException- if the resource cannot be found or read
-
load
Loads ETOPO5 from a filesystem path.- Parameters:
path- path to ETOPO5.DAT- Returns:
- loaded ETOPO5 grid
- Throws:
IOException- if the file cannot be read or has the wrong size
-
getElevationMeters
public int getElevationMeters(double latitudeDegrees, double longitudeDegrees) Returns the nearest-neighbor elevation in meters for a latitude and longitude given in degrees.Latitude is clamped to the legal range [-90, 90]. Longitude is wrapped into [0, 360).
- Parameters:
latitudeDegrees- latitude in degrees, north positivelongitudeDegrees- longitude in degrees, east positive- Returns:
- elevation in meters; negative values are below sea level
- Throws:
IllegalArgumentException- if either coordinate is not finite
-
getInterpolatedElevationMeters
public double getInterpolatedElevationMeters(double latitudeDegrees, double longitudeDegrees) Returns bilinearly interpolated elevation in meters.This is smoother for mouse-over feedback or color shading. The result is a
doublebecause it is an interpolation of nearby integer grid values.- Parameters:
latitudeDegrees- latitude in degrees, north positivelongitudeDegrees- longitude in degrees, east positive- Returns:
- interpolated elevation in meters
- Throws:
IllegalArgumentException- if either coordinate is not finite
-
getElevationMetersAtGridPoint
public int getElevationMetersAtGridPoint(int row, int col) Returns the raw grid value at a row and column.- Parameters:
row- row index in the range0 <= row < 2160col- column index in the range0 <= col < 4320- Returns:
- elevation in meters
-
rowToLatitudeDegrees
public static double rowToLatitudeDegrees(int row) Converts a grid row to latitude in degrees.- Parameters:
row- grid row- Returns:
- latitude in degrees
-
colToLongitudeDegrees
public static double colToLongitudeDegrees(int col) Converts a grid column to longitude in degrees, in [0, 360).- Parameters:
col- grid column- Returns:
- longitude in degrees
-