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