class StTools::Fias
Public Class Methods
Метод проверяет, является ли aoguid городом федерального значения Байконур
@param [String] aoguid адресного объекта из таблицы addrobj ФИАС @return [Boolean] true, если объект - Байконур
# File lib/st_tools/fias.rb, line 79 def self.baikonur?(aoguid) if self.federal_cities['bai'] == aoguid return true end return false end
Функция возвращает aoguid города федерального значения Байконура в системе ФИАС
@return [String] aoguid г. Байконур
# File lib/st_tools/fias.rb, line 34 def self.baikonur_aoguid return self.federal_cities['bai'] end
Метод расчитывает расстояние в метрах между двумя географическими точками
@param [Float] from_lat - широта первой точки @param [Float] from_long - долгота первой точки @param [Float] to_lat - широта второй точки @param [Float] to_long - долгота второй точки @return [Float] расстояние в метрах между двумя точками @example Примеры использования
# Москва - Санкт-Петербург StTools::Fias.distance(55.75583, 37.61778, 59.95000, 30.31667) #=> 634 988 м (635 км) # Москва - Киев StTools::Fias.distance(55.75583, 37.61778, 50.450500, 30.523000) #=> 755 744 м (756 км) # Москва - Пермь StTools::Fias.distance(55.75583, 37.61778, 58.01389, 56.24889) #=> 1 155 328 м (1 155 км) # Москва - Сан-Франциско StTools::Fias.distance(55.75583, 37.61778, 37.76667, -122.43333) #=> 9 445 325 м (9 445 км)
# File lib/st_tools/fias.rb, line 149 def self.distance(from_lat, from_long, to_lat, to_long) # coord - координата километровой отметки мкад rad_per_deg = Math::PI/180 # PI / 180 rkm = 6371 # Earth radius in kilometers rm = rkm * 1000 # Radius in meters dlat_rad = (to_lat.to_f - from_lat.to_f) * rad_per_deg # Delta, converted to rad dlon_rad = (to_long.to_f - from_long.to_f) * rad_per_deg lat1_rad = from_lat.to_f * rad_per_deg lon1_rad = from_long.to_f * rad_per_deg lat2_rad = to_lat * rad_per_deg lon2_rad = to_long * rad_per_deg a = Math.sin(dlat_rad/2)**2 + Math.cos(lat1_rad) * Math.cos(lat2_rad) * Math.sin(dlon_rad/2)**2 c = 2 * Math::atan2(Math::sqrt(a), Math::sqrt(1-a)) (rm * c).to_i # Delta in meters end
Метод проверяет, является ли aoguid городом федерального значения
@param [String] aoguid адресного объекта из таблицы addrobj ФИАС @return [Boolean] true, если объект - любой из городов федерального значения
# File lib/st_tools/fias.rb, line 43 def self.federal?(aoguid) return true if self.federal_cities.values.include?(aoguid) return false end
Метод проверяет, является ли aoguid городом федерального значения Москва
@param [String] aoguid адресного объекта из таблицы addrobj ФИАС @return [Boolean] true, если объект - Москва
# File lib/st_tools/fias.rb, line 52 def self.moscow?(aoguid) return true if self.federal_cities['msk'] == aoguid return false end
Функция возвращает aoguid города федерального значения Москва в системе ФИАС
@return [String] aoguid г. Москва
# File lib/st_tools/fias.rb, line 13 def self.moscow_aoguid return self.federal_cities['msk'] end
Метод проверяет, является ли aoguid неизвестным городом или страной
@param [String] aoguid адресного объекта @return [Boolean] true, если объект - прочий адресный объект, вне ФИАС
# File lib/st_tools/fias.rb, line 90 def self.other?(aoguid) self.other_aoguid == aoguid ? true : false end
Функция возвращает aoguid города населенного пункта вне системы ФИАС
@return [String] aoguid неизвестного пункта
# File lib/st_tools/fias.rb, line 97 def self.other_aoguid "a074418e-41da-49dd-ad44-9f7909e91675" end
Метод проверяет, яаляется строка почтовым индексом
@param [String] text исходная строка @return [Boolean] true, если строка является почтовым индексом @example Примеры использования
StTools::Fias.postalcode?('111141') #=> true StTools::Fias.postalcode?(' 141207') #=> true StTools::Fias.postalcode?('Hello') #=> false StTools::Fias.postalcode?('1234') #=> false
# File lib/st_tools/fias.rb, line 125 def self.postalcode?(text) return nil if text.nil? if text.to_s.strip.match(/\A\d{6}\z/) return true end return false end
Метод проверяет, является ли aoguid городом федерального значения Севастополь
@param [String] aoguid адресного объекта из таблицы addrobj ФИАС @return [Boolean] true, если объект - Севастополь
# File lib/st_tools/fias.rb, line 70 def self.sevastopol?(aoguid) return true if self.federal_cities['svs'] == aoguid return false end
Функция возвращает aoguid города федерального значения Севастополя в системе ФИАС
@return [String] aoguid г. Севастополь
# File lib/st_tools/fias.rb, line 27 def self.sevastopol_aoguid return self.federal_cities['svs'] end
Метод проверяет, является ли aoguid городом федерального значения Санкт-Петербург
@param [String] aoguid адресного объекта из таблицы addrobj ФИАС @return [Boolean] true, если объект - Санкт-Петербург
# File lib/st_tools/fias.rb, line 61 def self.spb?(aoguid) return true if self.federal_cities['spb'] == aoguid return false end
Функция возвращает aoguid города федерального значения Санкт-Питербурга в системе ФИАС
@return [String] aoguid г. Санкт-Питербурга
# File lib/st_tools/fias.rb, line 20 def self.spb_aoguid return self.federal_cities['spb'] end
Метод проверяет, имеет ли переданная строка тип UUID
@param [String] text исходная строка @return [Boolean] true, если строка имеет тип UUID @example Примеры использования
StTools::Fias.uuid?('0c5b2444-70a0-4932-980c-b4dc0d3f02b5') #=> true StTools::Fias.uuid?('Hello, word!') #=> false
# File lib/st_tools/fias.rb, line 108 def self.uuid?(text) return nil if text.nil? if text.match(/[a-f0-9]{8}-[a-f0-9]{4}-4[a-f0-9]{3}-[89aAbB][a-f0-9]{3}-[a-f0-9]{12}/i) return true end return false end
Private Class Methods
noinspection RubyClassVariableUsageInspection
# File lib/st_tools/fias.rb, line 175 def self.federal_cities self_federal_cities = Hash.new self_federal_cities['msk'] = '0c5b2444-70a0-4932-980c-b4dc0d3f02b5' # Москва self_federal_cities['spb'] = 'c2deb16a-0330-4f05-821f-1d09c93331e6' # Санкт-Петербург self_federal_cities['bai'] = '63ed1a35-4be6-4564-a1ec-0c51f7383314' # Байконур self_federal_cities['svs'] = '6fdecb78-893a-4e3f-a5ba-aa062459463b' # Севастополь return self_federal_cities end