3.5 Procesa datos. Integra tablas Rssi, distancias y coordenadas

Se integran los archivos de Rssi y coordenadas en un solo archivo. Este proceso permite procesar Rssi vs distancias para generar el modelo de la ecuación que los describe.

Verificar los parámetros con los que se integran las tablas: nombres de archivos de entrada y salida, medidas.

Ejemplo de resultados a obtener:

registros:  57
indices:  Index(['grupo', 'tipo', 'LOS_d1', 'LOS_d2', 'LOS_d3',
       'rssi_rx_d1','rssi_rx_d2', 'rssi_rx_d3', 'rssi_tx_d1', 'rssi_tx_d2', 'rssi_tx_d3',
       'c_norte', 'c_este', 'altitud', 'dist_d1', 'dist_d2', 'dist_d3','longitud', 'latitud'],
        dtype='object')

 Ejemplo de tabla: 
         grupo   tipo  LOS_d1  LOS_d2  LOS_d3  rssi_rx_d1  ...  altitud  dist_d1  dist_d2  dist_d3   longitud latitud
etiqueta                                                   ...                                                         
FIEC101   FIEC  punto       0       1       1 -123.096386  ...   62.213  423.450   78.492  351.924 -79.967500 -2.145463
FIEC102   FIEC  punto       1       1       1 -120.094891  ...   82.308  451.423   67.435  357.220 -79.967762 -2.145404
FIEC103   FIEC  punto       1       1       1 -116.923469  ...   77.421  449.414   60.141  364.706 -79.967697 -2.145337
FIEC104   FIEC  punto       0       1       0 -116.046296  ...   87.352  399.437   97.611  343.328 -79.967307 -2.145563
FIEC105   FIEC  punto       1       1       0 -119.713235  ...   82.708  382.250  117.785  326.571 -79.967231 -2.145730

[5 rows x 19 columns]
>>> 

Archivo resumen de medida: resumen_rssimean01.txt

archivo de resumen de coordenadas y distancias : resumen_ubica01.txt

archivo de resultado integrado: resumen_RssiUbica01


Algoritmo en Python

La tabla general se constuye concatenando los componentes por colunnas.

La primera parte se conforma con los datos del punto de las columnas de grupos, tipos y LOS que provienen del archivo de ubicaciones de los puntos.

La segunda parte corresponde a la tabla de medidas de Rssi, y finalmente se complementa la tercera parte con la información de las coordenadas.

La tabla resultante se almacena en un archivo de resumen.

# Rssi y SNR LoRa punto a punto
# LoRa-Multipunto, integra Ubicacion y Rssi
# Girni 2020-10-07 propuesta: edelros@espol.edu.ec
import numpy as np
import pandas as pd

# INGRESO
# revisar parametros al inicio
medida     = 'rssi'
descriptor = 'mean'

# archivos de entrada
arch_rsmpuntos = 'resumen_rssimean02.txt'
arch_rsmgps    = 'resumen_ubica01.txt'

# archivos de salida
arch_rssiubica = 'resumen_'+medida+'Ubica02.txt'

# referencias
baliza = {'d1':'gtwRECT',
          'd2':'gtwFIEC',
          'd3':'gtwFCNM'}

# PROCEDIMIENTO
# lectura de ubicacion
ubica = pd.read_csv(arch_rsmgps, index_col='etiqueta')
ubica = pd.DataFrame(ubica)
n=len(ubica)

# lectura de medida
rsm_medida = pd.read_csv(arch_rsmpuntos)
rsm_medida = pd.DataFrame(rsm_medida)
rsm_medida.rename(columns={'Unnamed: 0':'etiqueta'},
              inplace=True)
rsm_medida['etiqueta'] = rsm_medida.etiqueta.astype(str)
rsm_medida = rsm_medida.set_index('etiqueta')
m=len(rsm_medida)

# tabla concatenada por columnas Y UNION
# para mantener referencias de coordenadas de vertices
vertices  = list(baliza.keys())
ultimovertice = vertices[-1]
etiquetas = list(ubica.keys())
donde = etiquetas.index('LOS_'+ultimovertice)

# inicia con grupos, tipos y LOS
tabla = ubica[etiquetas[:donde+1]]

# continua con los datos de medida
tabla = pd.concat([tabla,rsm_medida],
                  axis=1,join='outer')

# completa con lo que resta de ubica
tabla = pd.concat([tabla,
                   ubica[etiquetas[donde+1:]]],
                  axis=1,join='outer')
tabla = tabla.rename_axis('etiqueta')
k = len(tabla)

# SALIDA
print('registros: ',k)
print('indices: ',tabla.keys())
print('\n Ejemplo de tabla: ')
print(tabla.head())
tabla.to_csv(arch_rssiubica)