Se grafica la ubicación de los puntos usando las coordenadas este, norte y altura registradas con el GPS. Las gráficas se pueden realizar en 2D y en 3D, lo que ofrece una vista de la ubicación general de los puntos respecto a los gateways.
La vista en 2d es semejante a la que se encuentra en GoogleEarth
Instrucciones en Python
# Datos desde GPS archivo.csv # Graficas de coordenadas 2D o 3D # Girni 2020-10-07 edelros@espol.edu.ec import numpy as np import pandas as pd import matplotlib.pyplot as plt from mpl_toolkits.mplot3d import Axes3D import matplotlib.animation as animation # INGRESO # Archivo procesado con distancias arch_gpsrsm = 'Coordenadas/coord_puntos.csv' arch_rotacion = 'Coordenadas/rotando3D.gif' # Parametros de gráfica alturaantena = 8 tipograf = '3D' # '2D','3D' etiquetar = ['Gw03','LOS08','CD01','CD11','CAG1','MA10'] grupo = ['LOS','Ref','M','C', ] colores = ['grey','magenta','green','brown',] # PROCEDIMIENTO # leer coordenadas ubica = pd.read_csv(arch_gpsrsm, index_col='punto') ubica = pd.DataFrame(ubica) n = len(ubica) # colores y alturas ubica['color'] = 'Red' for unpunto in ubica.index: # revisa grupo for i in range(0,len(grupo),1): if unpunto.startswith(grupo[i]): ubica.at[unpunto,'color'] = colores[i] if unpunto.startswith('Gw'): ubica.at[unpunto,'altitud'] = ubica.at[unpunto,'altitud']+alturaantena print (ubica['color']) # SALIDA print(ubica.head()) # Grafica 2D -------------------------- if tipograf == '2D': figura, grafica = plt.subplots() for unpunto in ubica.index: unalon = ubica['utm_este'][unpunto] unalat = ubica['utm_norte'][unpunto] unaalt = ubica['altitud'][unpunto] uncolor = ubica['color'][unpunto] condicion = not(unpunto.startswith('Ref')) if condicion: grafica.scatter(unalon,unalat, color = uncolor, label = unpunto) if unpunto in etiquetar: grafica.annotate(unpunto,(unalon,unalat), color = uncolor, rotation=45) plt.xlabel('UTM_este') plt.ylabel('UTM_norte') plt.title('Ubicacion UTM') plt.grid() plt.show() # Grafica 3D -------------------------- if tipograf == '3D': figura = plt.figure() grafica = figura.add_subplot(projection='3d') # grafica = plt.figure().add_subplot(projection='3d') for unpunto in ubica.index: unalon = ubica['utm_este'][unpunto] unalat = ubica['utm_norte'][unpunto] unaalt = ubica['altitud'][unpunto] uncolor = ubica['color'][unpunto] condicion = not(unpunto.startswith('Ref')) if condicion: grafica.scatter(unalon,unalat,unaalt, color = uncolor, label = unpunto) if unpunto in etiquetar: grafica.text(unalon,unalat,unaalt,unpunto) grafica.set_xlabel('UTM_este') grafica.set_ylabel('UTM_norte') grafica.set_zlabel('altitud') grafica.set_title('Ubicacion UTM') def rotate(angle): grafica.view_init(azim=angle) print("realizando animation") rot_animation = animation.FuncAnimation(figura, rotate, frames = np.arange(45,360+45,10), interval = 200) rot_animation.save(arch_rotacion, dpi=80, writer = animation.PillowWriter(fps=5)) plt.show()
Referencia: Graficas 3D puntos dispersos-scatter en métodos numéricos