03.01.2015 Views

Herramientas para el procesamiento de datos GPS de la red LISN

Herramientas para el procesamiento de datos GPS de la red LISN

Herramientas para el procesamiento de datos GPS de la red LISN

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

RADIO OBSERVATORIO DE JICAMARCA<br />

INSTITUTO GEOFÍSICO DEL PERÚ<br />

<strong>Herramientas</strong> <strong>para</strong> <strong>el</strong> <strong>procesamiento</strong><br />

<strong>de</strong> <strong>datos</strong> <strong>GPS</strong> <strong>de</strong> <strong>la</strong> <strong>red</strong> <strong>LISN</strong><br />

Juan Carlos Espinoza Guerra<br />

CIELO – Proyecto <strong>LISN</strong><br />

Marzo 2010<br />

1


RESUMEN<br />

Con <strong>el</strong> propósito <strong>de</strong> estudiar fenómenos ionosfericos, Low-Latitu<strong>de</strong> Ionospheric<br />

Sensor Network (<strong>LISN</strong>) es una <strong>red</strong> <strong>de</strong> multi-instrumentos insta<strong>la</strong>dos en América d<strong>el</strong> Sur<br />

como un observatorio distribuido. Todos los instrumentos (<strong>GPS</strong>, magnetómetros y<br />

ionosodas) envían <strong>datos</strong> a un servidor central don<strong>de</strong> son guardados y procesados <strong>para</strong><br />

obtener resultados en tiempo casi-real.<br />

Los <strong>GPS</strong>s <strong>de</strong> <strong>la</strong> <strong>red</strong> <strong>LISN</strong> son <strong>de</strong> diferentes marcas y mod<strong>el</strong>os, cada uno con su<br />

propio programa <strong>de</strong> adquisición que a su vez genera sus propios archivos binarios. Para<br />

leer estos archivos binarios se han <strong>de</strong>sarrol<strong>la</strong>do una serie <strong>de</strong> utilida<strong>de</strong>s necesarias <strong>para</strong> <strong>el</strong><br />

pre y post <strong>procesamiento</strong> <strong>de</strong> los <strong>datos</strong>.<br />

Todos los programas y scripts usados <strong>para</strong> este propósito se han <strong>de</strong>sarrol<strong>la</strong>do<br />

utilizando <strong>el</strong> lenguaje Python, y serán <strong>de</strong>scritos en <strong>el</strong> presente trabajo.<br />

2


ÍNDICE<br />

1 INTRODUCCIÓN ................................................................................................................. 4<br />

2 DESARROLLO ................................................................................................................... 4<br />

2.1 Paquete “gpsUtils”................................................................................................................................. 5<br />

2.2 Módulos principales............................................................................................................................... 6<br />

2.2.1 gpsProcess.py ....................................................................................................................................... 6<br />

2.2.2 Rinex.py ................................................................................................................................................ 7<br />

2.2.3 utility.py ................................................................................................................................................. 8<br />

2.3 Otros módulos ....................................................................................................................................... 8<br />

2.4 Otros archivos ....................................................................................................................................... 8<br />

3 RESULTADOS .................................................................................................................... 9<br />

4 CONCLUSIONES .............................................................................................................. 10<br />

5 RECOMENDACIONES ..................................................................................................... 10<br />

3


HERRAMIENTAS PARA EL PROCESAMIENTO DE DATOS <strong>GPS</strong> DE<br />

LA RED <strong>LISN</strong><br />

1 INTRODUCCIÓN<br />

El <strong>de</strong>sarrollo <strong>de</strong> estas herramientas surge como un complemento al <strong>de</strong>sarrollo <strong>de</strong> <strong>la</strong><br />

base <strong>de</strong> <strong>datos</strong> <strong>GPS</strong> realizado anteriormente, porque con este nuevo <strong>de</strong>sarrollo se optimiza<br />

<strong>la</strong> generación <strong>de</strong> los archivos diarios que se publican en <strong>la</strong> página web (binarios,<br />

cinti<strong>la</strong>ciones, posición, RINEX y TEC). Principalmente este trabajo consistió en <strong>la</strong> integración<br />

<strong>de</strong> todas <strong>la</strong>s aplicaciones utilizadas por <strong>la</strong> base <strong>de</strong> <strong>datos</strong> (scripts en Python y programas en<br />

C y Fortran) en un sólo paquete <strong>para</strong> Python.<br />

2 DESARROLLO<br />

Cuando se implementó <strong>la</strong> base <strong>de</strong> <strong>datos</strong> <strong>GPS</strong> <strong>de</strong> <strong>la</strong> <strong>red</strong> <strong>LISN</strong> se contaba con<br />

programas en lenguaje C <strong>para</strong> realizar <strong>la</strong>s tareas <strong>de</strong> concatenación, <strong>de</strong>cimado y conversión<br />

al formato RINEX <strong>de</strong> los archivos binarios Novat<strong>el</strong> (*.nvd) y LEICA (*.lb2), y también se tenía<br />

programas en Fortran <strong>para</strong> <strong>el</strong> cálculo <strong>de</strong> TEC. Por <strong>el</strong>lo se <strong>de</strong>sarrol<strong>la</strong>ron scripts en Python<br />

que utilicen estos programas y finalmente generen los archivos diarios que son publicados<br />

en <strong>la</strong> base <strong>de</strong> <strong>datos</strong>. La <strong>de</strong>scripción <strong>de</strong> cada uno <strong>de</strong> estos programas y scripts se encuentra<br />

en <strong>el</strong> reporte “Base <strong>de</strong> <strong>datos</strong> <strong>GPS</strong>”.<br />

SERVER<br />

Archivos <strong>de</strong> 15 minutos<br />

dailynvd.c<br />

&<br />

nvd2rinex2.c<br />

dailylb2.c<br />

&<br />

lb22rinex2.c<br />

BASE DE DATOS<br />

(Archivos diarios)<br />

Binarios (*.nvd, *.lb2, *.obs)<br />

Binarios (*.nvd, *.lb2)<br />

Posición (*pos.dat)<br />

Cinti<strong>la</strong>ciones (*gps.dat)<br />

create_daily.py<br />

Posición (*.pos)<br />

Cinti<strong>la</strong>ciones (*.scn)<br />

RINEX (*.yyd)<br />

daily_tec.py<br />

TEC (*.tec)<br />

gps<strong>el</strong>em.f<br />

tec_fromRT.f<br />

gps<strong>el</strong>az.scpt<br />

concat.scpt<br />

PAGINA WEB<br />

(Graficos en real time)<br />

TEC (*.ps)<br />

concat_tec.f<br />

Figura 1 Programas y scripts utilizados por <strong>la</strong> base <strong>de</strong> <strong>datos</strong> <strong>GPS</strong>.<br />

Como se observa en <strong>la</strong> Figura 1, todo <strong>el</strong> <strong>procesamiento</strong> <strong>de</strong>pen<strong>de</strong> <strong>de</strong> varios<br />

programas (en diferentes lenguajes <strong>de</strong> programación) que complican <strong>el</strong> proceso <strong>de</strong><br />

<strong>de</strong>puración y mantenimiento <strong>de</strong> los programas, por esta razón surge <strong>la</strong> i<strong>de</strong>a <strong>de</strong> integrar<br />

4


todos los programas involucrados con <strong>el</strong> <strong>procesamiento</strong> <strong>de</strong> <strong>datos</strong> <strong>GPS</strong> en un solo package y<br />

un solo lenguaje <strong>de</strong> programación: Python, <strong>de</strong> tal forma que nos facilite todas <strong>la</strong>s tareas <strong>de</strong><br />

<strong>procesamiento</strong>.<br />

SERVER<br />

Archivos <strong>de</strong> 15 minutos<br />

Binarios (*.nvd, *.lb2, *.obs)<br />

Posición (*pos.dat)<br />

Cinti<strong>la</strong>ciones (*gps.dat)<br />

dailyfiles.py<br />

BASE DE DATOS<br />

(Archivos diarios)<br />

Binarios (*.nvd, *.lb2)<br />

Posición (*.pos)<br />

Cinti<strong>la</strong>ciones (*.scn)<br />

RINEX (*.yyd)<br />

dailytec.py<br />

TEC (*.tec)<br />

gpsUtils<br />

(Python Package)<br />

realtime_tec.py<br />

PAGINA WEB<br />

(Graficos en real time)<br />

TEC (*.png)<br />

Figura 2 Nuevos programas y scripts utilizados por <strong>la</strong> base <strong>de</strong> <strong>datos</strong> <strong>GPS</strong>.<br />

2.1 Paquete “gpsUtils”<br />

El paquete “gpsUtils” contiene una serie <strong>de</strong> módulos que nos permiten realizar <strong>de</strong><br />

manera práctica y eficaz <strong>el</strong> <strong>procesamiento</strong> <strong>de</strong> <strong>datos</strong> <strong>GPS</strong>, a continuación se <strong>de</strong>scriben sus<br />

principales características:<br />

Soporte <strong>para</strong> archivos binarios Novat<strong>el</strong> (*.nvd), tanto <strong>para</strong> los archivos <strong>de</strong> 15<br />

minutos que llegan al servidor como <strong>para</strong> los archivos horarios que se guardan<br />

en <strong>la</strong>s PC’s locales.<br />

Soporte <strong>para</strong> archivos binarios LEICA (*.lb2), tanto <strong>para</strong> archivos “id_37” que<br />

llegan al servidor como los archivos diarios que se guardan en <strong>la</strong>s PC’s locales.<br />

Soporte <strong>para</strong> archivos OBSERVABLES (*.obs) generados por <strong>el</strong> programa<br />

<strong>GPS</strong>-Scinda.<br />

Soporte <strong>para</strong> archivos ASCII <strong>de</strong> posición y cinti<strong>la</strong>ciones.<br />

Conversión <strong>de</strong> todos los formatos binarios a RINEX versión 2.0.<br />

Módulo <strong>para</strong> lectura <strong>de</strong> archivos RINEX y cálculo d<strong>el</strong> TEC.<br />

5


gpsProcess.py<br />

Rinex.py<br />

utility.py<br />

Main<br />

Modules<br />

gpsUtils<br />

<br />

<br />

<br />

__init__.py<br />

myCutils.pyc<br />

_myCutils.so<br />

Other<br />

Modules<br />

<br />

<br />

stations.dat<br />

leapseco.dat<br />

Other<br />

Files<br />

2.2 Módulos principales<br />

2.2.1 gpsProcess.py<br />

Figura 3 Estructura d<strong>el</strong> paquete “gpsUtils”.<br />

Este módulo contiene todas <strong>la</strong>s funciones y c<strong>la</strong>ses necesarias <strong>para</strong> realizar <strong>la</strong><br />

concatenación, <strong>de</strong>cimado y conversión a RINEX <strong>de</strong> los <strong>datos</strong> <strong>GPS</strong>. Varias <strong>de</strong> <strong>la</strong>s funciones<br />

<strong>de</strong> este módulo están basadas en los antiguos programas en “C” que se muestran en <strong>la</strong><br />

Figura 1. Para usar este módulo es necesario escribir un pequeño script que l<strong>la</strong>me a <strong>la</strong>s<br />

funciones necesarias <strong>para</strong> crear por ejemplo un archivo diario (concatenado y/o <strong>de</strong>cimado)<br />

“nvd”. En nuestro caso utilizamos <strong>el</strong> script “create_daily.py”.<br />

Función<br />

cat_files<br />

nvd_to_rnx2<br />

lb2_to_rnx2<br />

obs_to_rnx2<br />

Descripción<br />

Busca archivos binarios <strong>de</strong> un directorio, fecha y tipo especificados y crea un<br />

nuevo archivo binario <strong>de</strong>cimado. Utiliza <strong>la</strong> c<strong>la</strong>se <strong>de</strong>cimate_file<br />

Lee un archivo binario Novat<strong>el</strong> y crea <strong>el</strong> correspondiente archivo en formato<br />

RINEX.<br />

Lee un archivo binario LEICA y crea <strong>el</strong> correspondiente archivo en formato<br />

RINEX.<br />

Lee un archivo observable y crea <strong>el</strong> correspondiente archivo en formato<br />

RINEX.<br />

Tab<strong>la</strong> 1 Principales funciones d<strong>el</strong> modulo gpsProcess.py<br />

C<strong>la</strong>se<br />

<strong>de</strong>cimate_file()<br />

Station(dict)<br />

mk_Rinex()<br />

gps<strong>el</strong>em(dict)<br />

Descripción<br />

Crea un nuevo archivo binario <strong>de</strong>cimado y permite agregar nuevos <strong>datos</strong> al<br />

archivo creado.<br />

C<strong>la</strong>se que busca <strong>el</strong> archivo stations.dat y crea un diccionario con información<br />

específica <strong>de</strong> una estación (códigos, tipo <strong>de</strong> receptor, ubicación, país, etc.)<br />

C<strong>la</strong>se utilizada por <strong>la</strong>s funciones <strong>de</strong> conversión a formato Rinex. Contiene<br />

funciones que permiten crear <strong>la</strong> cabecera y líneas <strong>de</strong> satélites, y <strong>datos</strong> en<br />

formato Rinex.<br />

C<strong>la</strong>se que almacena <strong>la</strong> información contenida en los archivos “almanac”,<br />

compren<strong>de</strong> funciones <strong>para</strong> calcu<strong>la</strong>r <strong>la</strong> órbita <strong>de</strong> los satélites (<strong>el</strong>evación,<br />

azimut, <strong>la</strong>titud y longitud) <strong>para</strong> una ubicación específica.<br />

Tab<strong>la</strong> 2 Principales c<strong>la</strong>ses d<strong>el</strong> modulo gpsProcess.py<br />

6


2.2.2 Rinex.py<br />

Este módulo engloba funciones y c<strong>la</strong>ses <strong>para</strong> leer archivos en formato Rinex y<br />

guarda <strong>la</strong> información <strong>de</strong> los observables (Pseudoranges, Phases, Doppler Frequency y<br />

SNR) por satélite y frecuencia observada, también se guarda <strong>la</strong> información <strong>de</strong> <strong>la</strong> cabecera<br />

<strong>para</strong> ser utilizada posteriormente.<br />

El módulo soporta archivos en formato RINEX (estándar *.yyo) y CRINEX (con<br />

compresión hatanaka *.yyd), los cuales pue<strong>de</strong>n incluso tener una segunda compresión<br />

(*.gz, *.tar.gz).<br />

Adicionalmente, <strong>la</strong> c<strong>la</strong>se <strong>GPS</strong>data tiene <strong>la</strong> función “calctec” que permite calcu<strong>la</strong>r <strong>el</strong><br />

TEC (s<strong>la</strong>nt TEC y TEC equivalente).<br />

Este módulo está basado en <strong>el</strong> módulo “gpsdata” creado por Nick Matteo<br />

kundor@kundor.org<br />

read_rinex<br />

Función<br />

count_rinex<br />

Descripción<br />

Esta función lee un archivo en formato Rinex y crea un objeto d<strong>el</strong> tipo<br />

<strong>GPS</strong>Data con <strong>la</strong> información <strong>de</strong> los observables encontrados.<br />

Versión simplificada <strong>de</strong> read_rinex que solo cuenta <strong>el</strong> número <strong>de</strong> records que<br />

contiene <strong>el</strong> archivo, no crea <strong>el</strong> objeto <strong>GPS</strong>Data.<br />

Tab<strong>la</strong> 3 Principales funciones d<strong>el</strong> modulo Rinex.py<br />

C<strong>la</strong>se<br />

<strong>GPS</strong>Data(list)<br />

SatBias(dict)<br />

LeapSeconds(dict)<br />

Descripción<br />

Objeto d<strong>el</strong> tipo lista don<strong>de</strong> se almacenan los records, uno por cada tiempo <strong>de</strong><br />

observación, con información <strong>de</strong> los observables encontrados por satélite.<br />

Tiene <strong>el</strong> atributo “hea<strong>de</strong>r” con información <strong>de</strong> <strong>la</strong> cabecera d<strong>el</strong> archivo.<br />

Esta c<strong>la</strong>se busca los archivos *.dcb que contienen información d<strong>el</strong> bias <strong>de</strong> los<br />

satélites y crea un diccionario con los valores d<strong>el</strong> bias por satélite, sino<br />

encuentra los archivos intenta bajarlos d<strong>el</strong> sitio ftp que provee <strong>la</strong> UNIBE<br />

(ftp.unibe.ch/aiub/CODE).<br />

Usa <strong>el</strong> archivo leapseco.dat <strong>para</strong> formar un diccionario con <strong>la</strong>s fechas y los<br />

segundos interca<strong>la</strong>res, sino encuentra <strong>el</strong> archivo intenta bajar y actualizar <strong>el</strong><br />

archivo <strong>de</strong>s<strong>de</strong> <strong>la</strong> web.<br />

Tab<strong>la</strong> 4 Principales c<strong>la</strong>ses d<strong>el</strong> modulo Rinex.py<br />

2.2.2.1 Función “calctec”<br />

Esta función pertenece a <strong>la</strong> c<strong>la</strong>se “<strong>GPS</strong>Data” y permite <strong>el</strong> cálculo d<strong>el</strong> TEC a partir<br />

<strong>de</strong> los <strong>datos</strong> observables, esta función está basada en <strong>el</strong> programa “tec_fromRT.f” provisto<br />

por <strong>el</strong> Boston College.<br />

Las principales características <strong>de</strong> esta función son:<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

Calcu<strong>la</strong> <strong>el</strong> TEC r<strong>el</strong>ativo (utilizando los pseudoranges) y absoluto (utilizando <strong>la</strong>s<br />

phases) por satélite.<br />

Calcu<strong>la</strong> <strong>la</strong> <strong>el</strong>evación, azimut, <strong>la</strong>titud y longitud <strong>de</strong> cada satélite observado,<br />

utilizando <strong>la</strong> c<strong>la</strong>se “gps<strong>el</strong>em” d<strong>el</strong> módulo “gpsProcess.py”.<br />

Calcu<strong>la</strong> <strong>el</strong> s<strong>la</strong>nt TEC.<br />

Corrige los saltos y valores erróneos encontrados en los <strong>datos</strong>.<br />

Corrige los cycle-slip encontrados.<br />

Estima <strong>el</strong> bias d<strong>el</strong> receptor, minimizando <strong>la</strong> varianza d<strong>el</strong> TEC equivalente entre<br />

<strong>la</strong>s 3 y 6 a.m (hora local). Para <strong>la</strong> minimización se utiliza <strong>el</strong> método <strong>de</strong> Brent.<br />

Corrige <strong>el</strong> bias d<strong>el</strong> receptor hal<strong>la</strong>do <strong>de</strong> tal forma que <strong>el</strong> TEC equivalente sea<br />

siempre mayor a cero.<br />

7


Finalmente calcu<strong>la</strong> <strong>el</strong> TEC equivalente, por cada satélite, utilizando los bias<br />

calcu<strong>la</strong>dos (satélite y receptor).<br />

Adicionalmente <strong>la</strong> c<strong>la</strong>se <strong>GPS</strong>Data también tiene funciones <strong>para</strong> calcu<strong>la</strong>r <strong>el</strong> TEC<br />

vertical total <strong>de</strong> una estación y guardar los diferentes parámetros calcu<strong>la</strong>dos en un archivo<br />

ASCII.<br />

2.2.3 utility.py<br />

El módulo Utility.py contiene diferentes c<strong>la</strong>ses y funciones utilizadas por los otros<br />

módulos. Principalmente se trata <strong>de</strong> utilida<strong>de</strong>s matemáticas y <strong>de</strong> propósito general que<br />

pue<strong>de</strong>n ser útiles en cualquier script.<br />

Función<br />

fitlin<br />

mnbrak<br />

brent<br />

mk_dir<br />

Descripción<br />

Ajusta una función lineal a N puntos.<br />

Clásica función que busca <strong>el</strong> rango don<strong>de</strong> se encuentra <strong>el</strong> mínimo <strong>de</strong> una<br />

función.<br />

Función que busca <strong>el</strong> mínimo <strong>de</strong> una función aplicando <strong>el</strong> método <strong>de</strong> Brent.<br />

Función <strong>para</strong> crear un directorio (recursivamente).<br />

Tab<strong>la</strong> 5 Principales funciones d<strong>el</strong> módulo utility.py<br />

C<strong>la</strong>se<br />

Stats()<br />

open_file(object)<br />

set(list)<br />

Descripción<br />

C<strong>la</strong>se que calcu<strong>la</strong> valores estadísticos <strong>de</strong> una lista (suma, promedio,<br />

varianza y <strong>de</strong>sviación estándar)<br />

Utilidad <strong>para</strong> abrir y leer archivos.<br />

Versión simplificada <strong>de</strong> <strong>la</strong> función interna “set()”, se utiliza cuando los scripts<br />

corren en una versión <strong>de</strong> Python menor a <strong>la</strong> 2.4.<br />

Tab<strong>la</strong> 6 Principales c<strong>la</strong>ses d<strong>el</strong> modulo utility.py<br />

2.3 Otros módulos<br />

Adicionalmente <strong>el</strong> paquete gpsUtils cuenta con otros módulos <strong>de</strong> inicialización y<br />

objetos, y librerías compartidas que completan <strong>el</strong> paquete.<br />

<br />

<br />

__init__.py: módulo <strong>de</strong> inicialización d<strong>el</strong> paquete.<br />

myCutils.pyc y _myCutils.so: librería compartida en C, que pue<strong>de</strong> ser importada<br />

directamente por Python, estas librerías han sido creadas con <strong>la</strong> aplicación<br />

“swig” (www.swig.org) y por ahora solo contiene una función <strong>para</strong> calcu<strong>la</strong>r <strong>el</strong><br />

CRC32 <strong>de</strong> un bloque <strong>de</strong> <strong>datos</strong>. Se <strong>de</strong>cidió utilizar esta librería ya que <strong>la</strong><br />

ejecución <strong>de</strong> esta misma función en Python era <strong>de</strong>masiado lenta.<br />

2.4 Otros archivos<br />

Finalmente <strong>el</strong> paquete gpsUtils cuenta con dos archivos ASCII opcionales que<br />

brindan información adicional a los módulos.<br />

<br />

stations.dat: este archivo contiene información referente a cada estación <strong>el</strong><br />

formato d<strong>el</strong> archivo es como sigue: cada línea tiene los <strong>datos</strong> <strong>de</strong> una estación<br />

piu, piur, piurape, Novat<strong>el</strong>, -5.1699265, -80.6393617, 36.01, Piura, Peru,<br />

jic, jica, jicamar, Leica, -11.9523895, -76.8757236, 505.17, Jicamarca, Peru,<br />

en <strong>el</strong> siguiente or<strong>de</strong>n y se<strong>para</strong>do por comas: etiqueta, código, código antiguo,<br />

tipo <strong>de</strong> receptor, <strong>la</strong>titud, longitud, altura, nombre, país.<br />

8


Figura 4 Ejemplo d<strong>el</strong> archivo stations.dat con información <strong>de</strong> <strong>la</strong>s estaciones:<br />

Piura y Jicamarca.<br />

leapsec.dat: este archivo contiene información actualizada <strong>de</strong> los segundos<br />

interca<strong>la</strong>res <strong>para</strong> ser com<strong>para</strong>dos con los que vienen en <strong>la</strong>s cabeceras <strong>de</strong> los<br />

archivos Rinex y corregirlos.<br />

3 RESULTADOS<br />

<br />

<br />

<br />

Como resultado d<strong>el</strong> trabajo se tiene una primera versión d<strong>el</strong> paquete gpsUtils,<br />

<strong>el</strong> cual nos facilita <strong>la</strong>s tareas <strong>de</strong> <strong>procesamiento</strong> <strong>de</strong> los <strong>datos</strong> <strong>GPS</strong> <strong>de</strong> <strong>la</strong> <strong>red</strong><br />

<strong>LISN</strong>.<br />

Las futuras actualizaciones se realizaran utilizando <strong>el</strong> sistema svn d<strong>el</strong> ROJ.<br />

A continuación se muestra una com<strong>para</strong>ción <strong>de</strong> algunos resultados que se<br />

obtienen con gpsUtils y tec_fromRT <strong>para</strong> <strong>el</strong> caso d<strong>el</strong> cálculo d<strong>el</strong> TEC<br />

equivalente.<br />

gpsUtils<br />

tec_fromRT<br />

9


gpsUtils<br />

tec_fromRT<br />

4 CONCLUSIONES<br />

Figura 5 TEC obtenido con gpsUtils y tec_fromRT.<br />

<br />

<br />

Los resultados d<strong>el</strong> <strong>procesamiento</strong> generados con este paquete son<br />

com<strong>para</strong>bles a los que se obtenían con los antiguos programas en C y Fortran,<br />

con <strong>la</strong> ventaja que <strong>la</strong>s versiones en Python soportan más formatos y nos<br />

brindan más opciones.<br />

Este paquete incluso podrá ser utilizado por los usuarios <strong>LISN</strong> que requirieran<br />

herramientas <strong>para</strong> procesar <strong>datos</strong> binarios <strong>de</strong> <strong>GPS</strong>.<br />

5 RECOMENDACIONES<br />

Incluir al paquete gpsUtils <strong>la</strong>s rutinas que se tienen <strong>para</strong> <strong>el</strong> ploteo <strong>de</strong> los<br />

diferentes parámetros <strong>GPS</strong>.<br />

10


BIBLIOGRAFíA<br />

PRESS, W. H; Teukolsky, S. A; Vetterling, W. T and F<strong>la</strong>nnery, B. P. Numerical<br />

Recipes in C. 2da. edición. Estados Unidos: Cambridge University Press,<br />

1994. pp. 359-362.<br />

11

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!