Lectura de datos de GPS archivo.csv

2.- Se tiene un archivo (nalca_3.csv) el cual tiene 'n' registros:
   Se pide:
     a) Cuente el Total de Apariciones de: $GPRMC, $GPGSV y $ GPGLL
     b) Suma Total de Numeros Enteros y Flotantes solo para $GPRMC
     c) Suma Total de Numeros Enteros y Flotantes solo para $GPGSV
     d) Suma Total de Numeros Enteros y Flotantes solo para $GPGLL
    e) Promedios de b, c y d

Archivo .csv
     
                           
Codigo Fuente:

import csv
##----------------Metodos-------------
def tipoInt(n):
    try:
        int(n)
        return True
    except ValueError:
        return False

def tipoFloat(n):
    try:
        float(n)
        return True
    except ValueError:
        return False
##-----------Fin Metodos--------------

##-------------------------MAIN--------------------------
##variables  
GPRMC = 0
GPGSV = 0
GPGLL = 0

nameGP = ["sumInt","  sumFlo"]
sumas = [0, 0.00, 0, 0.00, 0, 0.00,'','','']

##se abre el archivo .csv
f = open('nalca_3.csv')
##lee el archivo
lns = csv.reader(f)

##recorre linea a linea
for line in lns:
##recorre cada palabra
    for lenline in line:
##identificador $GPRMC,$GPGSV,$GPGLL      
        identificador = line[0]
     
        if identificador =='$GPRMC':
            GPRMC+=1
            sumas[6] = "GPRMC:"
            if (tipoInt(lenline)):
                sumas[0] += int(lenline)
            elif(tipoFloat(lenline)):
                sumas[1] += float(lenline)

        elif identificador =='$GPGSV':
            GPGSV+=1
            sumas[7] = "GPCSV:"
            if (tipoInt(lenline)):
                sumas[2] += int(lenline)
            elif(tipoFloat(lenline)):    
                sumas[3] += float(lenline)
             
        elif identificador =='$GPGLL':
            sumas[8] = "GPGLL:"
            GPGLL+=1
            if (tipoInt(lenline)):
                sumas[4] += int(lenline)
            elif(tipoFloat(lenline)):    
                sumas[5] += float(lenline)              
     
     

print sumas[6],GPRMC,sumas[8],GPGLL, sumas[8],GPGSV
print nameGP[0],sumas[6],sumas[0], nameGP[1],sumas[6],sumas[1]
print nameGP[0],sumas[7],sumas[2], nameGP[1],sumas[7],sumas[3]
print nameGP[0],sumas[8],sumas[4], nameGP[1],sumas[8],sumas[5]

RMC = (sumas[0] + sumas[1] )/2
GSV = (sumas[2] + sumas[3])/2
GLL = (sumas[4] + sumas[5])/2
print "promedio int GPRMC: ",RMC
print "promedio int GPGSV: ",GSV
print "promedio int GPGLL: ",GLL

      

Entradas más populares de este blog

Convertir decimal a binario, octal y hexadecima

Crear servicio web en Visual C# (WebService)