Class: StTools::Fias
- Inherits:
-
Object
- Object
- StTools::Fias
- Defined in:
- lib/st_tools/fias.rb
Class Method Summary collapse
-
.baikonur?(aoguid) ⇒ Boolean
Метод проверяет, является ли aoguid городом федерального значения Байконур.
-
.baikonur_aoguid ⇒ String
Функция возвращает aoguid города федерального значения Байконура в системе ФИАС.
-
.distance(from_lat, from_long, to_lat, to_long) ⇒ Float
Метод расчитывает расстояние в метрах между двумя географическими точками.
-
.federal?(aoguid) ⇒ Boolean
Метод проверяет, является ли aoguid городом федерального значения.
-
.moscow?(aoguid) ⇒ Boolean
Метод проверяет, является ли aoguid городом федерального значения Москва.
-
.moscow_aoguid ⇒ String
Функция возвращает aoguid города федерального значения Москва в системе ФИАС.
-
.other?(aoguid) ⇒ Boolean
Метод проверяет, является ли aoguid неизвестным городом или страной.
-
.other_aoguid ⇒ String
Функция возвращает aoguid города населенного пункта вне системы ФИАС.
-
.postalcode?(text) ⇒ Boolean
Метод проверяет, яаляется строка почтовым индексом.
-
.sevastopol?(aoguid) ⇒ Boolean
Метод проверяет, является ли aoguid городом федерального значения Севастополь.
-
.sevastopol_aoguid ⇒ String
Функция возвращает aoguid города федерального значения Севастополя в системе ФИАС.
-
.spb?(aoguid) ⇒ Boolean
Метод проверяет, является ли aoguid городом федерального значения Санкт-Петербург.
-
.spb_aoguid ⇒ String
Функция возвращает aoguid города федерального значения Санкт-Питербурга в системе ФИАС.
-
.uuid?(text) ⇒ Boolean
Метод проверяет, имеет ли переданная строка тип UUID.
Class Method Details
.baikonur?(aoguid) ⇒ Boolean
Метод проверяет, является ли aoguid городом федерального значения Байконур
79 80 81 82 83 84 |
# File 'lib/st_tools/fias.rb', line 79 def self.baikonur?(aoguid) if self.federal_cities['bai'] == aoguid return true end return false end |
.baikonur_aoguid ⇒ String
Функция возвращает aoguid города федерального значения Байконура в системе ФИАС
34 35 36 |
# File 'lib/st_tools/fias.rb', line 34 def self.baikonur_aoguid return self.federal_cities['bai'] end |
.distance(from_lat, from_long, to_lat, to_long) ⇒ Float
Метод расчитывает расстояние в метрах между двумя географическими точками
149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 |
# 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 |
.federal?(aoguid) ⇒ Boolean
Метод проверяет, является ли aoguid городом федерального значения
43 44 45 46 |
# File 'lib/st_tools/fias.rb', line 43 def self.federal?(aoguid) return true if self.federal_cities.values.include?(aoguid) return false end |
.moscow?(aoguid) ⇒ Boolean
Метод проверяет, является ли aoguid городом федерального значения Москва
52 53 54 55 |
# File 'lib/st_tools/fias.rb', line 52 def self.moscow?(aoguid) return true if self.federal_cities['msk'] == aoguid return false end |
.moscow_aoguid ⇒ String
Функция возвращает aoguid города федерального значения Москва в системе ФИАС
13 14 15 |
# File 'lib/st_tools/fias.rb', line 13 def self.moscow_aoguid return self.federal_cities['msk'] end |
.other?(aoguid) ⇒ Boolean
Метод проверяет, является ли aoguid неизвестным городом или страной
90 91 92 |
# File 'lib/st_tools/fias.rb', line 90 def self.other?(aoguid) self.other_aoguid == aoguid ? true : false end |
.other_aoguid ⇒ String
Функция возвращает aoguid города населенного пункта вне системы ФИАС
97 98 99 |
# File 'lib/st_tools/fias.rb', line 97 def self.other_aoguid "a074418e-41da-49dd-ad44-9f7909e91675" end |
.postalcode?(text) ⇒ Boolean
Метод проверяет, яаляется строка почтовым индексом
125 126 127 128 129 130 131 |
# 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 |
.sevastopol?(aoguid) ⇒ Boolean
Метод проверяет, является ли aoguid городом федерального значения Севастополь
70 71 72 73 |
# File 'lib/st_tools/fias.rb', line 70 def self.sevastopol?(aoguid) return true if self.federal_cities['svs'] == aoguid return false end |
.sevastopol_aoguid ⇒ String
Функция возвращает aoguid города федерального значения Севастополя в системе ФИАС
27 28 29 |
# File 'lib/st_tools/fias.rb', line 27 def self.sevastopol_aoguid return self.federal_cities['svs'] end |
.spb?(aoguid) ⇒ Boolean
Метод проверяет, является ли aoguid городом федерального значения Санкт-Петербург
61 62 63 64 |
# File 'lib/st_tools/fias.rb', line 61 def self.spb?(aoguid) return true if self.federal_cities['spb'] == aoguid return false end |
.spb_aoguid ⇒ String
Функция возвращает aoguid города федерального значения Санкт-Питербурга в системе ФИАС
20 21 22 |
# File 'lib/st_tools/fias.rb', line 20 def self.spb_aoguid return self.federal_cities['spb'] end |
.uuid?(text) ⇒ Boolean
Метод проверяет, имеет ли переданная строка тип UUID
108 109 110 111 112 113 114 |
# 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 |