module GeoElevation::Retriever

Constants

MAX_DEPTH

Public Class Methods

get_json() click to toggle source
# File lib/utils.rb, line 75
def self.get_json()
    result = {'srtm1' => {}, 'srtm3' => {}}

    srtm_1_urls = self.retrieve("#{GeoElevation::SRTM_BASE_URL}/#{GeoElevation::SRTM1_URL}")
    srtm_3_urls = self.retrieve("#{GeoElevation::SRTM_BASE_URL}/#{GeoElevation::SRTM3_URL}")

    {
            'srtm1' => self.prepare_urls(srtm_1_urls, 'srtm1'),
            'srtm3' => self.prepare_urls(srtm_3_urls, 'srtm3'),
    }
end
prepare_folder() click to toggle source
# File lib/utils.rb, line 50
def self.prepare_folder
    srtm_urls_file = File.join(GeoElevation::DIR_NAME, 'list.json')
    json = nil

    if ! File.directory?(GeoElevation::DIR_NAME)
        Dir.mkdir(GeoElevation::DIR_NAME)
    end
    if ! File.exist?(srtm_urls_file)
        json = self::get_json()
        pretty_json = JSON.pretty_generate(json)
        open(srtm_urls_file, 'w') { |file| file.write(pretty_json) }
    end

    open(srtm_urls_file, 'r').read
end
prepare_urls(urls, srtm_version) click to toggle source
# File lib/utils.rb, line 66
def self.prepare_urls(urls, srtm_version)
    result = {}
    urls.each do |url|
        file_name = url.split('/')[-1]
        result[file_name] = url.gsub(GeoElevation::SRTM_BASE_URL, '').gsub('//', '/')
    end
    result
end
retrieve(base_url) click to toggle source
# File lib/utils.rb, line 87
def self.retrieve(base_url)
    result = []
    self.retrieve_urls(result, base_url, depth=1)
end
retrieve_urls(result, base_url, depth=1) click to toggle source
# File lib/utils.rb, line 92
def self.retrieve_urls(result, base_url, depth=1)
    puts "Retrieving #{base_url}"
    if depth > self::MAX_DEPTH
        return
    end
    contents = open(base_url) { |io| io.read }
    for url in contents.scan /href="([^\/][^"']+)/
        url = url[0]
        if url[-1] == '/'
            self.retrieve_urls(result, "#{base_url}/#{url}", depth + 1)
        elsif url.match /^.*\.hgt\.zip$/
            file_url = "#{base_url}/#{url}"
            puts "Found #{file_url}"
            result.push(file_url)
        end
    end

    result
end