public static void main(String[] args) throws IOException { SRTMGL1Provider provider = new SRTMGL1Provider(); // 338 System.out.println(provider.getEle(49.949784, 11.57517)); // 468 System.out.println(provider.getEle(49.968668, 11.575127)); // 467 System.out.println(provider.getEle(49.968682, 11.574842)); // 3110 System.out.println(provider.getEle(-22.532854, -65.110474)); // 120 System.out.println(provider.getEle(38.065392, -87.099609)); // 1617 System.out.println(provider.getEle(40, -105.2277023)); System.out.println(provider.getEle(39.99999999, -105.2277023)); System.out.println(provider.getEle(39.9999999, -105.2277023)); System.out.println(provider.getEle(39.999999, -105.2277023)); // 1015 System.out.println(provider.getEle(47.468668, 14.575127)); // 1107 System.out.println(provider.getEle(47.467753, 14.573911)); // 1930 System.out.println(provider.getEle(46.468835, 12.578777)); // 844 System.out.println(provider.getEle(48.469123, 9.576393)); }
String getFileName(double lat, double lon) { int lonInt = getMinLonForTile(lon); int latInt = getMinLatForTile(lat); return toLowerCase(getNorthString(latInt) + getLatString(latInt) + getEastString(lonInt) + getLonString(lonInt)); }
@Ignore public void testGetEleVerticalBorder() { // Border between the tiles n42e011 and n43e011 assertEquals("n42e011", instance.getFileName(42.999999, 11.48)); assertEquals(420, instance.getEle(42.999999, 11.48), precision); assertEquals("n43e011", instance.getFileName(43.000001, 11.48)); assertEquals(420, instance.getEle(43.000001, 11.48), precision); }
@Before public void setUp() { instance = new SRTMGL1Provider(); }
@Test public void testMinLat() { assertEquals(52, instance.getMinLatForTile(52.5)); assertEquals(29, instance.getMinLatForTile(29.9)); assertEquals(-60, instance.getMinLatForTile(-59.9)); }
@Test public void testMinLon() { assertEquals(-60, instance.getMinLonForTile(-59.9)); assertEquals(0, instance.getMinLonForTile(0.9)); }
@Ignore public void testGetEle() { assertEquals(338, instance.getEle(49.949784, 11.57517), precision); assertEquals(468, instance.getEle(49.968668, 11.575127), precision); assertEquals(467, instance.getEle(49.968682, 11.574842), precision); assertEquals(3110, instance.getEle(-22.532854, -65.110474), precision); assertEquals(120, instance.getEle(38.065392, -87.099609), precision); assertEquals(1617, instance.getEle(40, -105.2277023), precision); assertEquals(1617, instance.getEle(39.99999999, -105.2277023), precision); assertEquals(1617, instance.getEle(39.9999999, -105.2277023), precision); assertEquals(1617, instance.getEle(39.999999, -105.2277023), precision); assertEquals(1015, instance.getEle(47.468668, 14.575127), precision); assertEquals(1107, instance.getEle(47.467753, 14.573911), precision); assertEquals(1930, instance.getEle(46.468835, 12.578777), precision); assertEquals(844, instance.getEle(48.469123, 9.576393), precision); // The file for this coordinate does not exist, but there is a ferry tagged in OSM assertEquals(0, instance.getEle(56.4787319, 17.6118363), precision); assertEquals(0, instance.getEle(56.4787319, 17.6118363), precision); // Outside of SRTM covered area assertEquals(0, instance.getEle(60.0000001, 16), precision); assertEquals(0, instance.getEle(60.0000001, 16), precision); assertEquals(0, instance.getEle(60.0000001, 19), precision); assertEquals(0, instance.getEle(60.251, 18.805), precision); }
@Test public void testGetDownloadUrl() { // Created a couple of random tests and compared to https://topotools.cr.usgs.gov/gmted_viewer/viewer.htm assertEquals("North/North_30_60/N42E011.hgt", instance.getDownloadURL(42.940339, 11.953125)); assertEquals("North/North_30_60/N38W078.hgt", instance.getDownloadURL(38.548165, -77.167969)); assertEquals("North/North_0_29/N14W005.hgt", instance.getDownloadURL(14.116047, -4.277344)); assertEquals("South/S52W058.hgt", instance.getDownloadURL(-51.015725, -57.621094)); assertEquals("North/North_0_29/N24E120.hgt", instance.getDownloadURL(24.590108, 120.640625)); assertEquals("South/S42W063.hgt", instance.getDownloadURL(-41.015725, -62.949219)); }
@Test public void testGetFileName() { assertEquals("n42e011", instance.getFileName(42.940339, 11.953125)); assertEquals("n38w078", instance.getFileName(38.548165, -77.167969)); assertEquals("n14w005", instance.getFileName(14.116047, -4.277344)); assertEquals("s52w058", instance.getFileName(-51.015725, -57.621094)); assertEquals("n24e120", instance.getFileName(24.590108, 120.640625)); assertEquals("s42w063", instance.getFileName(-41.015725, -62.949219)); }
@Ignore public void testGetEleHorizontalBorder() { // Border between the tiles n42e011 and n42e012 assertEquals("n42e011", instance.getFileName(42.1, 11.999999)); assertEquals(324, instance.getEle(42.1, 11.999999), precision); assertEquals("n42e012", instance.getFileName(42.1, 12.000001)); assertEquals(324, instance.getEle(42.1, 12.000001), precision); }
tmpProvider = new GMTEDProvider(cacheDirStr); } else if (eleProviderStr.equalsIgnoreCase("srtmgl1")) { tmpProvider = new SRTMGL1Provider(cacheDirStr); } else if (eleProviderStr.equalsIgnoreCase("multi")) { tmpProvider = new MultiSourceElevationProvider(cacheDirStr);
String getDownloadURL(double lat, double lon) { int lonInt = getMinLonForTile(lon); int latInt = getMinLatForTile(lat); String north = getNorthString(latInt); String dir; if (north.equals("N")) { dir = "North/"; if (lat >= 30) dir += "North_30_60/"; else dir += "North_0_29/"; } else { dir = "South/"; } return dir + north + getLatString(latInt) + getEastString(lonInt) + getLonString(lonInt) + ".hgt"; }
public static void main(String[] args) throws IOException { SRTMGL1Provider provider = new SRTMGL1Provider(); // 338 System.out.println(provider.getEle(49.949784, 11.57517)); // 468 System.out.println(provider.getEle(49.968668, 11.575127)); // 467 System.out.println(provider.getEle(49.968682, 11.574842)); // 3110 System.out.println(provider.getEle(-22.532854, -65.110474)); // 120 System.out.println(provider.getEle(38.065392, -87.099609)); // 1617 System.out.println(provider.getEle(40, -105.2277023)); System.out.println(provider.getEle(39.99999999, -105.2277023)); System.out.println(provider.getEle(39.9999999, -105.2277023)); System.out.println(provider.getEle(39.999999, -105.2277023)); // 1015 System.out.println(provider.getEle(47.468668, 14.575127)); // 1107 System.out.println(provider.getEle(47.467753, 14.573911)); // 1930 System.out.println(provider.getEle(46.468835, 12.578777)); // 844 System.out.println(provider.getEle(48.469123, 9.576393)); }
tmpProvider = new GMTEDProvider(cacheDirStr); } else if (eleProviderStr.equalsIgnoreCase("srtmgl1")) { tmpProvider = new SRTMGL1Provider(cacheDirStr); } else if (eleProviderStr.equalsIgnoreCase("multi")) { tmpProvider = new MultiSourceElevationProvider(cacheDirStr);
String getFileName(double lat, double lon) { int lonInt = getMinLonForTile(lon); int latInt = getMinLatForTile(lat); return toLowerCase(getNorthString(latInt) + getLatString(latInt) + getEastString(lonInt) + getLonString(lonInt)); }
String getDownloadURL(double lat, double lon) { int lonInt = getMinLonForTile(lon); int latInt = getMinLatForTile(lat); String north = getNorthString(latInt); String dir; if (north.equals("N")) { dir = "North/"; if (lat >= 30) dir += "North_30_60/"; else dir += "North_0_29/"; } else { dir = "South/"; } return dir + north + getLatString(latInt) + getEastString(lonInt) + getLonString(lonInt) + ".hgt"; }