def METHOD_NAME(self, latitude, longitude, timeout=0):
    '''Returns the altitude (m ASL) of a given lat/long pair, or None if unknown'''
    if latitude is None or longitude is None:
        return None
    if self.database in ['SRTM1', 'SRTM3']:
        TileID = (numpy.floor(latitude), numpy.floor(longitude))
        if TileID in self.tileDict:
            alt = self.tileDict[TileID].getAltitudeFromLatLon(latitude, longitude)
        else:
            tile = self.downloader.getTile(numpy.floor(latitude), numpy.floor(longitude))
            if tile == 0:
                if timeout > 0:
                    t0 = time.time()
                    while time.time() < t0+timeout and tile == 0:
                        tile = self.downloader.getTile(numpy.floor(latitude), numpy.floor(longitude))
                        if tile == 0:
                            time.sleep(0.1)
            if tile == 0:
                return None
            self.tileDict[TileID] = tile
            alt = tile.getAltitudeFromLatLon(latitude, longitude)
    elif self.database == 'geoscience':
         alt = self.mappy.getAltitudeAtPoint(latitude, longitude)
    else:
        return None
    return alt