strans-client 1.1.0.pre.rc1 → 1.1.0.pre.rc2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (3) hide show
  1. checksums.yaml +4 -4
  2. data/lib/lazy_strans_client.rb +66 -0
  3. metadata +2 -1
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: afbfc1299e1c71d06e2e4c8a92713a01ee013a14
4
- data.tar.gz: 63c7d76fe7e81718d5ec9e97fd99d16dba143835
3
+ metadata.gz: 7f13be1e5e56c75faacf1508b2479d45be75f245
4
+ data.tar.gz: ca0bd63c38530e412a769313f29e9ced1fd98f55
5
5
  SHA512:
6
- metadata.gz: 15b6393621419b137ea8cf8fbaa74113adea44c33b6870a75b58be733e3e45faed37743d6da505ecdbb703309551a45596806b7da1bd1610f33f4ec458c378f8
7
- data.tar.gz: c4f65d44380e8602101fd40c30aa8c26065c6daa01ebe923eedfc763bee18eb053053738022f1fbc3def043c73b2041f110270124fc20f9b7410235b97310a55
6
+ metadata.gz: 4fa5cb5ef9c254bfc8eda23c94c5dd24f92392fa8fb4b35b02c1dc325f1c9cac1d4c7c45ff323e47bfb1934bf879d7160dcee51d9fb9acb4562d40e26aaab6c7
7
+ data.tar.gz: f7c5db13e907fbf2c61b4f794f58c5ae21405f831d0fb3d05d4e26293f9bc3bdca49ba42a0352b7b9f6dca57eebc00c084149d954225d4ea1a95ac402d7cfc86
@@ -0,0 +1,66 @@
1
+ require 'require_models'
2
+
3
+
4
+ class LazyStransClient < StransClient
5
+
6
+ RAIO_TERRA = 6378.137 #KM
7
+
8
+ def load
9
+ @linhas = get(:linhas)
10
+ @linha_paradas = {}
11
+ @parada_linhas = {}
12
+ @linhas.each do |l|
13
+ paradas = get(:paradas_linha, l.codigoLinha)
14
+ @linha_paradas[l.codigoLinha] = paradas
15
+ if(!paradas.kind_of?(Erro))
16
+ paradas.each do |p|
17
+ @parada_linhas[p.codigoParada] = [] if @parada_linhas[p.codigoParada].nil?
18
+ @parada_linhas[p.codigoParada] << p.linha
19
+ end
20
+ end
21
+ end
22
+ end
23
+
24
+ #pega as paradas com distancia máxima
25
+ # da localização passada.
26
+ def paradas_proximas(long, lat, dist)
27
+ paradas = {}
28
+ get(:paradas).each do |parada|
29
+ if(!parada.long.nil? && !parada.long.nil?)
30
+ dLong = calc_distan(long, parada.long)
31
+ dLat = calc_distan(lat, parada.lat)
32
+
33
+ #mutiplicacao do sen da metade da distancia da Lat;
34
+ msmdl = Math::sin(dLat/2) * Math::sin(dLat/2)
35
+ #mutiplicaçao cos da Latitude * PI
36
+ mclPI = Math::cos(lat * Math::PI / 180) * Math::cos(parada.lat * Math::PI / 180)
37
+ #mutiplicacao da metade do seno
38
+ mmds = Math::sin(dLong/2) * Math::sin(dLong/2)
39
+ a = msmdl + mclPI * mmds
40
+
41
+ c = 2 * Math::atan2(Math::sqrt(a), Math::sqrt(1-a))
42
+ d = RAIO_TERRA * c
43
+ dist_parada = d * 1000 # distancia em metros
44
+
45
+ #puts dist_parada
46
+ if(dist_parada < dist)
47
+ paradas[d] = parada
48
+ end
49
+ end
50
+ end
51
+ paradas
52
+ end
53
+
54
+ def linhas_parada(codigoParada)
55
+ load_data() if @linhas.nil?
56
+ @parada_linhas[codigoParada]
57
+ end
58
+
59
+ private
60
+
61
+ #Calcula da diferenca entre duas lats ou longs.
62
+ def calc_distan(pos1, pos2)
63
+ (pos1 - pos2) * Math::PI / 180
64
+ end
65
+
66
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: strans-client
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.0.pre.rc1
4
+ version: 1.1.0.pre.rc2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Luan Pontes
@@ -17,6 +17,7 @@ extensions: []
17
17
  extra_rdoc_files: []
18
18
  files:
19
19
  - lib/erro.rb
20
+ - lib/lazy_strans_client.rb
20
21
  - lib/linha.rb
21
22
  - lib/parada.rb
22
23
  - lib/request.rb