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.
- checksums.yaml +4 -4
- data/lib/lazy_strans_client.rb +66 -0
- metadata +2 -1
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 7f13be1e5e56c75faacf1508b2479d45be75f245
|
|
4
|
+
data.tar.gz: ca0bd63c38530e412a769313f29e9ced1fd98f55
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
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.
|
|
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
|