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


Populating the interactive namespace from numpy and matplotlib
WARNING: pylab import has clobbered these variables: ['datetime']
`%matplotlib` prevents importing * from pylab and numpy

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]:
2000L

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)


2000

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))


2000 1786
--- 0.00446200370789 seconds ---

In [8]:
timeit.Timer('cs.ConsolidationByDistance(list_pos, 0, 0.0001, None)').timeit()


---------------------------------------------------------------------------
NameError                                 Traceback (most recent call last)
<ipython-input-8-f647cbdfe48d> in <module>()
----> 1 timeit.Timer('cs.ConsolidationByDistance(list_pos, 0, 0.0001, None)').timeit()

/usr/lib/python2.7/timeit.py in timeit(self, number)
    199         gc.disable()
    200         try:
--> 201             timing = self.inner(it, self.timer)
    202         finally:
    203             if gcold:

/usr/lib/python2.7/timeit.py in inner(_it, _timer)

NameError: global name 'cs' is not defined

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)


1786

In [14]:
print len(list_pos)


2000

In [73]:


In [48]:


In [ ]: