--- /dev/null
+package tim.prune.function.srtm;
+
+import tim.prune.data.Coordinate;
+import tim.prune.data.DataPoint;
+
+/**
+ * Class to represent a single tile of Srtm data, from a single hgt.zip file
+ */
+public class SrtmTile
+{
+ /** Latitude in degrees north/south */
+ private int _latitude = 0;
+ /** Longitude in degrees east/west */
+ private int _longitude = 0;
+
+ /**
+ * Constructor working out the tile for a single point
+ * @param inPoint data point
+ */
+ public SrtmTile(DataPoint inPoint)
+ {
+ Coordinate latitude = inPoint.getLatitude();
+ _latitude = (int) Math.floor(latitude.getDouble());
+ Coordinate longitude = inPoint.getLongitude();
+ _longitude = (int) Math.floor(longitude.getDouble());
+ }
+
+ /**
+ * Constructor working out the tile for a single point
+ * @param inLatitude latitude in degrees
+ * @param inLongitude longitude in degrees
+ */
+ public SrtmTile(int inLatitude, int inLongitude)
+ {
+ _latitude = inLatitude;
+ _longitude = inLongitude;
+ }
+
+ /**
+ * Check for equality
+ * @param inOther other tile object
+ * @return true if both represent same tile
+ */
+ public boolean equals(SrtmTile inOther)
+ {
+ return (_latitude == inOther._latitude) && (_longitude == inOther._longitude);
+ }
+
+ /** @return latitude as int */
+ public int getLatitude() {
+ return _latitude;
+ }
+
+ /** @return longitude as int */
+ public int getLongitude() {
+ return _longitude;
+ }
+
+ /**
+ * @return filename of tile
+ */
+ public String getTileName()
+ {
+ return (_latitude >= 0?"N":"S")
+ + (Math.abs(_latitude) < 10?"0":"")
+ + Math.abs(_latitude)
+ + (_longitude >= 0?"E":"W")
+ + (Math.abs(_longitude) < 100?"0":"")
+ + (Math.abs(_longitude) < 10?"0":"")
+ + Math.abs(_longitude)
+ + ".hgt.zip";
+ }
+}