package org.osmtools.srtm; import java.io.File; import java.io.FilenameFilter; import java.util.HashMap; import java.util.Map; public class SrtmService { private Map<Integer, SrtmTile> tileMap = new HashMap<Integer, SrtmTile>(); public void scanDirectory(String directory) { File startDir = new File(directory); File[] files = startDir.listFiles(new FilenameFilter() { @Override public boolean accept(File dir, String name) { return name.endsWith(".hgt") || name.endsWith(".zip"); } }); for (File file : files) { SrtmTile srtmTile = new SrtmTile(file); int key = (srtmTile.getLat() + 90) * 360 + (srtmTile.getLon() + 180); tileMap.put(key, srtmTile); } } public void insertElevation(Iterable<Elevationable> iterable) { for (Elevationable elevationable : iterable) { int key = (((int)elevationable.getLat()) + 90) * 360 + (((int)elevationable.getLon()) + 180); SrtmTile srtmTile = tileMap.get(key); elevationable.setElevation(srtmTile.getElevation(elevationable.getLon(), elevationable.getLat())); } } public int getElevation(double lon, double lat) { int key = (((int)lat) + 90) * 360 + (((int)lon) + 180); SrtmTile srtmTile = tileMap.get(key); return srtmTile.getElevation(lon, lat); } }