In [2]:
import consolidation as cs
from position import Position
from db import connect_db
from djCluster import DjCluster
import matplotlib.pyplot as plt
from datetime import datetime
%pylab inline
In [3]:
cur_sal = connect_db("bahia")
limit = 2000
cmd = "SELECT * FROM posicionesgps WHERE latitud<>0 AND longitud<> 0 AND recurso='tetra:12082781' LIMIT {0};".format(limit)
cur_sal.execute(cmd)
Out[3]:
In [4]:
list_pos = []
for row in cur_sal.fetchall():
q = Position(row[0] # id
, row[2] # resource
, row[3] # lat
, row[4] # lon
, row[5] # speed
, row[6] # track
, row[10] # date
)
list_pos.append(q)
print len(list_pos)
In [5]:
listPosTyp = []
lats = []
longs = []
# Calculamos media lat
for pos in list_pos:
lats.append(pos.lat)
meanLat = np.mean(lats)
# Calculamos media lon
for pos in list_pos:
longs.append(pos.lon)
meanLon = np.mean(longs)
# Calculamos desv lat
devLat = np.std(lats)
# Calculamos desv lon
devLon = np.std(longs)
latsTyp = []
longsTyp = []
for pos in list_pos:
q = Position(pos.id
, pos.resource
, (pos.lat - meanLat)/devLat
, (pos.lon - meanLon)/devLon
, pos.speed
, pos.track
, pos.date
)
listPosTyp.append(q)
latsTyp.append(q.lat)
longsTyp.append(q.lon)
In [9]:
import time
In [14]:
# Primera Consolidacion por distancia Euclidea simple con eps=0.0001
start_time = time.time()
#result = cs.ConsolidationByDistance(list_pos, 0, 0.0001, None)
#result = cs.ConsolidationByThinning(list_pos, 2, 5)
#result = cs.ConsolidationByTime(list_pos, 20)
#result = cs.ConsolidationByDistance(list_pos, 2, 0.0001, 1)
result = cs.ConsolidationByDistance(list_pos, 2, 0.001, 1)
print len(listPosTyp), len(result)
print("--- %s seconds ---" % (time.time() - start_time))
In [8]:
timeit.Timer('cs.ConsolidationByDistance(list_pos, 0, 0.0001, None)').timeit()
In [11]:
resultLat = []
resultLong = []
for pos in result:
resultLat.append(pos.lat)
resultLong.append(pos.lon)
In [12]:
plt.figure(1, figsize=(15,10))
plt.subplot(111)
ax = plt.gca()
ax.grid(True)
plt.plot(lats, longs, 'ro', resultLat, resultLong, 'bo');
In [13]:
print len(result)
In [14]:
print len(list_pos)
In [73]:
In [48]:
In [ ]: