{"id":3953,"date":"2021-11-05T09:45:06","date_gmt":"2021-11-05T14:45:06","guid":{"rendered":"http:\/\/blog.espol.edu.ec\/girni\/?p=3953"},"modified":"2026-08-04T10:46:17","modified_gmt":"2026-08-04T15:46:17","slug":"coordenadas-grafica-2d-3d","status":"publish","type":"post","link":"https:\/\/blog.espol.edu.ec\/girni\/coordenadas-grafica-2d-3d\/","title":{"rendered":"3.2 Coordenadas - gr\u00e1fica 2D\/3D"},"content":{"rendered":"\n<p>Se realiza la gr\u00e1fica para la ubicaci\u00f3n de los puntos usando las coordenadas este, norte y altura registradas con el GPS. Las gr\u00e1ficas se pueden realizar en 2D y en 3D, lo que ofrece una vista de la ubicaci\u00f3n general de los puntos respecto a los gateways.<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter\"><a href=\"http:\/\/blog.espol.edu.ec\/girni\/files\/2022\/02\/LoRaWan_Granja_rotando3D01.gif\"><img loading=\"lazy\" decoding=\"async\" width=\"512\" height=\"384\" src=\"http:\/\/blog.espol.edu.ec\/girni\/files\/2022\/02\/LoRaWan_Granja_rotando3D01.gif\" alt=\"\" class=\"wp-image-3954\" \/><\/a><\/figure>\n\n\n\n<p>La vista en 2d es semejante a la que se encuentra en GoogleEarth<\/p>\n\n\n\n<figure class=\"wp-block-image\"><a href=\"http:\/\/blog.espol.edu.ec\/girni\/files\/2022\/02\/LoRaWan_Granja01.png\"><img loading=\"lazy\" decoding=\"async\" width=\"1303\" height=\"711\" src=\"http:\/\/blog.espol.edu.ec\/girni\/files\/2022\/02\/LoRaWan_Granja01.png\" alt=\"\" class=\"wp-image-3956\" srcset=\"https:\/\/blog.espol.edu.ec\/girni\/files\/2022\/02\/LoRaWan_Granja01.png 1303w, https:\/\/blog.espol.edu.ec\/girni\/files\/2022\/02\/LoRaWan_Granja01-300x164.png 300w, https:\/\/blog.espol.edu.ec\/girni\/files\/2022\/02\/LoRaWan_Granja01-768x419.png 768w, https:\/\/blog.espol.edu.ec\/girni\/files\/2022\/02\/LoRaWan_Granja01-1024x559.png 1024w\" sizes=\"auto, (max-width: 1303px) 100vw, 1303px\" \/><\/a><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Instrucciones en Python<\/h2>\n\n\n<div class=\"wp-block-syntaxhighlighter-code alignwide\"><pre class=\"brush: python; title: ; notranslate\" title=\"\">\n# Datos desde GPS archivo.csv\n# Graficas de coordenadas 2D o 3D\n# Girni 2020-10-07 edelros@espol.edu.ec\nimport numpy as np\nimport pandas as pd\nimport matplotlib.pyplot as plt\nfrom mpl_toolkits.mplot3d import Axes3D\nimport matplotlib.animation as animation\n\n# INGRESO\n# Archivo procesado con distancias\narch_gpsrsm = 'Coordenadas\/coord_puntos.csv'\narch_rotacion = 'Coordenadas\/rotando3D.gif'\n\n# Parametros de gr\u00e1fica\nalturaantena = 8\ntipograf = '3D' # '2D','3D'\netiquetar = &#x5B;'Gw03','LOS08','CD01','CD11','CAG1','MA10']\ngrupo   = &#x5B;'LOS','Ref','M','C', ]\ncolores = &#x5B;'grey','magenta','green','brown',]\n\n# PROCEDIMIENTO\n# leer coordenadas\nubica = pd.read_csv(arch_gpsrsm, index_col='punto')\nubica = pd.DataFrame(ubica)\nn = len(ubica)\n\n# colores y alturas\nubica&#x5B;'color'] = 'Red'\nfor unpunto in ubica.index:\n    # revisa grupo\n    for i in range(0,len(grupo),1):\n        if unpunto.startswith(grupo&#x5B;i]):\n            ubica.at&#x5B;unpunto,'color'] = colores&#x5B;i]\n    if unpunto.startswith('Gw'):\n        ubica.at&#x5B;unpunto,'altitud'] = ubica.at&#x5B;unpunto,'altitud']+alturaantena\nprint (ubica&#x5B;'color'])\n    \n# SALIDA\nprint(ubica.head())\n\n# Grafica 2D --------------------------\nif tipograf == '2D':\n    figura, grafica = plt.subplots()\n    for unpunto in ubica.index:\n        unalon = ubica&#x5B;'utm_este']&#x5B;unpunto]\n        unalat = ubica&#x5B;'utm_norte']&#x5B;unpunto]\n        unaalt = ubica&#x5B;'altitud']&#x5B;unpunto]\n        uncolor = ubica&#x5B;'color']&#x5B;unpunto] \n        condicion = not(unpunto.startswith('Ref'))\n        if condicion:\n            grafica.scatter(unalon,unalat,\n                            color = uncolor,\n                            label = unpunto)\n            if unpunto in etiquetar:\n                grafica.annotate(unpunto,(unalon,unalat),\n                                 color = uncolor,\n                                 rotation=45)\n    plt.xlabel('UTM_este')\n    plt.ylabel('UTM_norte')\n    plt.title('Ubicacion UTM')\n    plt.grid()\n    plt.show()\n\n# Grafica 3D --------------------------\nif tipograf == '3D':\n    figura = plt.figure()\n    grafica = figura.add_subplot(projection='3d')\n    # grafica = plt.figure().add_subplot(projection='3d')\n    for unpunto in ubica.index:\n        unalon  = ubica&#x5B;'utm_este']&#x5B;unpunto]\n        unalat  = ubica&#x5B;'utm_norte']&#x5B;unpunto]\n        unaalt  = ubica&#x5B;'altitud']&#x5B;unpunto]\n        uncolor = ubica&#x5B;'color']&#x5B;unpunto] \n        condicion = not(unpunto.startswith('Ref'))\n        if condicion:\n            grafica.scatter(unalon,unalat,unaalt,\n                            color = uncolor,\n                            label = unpunto)\n        if unpunto in etiquetar:\n            grafica.text(unalon,unalat,unaalt,unpunto)\n    grafica.set_xlabel('UTM_este')\n    grafica.set_ylabel('UTM_norte')\n    grafica.set_zlabel('altitud')\n    grafica.set_title('Ubicacion UTM')\n\n    def rotate(angle):\n        grafica.view_init(azim=angle)\n\n    print(&quot;realizando animation&quot;)\n    rot_animation = animation.FuncAnimation(figura,\n                    rotate,\n                    frames = np.arange(45,360+45,10),\n                    interval = 200)\n    rot_animation.save(arch_rotacion, dpi=80,\n                    writer = animation.PillowWriter(fps=5))\n    plt.show()\n<\/pre><\/div>\n\n\n<p><strong>Referencia<\/strong>: <a href=\"https:\/\/blog.espol.edu.ec\/algoritmos101\/fp-u08\/graficas-3d-en-python\/#scatter\">Graficas 3D puntos dispersos-scatter<\/a> en Fundamentos de Programaci\u00f3n<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Se realiza la gr\u00e1fica para la ubicaci\u00f3n de los puntos usando las coordenadas este, norte y altura registradas con el GPS. Las gr\u00e1ficas se pueden realizar en 2D y en 3D, lo que ofrece una vista de la ubicaci\u00f3n general de los puntos respecto a los gateways. La vista en 2d es semejante a la [&hellip;]<\/p>\n","protected":false},"author":8043,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1466681],"tags":[],"class_list":["post-3953","post","type-post","status-publish","format-standard","hentry","category-lorawan-propagacion"],"_links":{"self":[{"href":"https:\/\/blog.espol.edu.ec\/girni\/wp-json\/wp\/v2\/posts\/3953","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.espol.edu.ec\/girni\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.espol.edu.ec\/girni\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.espol.edu.ec\/girni\/wp-json\/wp\/v2\/users\/8043"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.espol.edu.ec\/girni\/wp-json\/wp\/v2\/comments?post=3953"}],"version-history":[{"count":9,"href":"https:\/\/blog.espol.edu.ec\/girni\/wp-json\/wp\/v2\/posts\/3953\/revisions"}],"predecessor-version":[{"id":4781,"href":"https:\/\/blog.espol.edu.ec\/girni\/wp-json\/wp\/v2\/posts\/3953\/revisions\/4781"}],"wp:attachment":[{"href":"https:\/\/blog.espol.edu.ec\/girni\/wp-json\/wp\/v2\/media?parent=3953"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.espol.edu.ec\/girni\/wp-json\/wp\/v2\/categories?post=3953"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.espol.edu.ec\/girni\/wp-json\/wp\/v2\/tags?post=3953"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}