APLICACIÓN MÓVIL PARA LA OPTIMIZACIÓN DE RUTAS DE VEHÍCULOS DE CARGA EN LA...

55
APOYO Y SOPORTE TÉCNICO EN LA PROGRAMACIÓN DE UNA CALCULADORA DE DERRAMES DE HIDROCARBUROS REALIZANDO SU IMPLEMENTACION CON ARCMAP COMO UN ADD IN DESARROLLADO BAJO EL LENGUAJE PYTHON JORGE EDUARDO BERMÚDEZ ARIAS 20101025010 INGENIERÍA CATASTRAL Y GEODESIA UNIVERSIDAD DISTRITAL FRANCISCO JOSÉ DE CALDAS BOGOTÁ 2017

Transcript of APLICACIÓN MÓVIL PARA LA OPTIMIZACIÓN DE RUTAS DE VEHÍCULOS DE CARGA EN LA...

Page 1: APLICACIÓN MÓVIL PARA LA OPTIMIZACIÓN DE RUTAS DE VEHÍCULOS DE CARGA EN LA …repository.udistrital.edu.co/bitstream/11349/6363/1... · 2019-08-26 · usando una integral de volumen

APOYO Y SOPORTE TÉCNICO EN LA PROGRAMACIÓN DE UNA CALCULADORA

DE DERRAMES DE HIDROCARBUROS REALIZANDO SU IMPLEMENTACION

CON ARCMAP COMO UN ADD – IN DESARROLLADO BAJO EL LENGUAJE

PYTHON

JORGE EDUARDO BERMÚDEZ ARIAS

20101025010

INGENIERÍA CATASTRAL Y GEODESIA

UNIVERSIDAD DISTRITAL FRANCISCO JOSÉ DE CALDAS

BOGOTÁ 2017

Page 2: APLICACIÓN MÓVIL PARA LA OPTIMIZACIÓN DE RUTAS DE VEHÍCULOS DE CARGA EN LA …repository.udistrital.edu.co/bitstream/11349/6363/1... · 2019-08-26 · usando una integral de volumen

2

APOYO Y SOPORTE TÉCNICO EN LA PROGRAMACIÓN DE UNA CALCULADORA

DE DERRAMES DE HIDROCARBUROS REALIZANDO SU IMPLEMENTACION

CON ARCMAP COMO UN ADD – IN DESARROLLADO BAJO EL LENGUAJE

PYTHON

JORGE EDUARDO BERMÚDEZ ARIAS

20101025010

Trabajo de grado mediante la modalidad de pasantía en Varichem de Colombia G.E.P.S

CARLOS GERMÁN RAMÍREZ

Director Interno

JAIRO ALEJANDRO AYALA RICO

Especialista SIG

Director Externo

INGENIERÍA CATASTRAL Y GEODESIA

UNIVERSIDAD DISTRITAL FRANCISCO JOSÉ DE CALDAS

BOGOTÁ 2017

Page 3: APLICACIÓN MÓVIL PARA LA OPTIMIZACIÓN DE RUTAS DE VEHÍCULOS DE CARGA EN LA …repository.udistrital.edu.co/bitstream/11349/6363/1... · 2019-08-26 · usando una integral de volumen

3

TABLA DE CONTENIDO

3. INTRODUCCIÓN .................................................................................................................. 8

4. ANTECEDENTES ................................................................................................................. 9

5. JUSTIFICACIÓN ................................................................................................................. 10

6. PREGUNTAS E HIPÓTESIS............................................................................................... 11

6.1. Preguntas ........................................................................................................................ 11

6.2. Hipótesis ......................................................................................................................... 11

7. DECLARACIÓN DEL PROBLEMA .................................................................................. 12

8. OBJETIVOS ......................................................................................................................... 12

8.1. General ........................................................................................................................... 12

8.2. Específicos. .................................................................................................................... 12

9. MARCO DE REFERENCIA ................................................................................................ 13

9.1. MARCO TEÓRICO ....................................................................................................... 13

7.1.1 Lenguaje Python: ........................................................................................................ 13

7.1.2 Interfaz gráfica ............................................................................................................ 13

7.1.3 Tkinter ........................................................................................................................ 14

7.1.4 wxPython .................................................................................................................... 15

7.1.5 PyQt: ........................................................................................................................... 16

7.1.6 Add – In (Complemento) ............................................................................................ 16

7.1.7 Oleoducto.................................................................................................................... 16

7.1.8 Vasos comunicantes ................................................................................................... 17

7.1.9 ILI (In – line inspection) ............................................................................................. 18

7.1.10 Válvula de seccionamiento ......................................................................................... 18

7.1.11 Válvula de cheque ...................................................................................................... 18

7.1.12 IDE.............................................................................................................................. 19

Page 4: APLICACIÓN MÓVIL PARA LA OPTIMIZACIÓN DE RUTAS DE VEHÍCULOS DE CARGA EN LA …repository.udistrital.edu.co/bitstream/11349/6363/1... · 2019-08-26 · usando una integral de volumen

4

7.1.13 Matplotlib ................................................................................................................... 19

10. MÉTODOS Y DATOS ...................................................................................................... 20

8. RESULTADOS..................................................................................................................... 43

10. BIBLIOGRAFÍA ............................................................................................................... 54

TABLA DE ILUSTRACIONES

Figura No.1 Vasos comunicantes ............................................................................................. 17

Figura No.2 Ubicación de la consola de comandos de Python ................................................. 20

Figura No.3 Hola mundo usando Tkinter ................................................................................. 20

Figura No.4. Error al ejecutar fracción de código de una interfaz ............................................ 21

Figura No.5. Formulario en Tkinter .......................................................................................... 21

Figura No.6. IDE Visual Python ............................................................................................... 22

Figura No.7. Hola mundo usando wxPython ............................................................................ 22

Figura No.8. IDE wxForm Builder ........................................................................................... 24

Figura No.9. Hola mundo usando PyQt .................................................................................... 24

Figura No.10. IDE QtDesigner ................................................................................................. 26

Figura No.11. Configuración de la variable de entorno............................................................ 27

Figura No.12. Archivos creados usando el asistente de Add – In para Python ........................ 28

Figura No.13. Visualización del Add – In instalado dentro e ArcMap .................................... 29

Figura No.14. Perfil usado para el análisis ............................................................................... 32

Figura No.15. Descripción del cálculo del volumen derramado .............................................. 33

Figura No.16. Volumen real derramado ................................................................................... 34

Figura No.17. Volumen cilindro inclinado ............................................................................... 35

Figura No.18. Caso número 1 ................................................................................................... 36

Page 5: APLICACIÓN MÓVIL PARA LA OPTIMIZACIÓN DE RUTAS DE VEHÍCULOS DE CARGA EN LA …repository.udistrital.edu.co/bitstream/11349/6363/1... · 2019-08-26 · usando una integral de volumen

5

Figura No.19. Caso número 2 ................................................................................................... 37

Figura No.20. Caso número 3 ................................................................................................... 37

Figura No.21. Caso número 4 ................................................................................................... 38

Figura No.22. Caso número 5 ................................................................................................... 38

Figura No.23. Caso número 6 ................................................................................................... 39

Figura No.24. Caso número 7 ................................................................................................... 39

Figura No.25. Caso número 8 ................................................................................................... 40

Figura No.26. Caso número 9 ................................................................................................... 40

Figura No.27. Caso número 10 ................................................................................................. 40

Figura No.28. Desarrollo final de la interfaz gráfica ................................................................ 43

Figura No.29. Sección 1 interfaz gráfica .................................................................................. 44

Figura No.30. Sección 2 interfaz gráfica .................................................................................. 44

Figura No.31. Sección 3 interfaz gráfica .................................................................................. 45

Figura No.32. Sección 4 interfaz gráfica .................................................................................. 45

Figura No.33. Informe pdf generado usando reportlab............................................................. 46

Figura No.34. Informe Excel generado..................................................................................... 47

Figura No.35. Perfil de volúmenes de derrame ........................................................................ 48

Figura No.36. Comparación perfil volúmenes de derrame ....................................................... 49

Figura No.37. Selección de solo un tipo de válvula ................................................................. 49

Page 6: APLICACIÓN MÓVIL PARA LA OPTIMIZACIÓN DE RUTAS DE VEHÍCULOS DE CARGA EN LA …repository.udistrital.edu.co/bitstream/11349/6363/1... · 2019-08-26 · usando una integral de volumen

6

1. RESUMEN

El desarrollo de este trabajo consistió en dar solución a dos problemas, poder integrar con

ArcMap una librería para desarrollar interfaces GUI usando el lenguaje Python y el segundo fue

calcular el hidrocarburo derramado cuando un poliducto u oleoducto sufra una rotura total en

alguna sección, se tuvo en cuenta parámetros como el espesor, diámetro, abscisado, cotas y

ubicación de válvulas de seccionamiento y de cheque; no se tuvieron en cuenta parámetros como

tipo de sustancia transportada, viscosidad de esta, presión de bombeo y demás parámetros físicos

que pudieran dar un resultado más preciso ya que se planteó que el derrame iba a ser total.

Para desarrollar la interfaz gráfica, se tuvieron en cuenta 3 librerías, Tkinter, PyQt, y

wxPython; se realizó una comparación entre estas 3 y se escogió PyQt, la cual se ajustaba mejor

para lo que se tenía pensado programar, a lo que respecta al cálculo del volumen aproximado

derramado se hizo uso del principio de vasos comunicantes, ya que el volumen que se va a

derramar va a ser el que pierda hasta que el sistema se encuentre en equilibrio, esto generó 10

posibles casos en que se puede derramar el hidrocarburo transportado, este volumen se calculó

usando una integral de volumen la cual depende de un ángulo de inclinación, la longitud de la

sección analizada y la altura del líquido, con esto se pudo obtener un valor aproximado de la

cantidad de hidrocarburo que se puede derramar, además con estos datos se pudieron crear dos

perfiles de derrame, uno sin las válvulas funcionando y otro con el funcionamiento de estas

Palabras clave

Poliducto, oleoducto, válvulas, derrame, hidrocarburo, abscisas, cota, diámetro, espesor,

calculadora

Page 7: APLICACIÓN MÓVIL PARA LA OPTIMIZACIÓN DE RUTAS DE VEHÍCULOS DE CARGA EN LA …repository.udistrital.edu.co/bitstream/11349/6363/1... · 2019-08-26 · usando una integral de volumen

7

2. ABSTRACT

The development of this work was to solve two problems, to integrate with ArcMap a

library to develop GUI interfaces using the Python language and the second was to calculate the

hydrocarbon spilled when a pipeline or pipeline undergoes a total break in any section, In

account parameters such as thickness, diameter, abscissa, dimensions and location of sectioning

and check valves; No parameters were taken into account such as type of substance transported,

viscosity of this, pumping pressure and other physical parameters that could give a more precise

result.

To develop the graphical interface, we took into account 3 libraries, Tkinter, PyQt, and

wxPython; A comparison was made between these 3 and PyQt was chosen, which was better

adjusted for what was planned to be planned, as regards the calculation of the approximate

volume shed using the principle of communicating vessels, since the volume that is Is going to

be the one that loses until the system is in equilibrium, this generated 10 possible cases in which

the hydrocarbon can be transported, this volume was calculated using a volume integral which

depends on an angle of inclination, the Length of the analyzed section and the height of the

liquid, with this it was possible to obtain an approximate value of the amount of hydrocarbon

that can be spilled, besides with this data two profiles of spill could be created, one without the

valves in operation and another with the Operation of these

Keywords

Polyduct, pipeline, valves, spill, hydrocarbon, abscissa, dimension, diameter, thickness,

Calculator

Page 8: APLICACIÓN MÓVIL PARA LA OPTIMIZACIÓN DE RUTAS DE VEHÍCULOS DE CARGA EN LA …repository.udistrital.edu.co/bitstream/11349/6363/1... · 2019-08-26 · usando una integral de volumen

8

3. INTRODUCCIÓN

Los oleoductos son la manera más óptima para el transporte de hidrocarburos en tierra, ya

que se puede llevar una gran cantidad de hidrocarburo de un lugar a otro a un bajo costo, en

comparación de otros medios de transporte como carro – tanques o ferrocarriles (resolución

72145. Ministerio de minas y energía. 7 de mayo de 2014); al construir estos sistemas, se pueden

hacer sobre la tierra, o dejarlos enterrados bajo la superficie alrededor de un metro, esto debido a

que están cerca de un área poblada, o con flora sensible.

En Colombia al tener un conflicto interno armado un atentado militar a este de tipo de

infraestructura resulta en desastres ecológicos y perdidas económicas enormes, pero el daño a los

oleoductos no solamente puede ser por este tipo de acciones, también se puede dar por

fenómeno de la naturaleza, como una remoción en masa o una inestabilidad en el terreno, a su

vez por un fallo técnico en el sistema, como lo puede ser una rotura en este, un taponamiento, un

daño en las válvulas de regulación o hasta por la perforación para poder hurtar el hidrocarburo

en el cual se puede generar un daño mayor al oleoducto. Esto nos hace pensar que cuando pase

algún evento de los mencionados, cuánto hidrocarburo se puede derramar en el punto de rotura, y

así de esta manera poder hacerse una idea de la dimensión de la emergencia; esto es de gran

importancia para la empresa Varichem de Colombia, ya que al ser una de las compañías más

reconocidas a nivel nacional en la atención de derrame de hidrocarburos puede hacerse una

estimación de la cantidad de equipo y personal que se tiene que movilizar para controlar dicha

emergencia.

Page 9: APLICACIÓN MÓVIL PARA LA OPTIMIZACIÓN DE RUTAS DE VEHÍCULOS DE CARGA EN LA …repository.udistrital.edu.co/bitstream/11349/6363/1... · 2019-08-26 · usando una integral de volumen

9

4. ANTECEDENTES

Tomando la definición de oleoducto como todas las instalaciones físicas necesarias para

el transporte de crudo fiscalizado desde los nodos de entrada hasta los nodos de salida

incluyendo, entre otros, la tubería, las unidades de bombeo, las estaciones de medición, los

sistemas de control y los tanques que se usan para la operación del oleoducto y teniendo en

cuenta las posibles afectaciones que este puede tener como lo es una rotura en algún tramo

causados por un atentado terrorista, evento de tipo natural (remoción en masa, evento geológico,

inundación etc.) o falla de funcionamiento en la infraestructura (daño de válvulas, taponamiento,

desgaste etc.), estos eventos provocan un derrame en el punto afectado, dañando los ecosistemas

alrededor y provocando pérdidas económicas enormes, solo es recordar el derrame de petróleo en

el golfo de México el 22 de abril de 2010, el cual es el mayor desastre natural de la historia

causado por vertimiento de hidrocarburo.

A lo que se refiere en el caso colombiano es solo recordar la gran cantidad de ataques a la

infraestructura petrolera, principalmente en los departamentos de Nariño, Santander, Putumayo

y Arauca, en donde se han visto afectada las fuentes hídricas, así fue como ocurrió el 22 de junio

del año 2015 en Tumaco con el atentado al oleoducto transandino (OTA), en el cual se

derramaron alrededor de 410.000 galones, afectando fuentes hídricas como la quebrada Pianulpí

que surte al Río Guisa y a su vez al Río Mira, además dejando sin abastecimiento de agua a

alrededor de 160.000 habitantes del municipio; este acto fue considerado como uno de los

mayores desastres ambientales de los últimos 10 años en el país, desafortunadamente no ha sido

el único daño que se le ha hecho a la infraestructura petrolera, también se le suman los atentados

que han sufrido otros oleoductos como Caño limón – Coveñas (Arauca – Sucre), oleoducto

Page 10: APLICACIÓN MÓVIL PARA LA OPTIMIZACIÓN DE RUTAS DE VEHÍCULOS DE CARGA EN LA …repository.udistrital.edu.co/bitstream/11349/6363/1... · 2019-08-26 · usando una integral de volumen

10

Churuyaco – Orito (OCHO) y oleoducto San Miguel Orito (OSO), estos dos ubicados en el

departamento de Putumayo.

En dichas eventualidades es necesario movilizar equipo y personal para atender la

emergencia, en ocasiones no se puede saber a ciencia cierta la cantidad de hidrocarburo que se

puede derramar en las fuentes hídricas o el suelo, esto hace que se creen los planes de

emergencia (PDE) en los cuales se establece las directrices para actuar frente a dicho incidente,

todos estos planes se crean y modelan planteando escenarios y teniendo en cuenta variables

ambientales, sociales y socioeconómicas; para apoyar estos planes de emergencia se crea la

necesidad de generar una herramienta que sea capaz de determinar la cantidad aproximada de

hidrocarburo que se pueda derramar por una de las eventualidades anteriormente mencionadas.

5. JUSTIFICACIÓN

El desarrollo de aplicaciones SIG por parte de los usuarios se ha convertido en una

poderosa herramienta para solucionar tareas específicas, un ejemplo claro es QGIS y GvSIG, los

cuales pueden ser modificados libremente. En las versiones de ArcGIS se ha abierto esta

posibilidad, poder desarrollar algunas herramientas de manera personalizada, es el caso de model

builder, el cual nos permite crear una secuencia de geoprocesos para llegar a un resultado

determinado, pero este se queda corto si queremos modificar nuestras variables de alguna manera

especial o una combinación de geoprocesos; para solucionar esto, es necesario utilizar el paquete

de Python que viene instalado con ArcGIS, el cual lo conocemos como ArcPy, este módulo nos

permite acceder a las herramientas de geoprocesamiento, y propiedades de los elementos que

están en un Map Document de ArcGIS o alojados en el computador, esto nos permite desarrollar

cajas de herramientas de geoprocesamiento. A pesar de esto una de las mayores desventajas es

que estamos obligados a utilizar el asistente de creación de herramientas, y utilizar solo las

Page 11: APLICACIÓN MÓVIL PARA LA OPTIMIZACIÓN DE RUTAS DE VEHÍCULOS DE CARGA EN LA …repository.udistrital.edu.co/bitstream/11349/6363/1... · 2019-08-26 · usando una integral de volumen

11

variables que tiene soportado ArcGIS, esto nos limita si queremos desarrollar una herramienta

desde cero que cumplan con todas nuestras necesidades. Ahora surge la pregunta si queremos

desarrollar una herramienta que satisfaga nuestras necesidades, ¿cómo lo podríamos hacer?. Para

dar respuesta a esta pregunta es necesario ver unas de las librerías que usan Python para

desarrollar aplicaciones, las cuales son: wxPython, Tkinter, PyGtk, PyObject, y PyQt, estas

librerías nos permiten desarrollar aplicaciones personalizadas como interfaces gráficas que nos

ayudan a administrar los parámetros entre el usuario y el SIG de escritorio, además de poder

mostrar los resultados de una manera más fácil de entender.

6. PREGUNTAS E HIPÓTESIS

6.1. Preguntas

¿Cómo se pueden desarrollar herramientas personalizadas que se puedan ejecutar dentro ArcMap

programadas bajo el lenguaje Python?

¿Cuáles son las librerías que usa Python para desarrollar dichas herramientas?

¿Cuáles son las librerías que usa Python para el desarrollo de interfaces GUI, cuál es la mejor

elección y por qué?

¿De qué forma se puede integrar una aplicación de estas a ArcMap?

6.2.Hipótesis

Cuando desarrollamos algo, ya sea una nueva investigación, una nueva metodología, o

simplemente un procedimiento, siempre pensamos en la mejor manera en la que podemos

mostrar ese resultado y dar a conocer nuestras ideas de una manera clara y concisa, además de

que cualquier persona, que aunque no sepa del tema, lo pueda entender, en nuestra era

tecnológica la mejor manera es echar mano de esa tecnología, en donde para este caso es hacer el

Page 12: APLICACIÓN MÓVIL PARA LA OPTIMIZACIÓN DE RUTAS DE VEHÍCULOS DE CARGA EN LA …repository.udistrital.edu.co/bitstream/11349/6363/1... · 2019-08-26 · usando una integral de volumen

12

uso de una interfaz gráfica que sea capaz de mostrar los resultados y sea capaz de procesar una

información específica y nos arroje el resultado esperado

7. DECLARACIÓN DEL PROBLEMA

Lograr desarrollar una herramienta personalizada bajo el lenguaje Python (Calculadora de

derrames de hidrocarburos) y que esta a su vez se pueda integrar dentro de ArcMap como un

Add – In.

8. OBJETIVOS

8.1. General

Desarrollar la calculadora de derrames de hidrocarburos bajo el lenguaje Python y que esta a su

vez se pueda integrar con ArcMap a través de un Add – in.

8.2.Específicos.

• Realizar una comparación entre las librerías Tkinter, wxPython y PyQt y seleccionar una de

estas para el desarrollo de nuestra herramienta.

• Programar la calculadora de derrames de hidrocarburos haciendo uso de la librería

seleccionada y que dicha herramienta se pueda ejecutar dentro de ArcMap mediante un Add

– In.

• Determinar la cantidad de hidrocarburo derramado cumpliendo tres posibles escenarios.

Page 13: APLICACIÓN MÓVIL PARA LA OPTIMIZACIÓN DE RUTAS DE VEHÍCULOS DE CARGA EN LA …repository.udistrital.edu.co/bitstream/11349/6363/1... · 2019-08-26 · usando una integral de volumen

13

9. MARCO DE REFERENCIA

9.1. MARCO TEÓRICO

7.1.1 Lenguaje Python:

Python es un lenguaje de programación creado por Guido Van Rossum a principio de los

años 90, el nombre de Python se debe a la comedía británica Monty Python.

Python es un lenguaje multiplataforma, por lo que se puede ejecutar en todos los sistemas

operativos, incluyendo Linux, Windows y Mac OS. Todas las librerías son iguales para todas las

plataformas, esto quiere decir que se puede hacer un programa en Windows y se puede ejecutar

en Linux sin ningún problema. Además tiene una gran compatibilidad con otros lenguajes como

lo es C, C++, Fortran, Java, Visual Basic entre otros, a esto se le suma que es fácil de escribir y

entender, tiene una estructura de indentación, la sintaxis permite crear pequeños o grandes

programas, una estructuración de datos simple, no es necesario declarar los tipos de variables que

queremos usar, también es muy fácil de corregir los errores de sintaxis, ya que al ejecutar el

programa aparecerá la línea que tiene algún tipo de problema de escritura o indentación, y por

último es un programa orientando a objetos (POO), esto quiere decir que con Python podemos

crear clases, estas a su vez tienen propiedades, se pueden declarar métodos, usar objetos para

acceder a las clases y usar la herencia al momento de crear un programa. (Fehily, Chris. Python.

Peachpit Press, 2002.)

7.1.2 Interfaz gráfica

Una interfaz gráfica se define como la forma en que el usuario se comunica con un

sistema operativo. Existen dos tipos de interfaces: modo texto y modo gráfico.

Page 14: APLICACIÓN MÓVIL PARA LA OPTIMIZACIÓN DE RUTAS DE VEHÍCULOS DE CARGA EN LA …repository.udistrital.edu.co/bitstream/11349/6363/1... · 2019-08-26 · usando una integral de volumen

14

Modo texto

Los comandos se escriben en una línea de comandos, a esto en inglés se le denomina

CLI, también se les conoce como consolas, terminales, Shell, etc. Estos comandos se introducen

a través del teclado. Un comando puede ser un programa que ejecuta determinada acción en el

sistema operativo.

Modo gráfico

Este tipo de interfaz se denomina en inglés GUI que significa interfaz gráfica de usuario.

Estas se caracterizan por mostrar imágenes y objetos gráficos tales como botones, iconos,

pestañas, etc. Todos estos elementos son intuitivos, fáciles de usar y de aprender. Para poder usar

una interfaz gráfica es necesario utilizar periféricos de entrada y salida como el teclado, ratón,

pantalla táctil, lápiz óptico, etc. (Camazón, Jesús Niño. Sistemas operativos monopuesto. Editex,

2011.)

7.1.3 Tkinter

Es un módulo que nos permite construir interfaces gráficas de usuario multiplataforma en

Python utilizando el conocido toolkit Tk. Python incluye este módulo por defecto, lo que hace

que sea un tookit muy popular. TkInter, además, es robusto, maduro y muy sencillo de aprender

y de utilizar, contando con una amplia documentación.

TkInter se distribuye bajo la PSFL (Python Software Foundation License) una licencia

compatible con la GPL creada para la distribución de software relacionado con el proyecto

Python. La PSFL carece de la naturaleza viral de la GPL, por lo que permite crear trabajos

derivados sin que estos se conviertan necesariamente en software libre.

Page 15: APLICACIÓN MÓVIL PARA LA OPTIMIZACIÓN DE RUTAS DE VEHÍCULOS DE CARGA EN LA …repository.udistrital.edu.co/bitstream/11349/6363/1... · 2019-08-26 · usando una integral de volumen

15

7.1.4 wxPython

Es un wrapper open source para el toolkit anteriormente conocido como wxWindows:

wxWidgets. wxPython es posiblemente el toolkit para desarrollo de interfaces gráficas en Python

más popular, superando incluso a TKinter, que, como comentamos, se incluye por defecto con el

intérprete de Python. wxPython cuenta con más y mejores widgets que TKinter, y ofrece un muy

buen aspecto en todas las plataformas, utilizando MFC en Windows y GTK en Linux.

wxPython cuenta además con herramientas muy interesantes como wxGlade, una

aplicación RAD para diseñar las interfaces gráficas de forma visual.

Sin embargo, la API adolece de una cierta falta de consistencia y un estilo muy alejado de

Python y más cercano a C++, ya que, de hecho, uno de sus objetivos es no distanciarse

demasiado del estilo de wxWidgets. Esto ha provocado que hayan aparecido distintos proyectos

para abstraer al programador de los entresijos del toolkit, como Dabo o Wax, aunque estos han

tenido un éxito muy comedido.

Tanto wxPython como wxWidgets se distribuyen bajo una licencia “wxWindows

Licence”, que consiste esencialmente en una LGPL con la excepción de que las obras derivadas

en formato binario se pueden distribuir como el usuario crea conveniente.

Page 16: APLICACIÓN MÓVIL PARA LA OPTIMIZACIÓN DE RUTAS DE VEHÍCULOS DE CARGA EN LA …repository.udistrital.edu.co/bitstream/11349/6363/1... · 2019-08-26 · usando una integral de volumen

16

7.1.5 PyQt:

Es posible que PyQt, el binding de Qt para Python, sea la menos popular de las tres

opciones, aunque es un toolkit sencillo de utilizar y con muchas posibilidades. Es especialmente

interesante para el desarrollo en KDE, dado que Qt es la librería utilizada para crear este entorno.

No obstante el interés en Qt no se limita a KDE, sino que es una biblioteca

multiplataforma que, además, desde la versión 4, utiliza widgets nativos para las distintas

plataformas (anteriormente Qt emulaba el aspecto de la plataforma en la que corría).

Como aplicación de RAD se puede utilizar Qt Designer.

PyQt utiliza un modelo de licencias similar al de Qt, con una licencia dual GPL/PyQt

Commercial. Si nuestro programa es compatible con la licencia GPL, es decir, si vamos a

publicar el código fuente y permitir a los usuarios modificar nuestra aplicación, podremos usar

PyQt sin más preocupaciones. En caso contrario tendremos que pagar para obtener una licencia

comercial. (“Interfaces gráficas de usuario en Python”. Mundo Geek, el 24 de noviembre de

2008.)

7.1.6 Add – In (Complemento)

Un Add – In o complemento es una utilidad de software que se instala dentro de un

programa principal para darle una nueva funcionalidad.

7.1.7 Oleoducto

Todas las instalaciones físicas necesarias para el transporte de crudo fiscalizado desde los

nodos de entrada hasta los nodos de salida incluyendo, entre otros, la tubería, las unidades de

bombeo, las estaciones de medición, los sistemas de control y los tanques que se usan para la

operación del oleoducto (“resolución 72145 de mayo 7 de 2014 -”. Consultado el 22 de marzo de

2017.)

Page 17: APLICACIÓN MÓVIL PARA LA OPTIMIZACIÓN DE RUTAS DE VEHÍCULOS DE CARGA EN LA …repository.udistrital.edu.co/bitstream/11349/6363/1... · 2019-08-26 · usando una integral de volumen

17

7.1.8 Vasos comunicantes

Se entiende por vasos comunicantes dos o más capacidades en cuyo interior puede existir

un líquido cualquiera, y que por medio de tubos o aberturas se establecen relaciones entre

aquellas capacidades. Las condiciones del equilibrio de los líquidos en los vasos comunicantes

fácilmente se determinan, recordando que dicho equilibrio no puede establecerse mientras la

superficie de las masas líquidas no se presente nivelada, y las moléculas igualmente oprimidas en

todas las direcciones. En los vasos comunicantes las condiciones físicas suponen que la masa

líquida que llena el vaso P (fig. No. 1) y los tubos comunicantes n n presentan el mismo nivel

aun cuando su forma sea diferente; porque si se supone una capa trasversal líquida x, para que

esta permanezca en equilibrio, y con ella toda la masa líquida, es necesario que el producto de la

superficie x por la altura del líquido en el depósito P sea igual al producto x por la altura n de

nivel en los tubos comunicantes; y como la superficie x es constante, las alturas de nivel en el

caso equilibrio serán iguales.

(Sinobas, Manuel Rico, y Mariano Santisteban. Manual de física y elementos de

química, 1856.)

Figura No.1 Vasos comunicantes

(Sinobas, Manuel Rico, y Mariano Santisteban. Manual de física y elementos de química. Impr., 1856.). Recuperado de

https://books.google.com.co/books?id=Gt4-

pHWnAygC&pg=PA62&dq=vasos+comunicantes+fisica&hl=es&sa=X&ved=0ahUKEwiTjsfkgOvSAhXhrVQKH

R9vBEYQ6AEIGjAA#v=onepage&q=vasos%20comunicantes%20fisica&f=false

Page 18: APLICACIÓN MÓVIL PARA LA OPTIMIZACIÓN DE RUTAS DE VEHÍCULOS DE CARGA EN LA …repository.udistrital.edu.co/bitstream/11349/6363/1... · 2019-08-26 · usando una integral de volumen

18

7.1.9 ILI (In – line inspection)

Se define como la inspección de una tubería desde el interior de esta a través de una

herramienta construida para este fin, esta herramienta puede ser un dispositivo o vehículo, es

conocida también como herramienta inteligente; esta herramienta contiene sensores que van

capturado información como la geometría de la tubería, ubicación espacial, el espesor, corrosión,

roturas u otro tipo de anomalías; este vehículo o dispositivo se puede configurar para que vaya

capturando información a una distancia determinada. (Lipták, Béla G., y Kriszta Venczel.

Measurement and Safety., 2016.)

7.1.10 Válvula de seccionamiento

Son válvulas que seccionan un tubería, controlan el paso de la sustancia transportada,

estas se ubican a lo largo de la tubería lo que hace que en caso de una reparación, un daño u otro

suceso que afecte la operación normal se puedan cerrar en los tramos requeridos y no generen un

colapso total en el sistema, a estas válvulas se les puede asociar un tiempo de cierre. Nesbitt,

Brian. Handbook of Valves and Actuators: Valves Manual International. Butterworth-

Heinemann, 2011.

7.1.11 Válvula de cheque

Estas son válvulas que se activan cuando el flujo de la sustancia transportada cambia de

dirección, este tipo de válvula a diferencia de las de seccionamiento tiene un cierre instantáneo.

Nesbitt, Brian. Handbook of Valves and Actuators: Valves Manual International. Butterworth-

Heinemann, 2011.

Page 19: APLICACIÓN MÓVIL PARA LA OPTIMIZACIÓN DE RUTAS DE VEHÍCULOS DE CARGA EN LA …repository.udistrital.edu.co/bitstream/11349/6363/1... · 2019-08-26 · usando una integral de volumen

19

7.1.12 IDE

Es un entorno de programación que ha sido empaquetado como un programa de

aplicación, es decir, consiste en un editor de código, un compilador, un depurador y un

constructor de interfaz gráfica (GUI). fergarciac. «Entorno de Desarrollo Integrado (IDE).»

fergarciac, 25 de enero de 2013. https://fergarciac.wordpress.com/2013/01/25/entorno-de-

desarrollo-integrado-ide/.

7.1.13 Matplotlib

Es una librería diseñada para Python que permite crear gráficos en 2D y 3D, esta fue

basada en Matlab, esto hace que visualmente sea muy parecida, es más sencilla que Matlab y

además se distribuye como GPL. “matplotlib tries to make easy things easy and hard things

possible”, (John Hunter, Creador de la librería)

Page 20: APLICACIÓN MÓVIL PARA LA OPTIMIZACIÓN DE RUTAS DE VEHÍCULOS DE CARGA EN LA …repository.udistrital.edu.co/bitstream/11349/6363/1... · 2019-08-26 · usando una integral de volumen

20

10. MÉTODOS Y DATOS

El primer paso para el desarrollo de la calculadora de derrames de hidrocarburos fue

seleccionar la librería que se iba integrar con ArcMap, para esto se escogieron 3 librerías

principalmente Tkinter, wxPython y PyQt, con estas librerías se pueden desarrollar interfaces

gráficas para Python, en la Tabla 1 se describe algunas características de estas.

Librería Versión

Python

Tipo de

sistema

Versión

Librería

Tipo de

licencia Instalación IDE

Tkinter 2.7 32 bits 8.5 GPL No

necesaria Visual Python

wxPython 2.7 32 bits 3.0.2.0 GPL Necesaria wxFormBuilder

PyQT 2.7 32 bits 4.11.4 GPL Necesaria QtDesigner Tabla No.1

La primera librería con la que se comenzó fue Tkinter, que como ya se ha mencionado,

esta se instala por defecto con Python. Con esta se hicieron las primeras pruebas para poder

ejecutar dentro de ArcMap una interfaz GUI haciendo uso de la consola de comandos de Python

de ArcGIS.

Esta consola de comandos se encuentra en el tab estándar de ArcMap

Figura No.2 Ubicación de la consola de comandos de Python

Con esta consola se hicieron las primeras pruebas de código y cómo se podía integrar con

ArcMap, como ya es sabido una de las primeras líneas de código con la que se comienza a

programa es el típico mensaje de “Hello World” un “Hola Mundo”, así que de esta manera se

hizo la primera GUI usando Tkinter, el resultado fue el siguiente:

Figura No.3 Hola mundo usando Tkinter

Page 21: APLICACIÓN MÓVIL PARA LA OPTIMIZACIÓN DE RUTAS DE VEHÍCULOS DE CARGA EN LA …repository.udistrital.edu.co/bitstream/11349/6363/1... · 2019-08-26 · usando una integral de volumen

21

Código usado:

from Tkinter import *

root = Tk()

w = Label(root, text="Hello, world!")

w.pack()

root.mainloop()

Al momento de ejecutar esta porción de código apareció la ventana de la figura No.3,

pero después de unos segundos ArcMap y la ventana se bloqueó y dejó de funcionar, en la Figura

No.4 se ve un error asociado a este caso.

Figura No.4. Error al ejecutar fracción de código de una interfaz

Esto supuso pensar que la librería no podría ser la indicada, ya que no presentaba una

manera estable de poder ejecutarse, y la siguiente pregunta era cómo sería si se integrara dentro

de un Add – In, aún así se ejecutaron otras porciones de código para ver los elementos visuales

de esta librería.

Figura No.5. Formulario en Tkinter

En la figura No.5 se observa un pequeño formulario con algunos componentes gráficos,

como líneas de textos, etiquetas, botones y radio botones, también se puede ver que esta librería

los componentes visualmente no tienen un buen diseño, esto es de gran importancia, ya que esto

Page 22: APLICACIÓN MÓVIL PARA LA OPTIMIZACIÓN DE RUTAS DE VEHÍCULOS DE CARGA EN LA …repository.udistrital.edu.co/bitstream/11349/6363/1... · 2019-08-26 · usando una integral de volumen

22

es lo que ve el usuario para interactuar con el computador, de esta manera se busca que una

interfaz gráfica sea visualmente agradable y fácil de manejar también.

La siguiente cuestión es tener una IDE para desarrollar la interfaz en Tkinter, hay varios

programas que se pueden usar, pero el mejor de estos es Visual Python Tkinter, esta IDE está

desarrollada en el lenguaje visual basic 6, esta IDE nos ofrece poder usar algunos elementos

como botones, labels, cuadros de textos, entre otros.

Figura No.6. IDE Visual Python

La siguiente librería en probar fue wxPython, la cual se debe instalar por aparte para que

se pueda usar, al igual que se hizo con Tkinter, lo primero que se hizo fue ejecutar fracciones de

código para mirar cuál era el comportamiento de esta dentro de ArcMap, así que se usó

nuevamente el “Hello World” u “Hola mundo” para la primera prueba.

Figura No.7. Hola mundo usando wxPython

Page 23: APLICACIÓN MÓVIL PARA LA OPTIMIZACIÓN DE RUTAS DE VEHÍCULOS DE CARGA EN LA …repository.udistrital.edu.co/bitstream/11349/6363/1... · 2019-08-26 · usando una integral de volumen

23

La porción de código que se usó fue la siguiente:

#!/usr/bin/env python

import wx

class TestFrame(wx.Frame):

def __init__(self, parent, ID, title):

wx.Frame.__init__(self, parent, wx.ID_ANY, title, pos=(0, 0),

size=(320, 240))

panel = wx.Panel(self, wx.ID_ANY)

text = wx.StaticText(panel, wx.ID_ANY, "Hello, World!", wx.Point(10,

5), wx.Size(-1, -1))

class TestApp(wx.App):

def OnInit(self):

frame = TestFrame(None, wx.ID_ANY, "Hello, world!")

self.SetTopWindow(frame)

frame.Show(True)

return True

if __name__ == '__main__':

app = TestApp()

app.MainLoop()

Como se observa en la figura No.7 la interfaz es visualmente más agradable, se ajusta al

diseño de la versión que se esté usando de Windows; al utilizar el código de la parte superior se

encontró un inconveniente, el solo hecho de importar la librería generaba un error grave y

ArcGIS se bloqueaba por completo, pero esto no ocurría siempre y tampoco en el mismo

computador, si esta librería se instalaba en otra máquina no generaba ningún tipo de problema, lo

cual se hizo suponer que la manera en que se estaba ejecutando el código no era la manera

correcta para que se pudiera ejecutar con ArcMap.

Al igual que con Tkinter se buscó una IDE para poder diseñar la interfaz y generar el

código correspondiente, para wxPython la mejor opción que se encontró fue wxFormBuilder, la

cual esa una IDE que va generando el código de Python cuando ponemos una widget, esta IDE

tiene una gran funcionalidad, se pueden ajustar las propiedades de los elementos y el código va

Page 24: APLICACIÓN MÓVIL PARA LA OPTIMIZACIÓN DE RUTAS DE VEHÍCULOS DE CARGA EN LA …repository.udistrital.edu.co/bitstream/11349/6363/1... · 2019-08-26 · usando una integral de volumen

24

apareciendo en pantalla, además de esto es capaz de generar códigos de otros lenguajes de

programación como lo son C++, PHP, LUA, y HCR.

Figura No.8. IDE wxForm Builder

Como se observa en la figura No.8 wxForm Builder genera el código de Python cuando

se arrastra algún elemento al espacio de trabajo.

Finalmente se probó la tercera librería PyQt, la cual que al igual que wxPython se

necesita descargar e instalar para poder usarla, y ya como se hizo previamente se realizó la

ejecución de una pequeña línea de código dentro de la consola de comandos de ArcMap en

donde se hizo de la misma manera con “Hello World” u “Hola mundo”.

Figura No.9. Hola mundo usando PyQt

Page 25: APLICACIÓN MÓVIL PARA LA OPTIMIZACIÓN DE RUTAS DE VEHÍCULOS DE CARGA EN LA …repository.udistrital.edu.co/bitstream/11349/6363/1... · 2019-08-26 · usando una integral de volumen

25

El código usado fue el siguiente:

import sys

from PyQt4 import QtGui

def window():

app = QtGui.QApplication(sys.argv)

w = QtGui.QWidget()

b = QtGui.QLabel(w)

b.setText("Hello World!")

w.setGeometry(100,100,200,50)

b.move(50,20)

w.setWindowTitle(“PyQt”)

w.show()

sys.exit(app.exec_())

if __name__ == '__main__':

window()

Como se observa en la Figura No.9 el diseño de la interfaz gráfica es bastante parecido al

de wxPython, por no decir que igual; esto hace que se piense en escoger entre wxPython y PyQt.

Una de las principales cosas que se evidenció fue que PyQt fue la librería más estable de

las tres, aunque en ocasiones también bloqueaba por completo a ArcMap, esto era menos

frecuente que con Tkinter y wxPython. Al igual que con wxPython se buscó una IDE con la que

fuera más fácil programar la interfaz, la ventaja fue que al momento de instalar PyQt, se instala

una IDE la cual se llama QtDesigner, esta al igual que wxForm Builder, es bastante potente para

diseñar interfaces gráficas; el único inconveniente que se encontró fue que tiene un archivo

nativo de extensión .ui el cual al momento de abrirlo el código que se encuentra está escrito en

xml, pero la conversión al lenguaje Python es de manera rápida.

Page 26: APLICACIÓN MÓVIL PARA LA OPTIMIZACIÓN DE RUTAS DE VEHÍCULOS DE CARGA EN LA …repository.udistrital.edu.co/bitstream/11349/6363/1... · 2019-08-26 · usando una integral de volumen

26

Figura No.10. IDE QtDesigner

Como se presenta en la figura No.10 la IDE de Qt es bastante completa, tiene la

posibilidad de crear distintos formularios y lo más importante es que podemos ir viendo cómo va

quedando lo que estamos programando, esto se parece mucho a otras IDE como netbeans o

eclipse, además de se puede generar pequeñas fracciones de Python en esta.

Viendo las tres librerías Tkinter, wxPython, y PyQt y teniendo en cuenta uno de los

principales parámetros que era la estabilidad al momento de ejecutarse dentro de ArcMap se

seleccionó PyQt, pero también como ya se ha mencionado cuando se estaba analizando

wxPython es posible que con esta librería no se estuviera usando el código de manera correcta

para que ArcMap no se bloqueara y dejara de funcionar por completo, así que otro parámetro que

se tuvo en cuenta fue la IDE con la que se programó la interfaz gráfica, y como se observó

QtDesigner es más potente que wxForm Builder para este caso en particular.

Con la librería ya seleccionada lo siguiente fue poder crear ese Add – In o complemento

que se pudiera integrar con ArcMap y traducir el archivo que crea QtDesigner a Python. Lo

primero que se solucionó fue poder traducir ese archivo de extensión .ui a un archivo de

extensión .py, este paso es bastante sencillo el cual se realizó de la siguiente manera:

Page 27: APLICACIÓN MÓVIL PARA LA OPTIMIZACIÓN DE RUTAS DE VEHÍCULOS DE CARGA EN LA …repository.udistrital.edu.co/bitstream/11349/6363/1... · 2019-08-26 · usando una integral de volumen

27

1- Crear una variable de enterno en el equipo, esta variable puede tener cualquier

nombre, pero en el valor de la variable debe tener esta dirección

C:\Python27\ArcGIS10.3\Lib\site-packages\PyQt4, en donde la versión de ArcGIS o

PyQT puede cambiar, en este caso se puede ver que se usó la versión 10.3 de ArcGIS

y la versión 4 de PyQt.

Figura No.11. Configuración de la variable de entorno

2- Con la variable de entorno ya creada lo siguiente fue acceder al símbolo del sistema

de Windows, a esta se puede acceder escribiendo “cmd” en el buscador de Windows,

aparecerá la aplicación y se tendrá que ir a la carpeta donde está contenida, en esta

aparecerá un acceso directo, este acceso directo se debe copiar y pegar en donde está

el archivo .ui que se creó con QtDesigner, con este acceso directo se ajusta en las

propiedades y aparecerá una opción que dice “iniciar en”, la dirección que se

encuentra en este espacio se sustituye por la dirección de la carpeta en donde se

encuentra el archivo .ui.

3- Finalmente se convierte el archivo .ui a .py con el símbolo de sistema que se copió a

la carpeta, la línea de código que se usó fue la siguiente: %qt%/pyuic4

InterfazCalcDerr.ui > InterfazCalcDerr.py, en donde se escribe el nombre del archivo

Page 28: APLICACIÓN MÓVIL PARA LA OPTIMIZACIÓN DE RUTAS DE VEHÍCULOS DE CARGA EN LA …repository.udistrital.edu.co/bitstream/11349/6363/1... · 2019-08-26 · usando una integral de volumen

28

de extensión .ui y el nombre del archivo de extensión .py, es muy importante que no

existan espacios en los nombres de ambos archivos.

Ya con el archivo de extensión .py creado, se pasó a la parte en donde se debía integrar

este con un Add – In e instalarlo dentro de ArcMap.

ESRI para crear estos complementos tiene el asistente de Add -In para Python el cual

ayuda a crear botones, menús, toolbar, y otros complementos que al momento de instalar se

agregan como nuevas funcionalidades, para este caso se creó un botón el cual iba a llamar el

código de la interfaz que se había creado. El resultado es el siguiente:

Figura No.12. Archivos creados usando el asistente de Add – In para Python

Como se observa en el figura No.12 hay cuatro archivos y 2 carpetas, la carpeta

“Images” tiene la imagen con la que queremos que se vea nuestro complemento dentro de

ArcMap, en la carpeta “Install”, están contenidoas los módulos de Python e imágenes que son

necesarios para el funcionamiento del Add – In, el archivo “config” , tiene la configuración del

Add – In creado, como el nombre, versión, identificador único, tipo de Add – In y demás

información relacionada, el archivo “makeaddin”, es un ejecutable que es el encargado de crear

un archivo de extensión .esriaddin, este es el instalador del Add – In, este es un comprimido el

cual contiene los archivos que estén dentro de las carpetas “Images” e “Install”, cuando este se

ejecuta descomprime estos archivos en la siguiente ubicación:

Page 29: APLICACIÓN MÓVIL PARA LA OPTIMIZACIÓN DE RUTAS DE VEHÍCULOS DE CARGA EN LA …repository.udistrital.edu.co/bitstream/11349/6363/1... · 2019-08-26 · usando una integral de volumen

29

C:\Users\User\AppData\Local\ESRI\Desktop10.x\AssemblyCache\{86DBC510-67A5-

48F2-AC3D-46F4302CDBCA}, los valores que se encuentran dentro de los corchetes,

corresponde al identificador del Add – In instalado, para saber esta dirección se puede escribir el

comando sys.path en la consola de comandos de ArcMap y listará las rutas de los Add – In o

complementos que estén instalados en dicho computador.

Cuando se abra ArcMap el botón para ejecutar la calculadora de derrames se ve de la

siguiente forma:

Figura No.13. Visualización del Add – In instalado dentro e ArcMap

Con el Add – In creado, el paso siguiente fue poder ejecutar con este el código de la

interfaz gráfica, lo primero que se hizo fue poner el código dentro del archivo que el asistente de

Add – In crea por defecto, el cual tiene el nombre del proyecto seguido de la palabra _addin, este

es el archivo de Python que se asocia con el botón que se observa en la Figura No.13, cuando se

hizo de esta forma la interfaz se desplegaba pero al momento de manipularla, cerrar e intentar

volver abrir ArcMap se bloqueaba por completo, para darle solución este problema se modificó

el código de la siguiente manera:

Page 30: APLICACIÓN MÓVIL PARA LA OPTIMIZACIÓN DE RUTAS DE VEHÍCULOS DE CARGA EN LA …repository.udistrital.edu.co/bitstream/11349/6363/1... · 2019-08-26 · usando una integral de volumen

30

import arcpy

import pythonaddins

import os

import sys

sys.path.append(os.path.dirname(__file__))

from PyQt4 import QtGui

import traceback

class Main_Calculadora(object):

"""Implementation for CalculadoraDerrames_addin.button (Button)"""

def dlg(self):#Nombre la función

self._PyQt4App = None#Variable

self._dlg = None#Variable

if self._dlg is None:

from Interfaz_Calculadora_Vol_Real import Ui_MainWindow#Importa la

librería

self._PyQt4App = QtGui.QApplication([''])#Creación de una variable de

tipo app

self._MainW = QtGui.QMainWindow()#Creación de una variable tipo Window

self._dlg = Ui_MainWindow()#Clase principal

self._dlg.setupUi(self._MainW)#Ejecución de la función

self._MainW.show()#Muestra la interfaz

return self._dlg

def __init__(self):

self.enabled = True

self.checked = False

def onClick(self):

try:

self.dlg()

except Exception as e:

tb = sys.exc_info()[2]

tbinfo = traceback.format_tb(tb)[0]

self.pymsg = "PYTHON ERRORS:\nTraceback info:\n" + tbinfo + "\nError

Info:\n" + str(sys.exc_info()[1]) + "\n"

self.msgs = "ArcPy ERRORS:\n" + arcpy.GetMessages(2) + "\n\n"

pythonaddins.MessageBox(self.pymsg + self.msgs, "Error execute", 0)

El código que se muestra en la parte superior fue el que ayudó a que cuando se ejecutara

el Add – In no generara ningún problema y ArcMap siguiera funcionando, y como ya se había

mencionado con wxPython también se tenía el mismo problema, se puede hacer de una manera

similar dando el mismo resultado que con PyQt.

Como nota importante en la línea self._PyQt4App = QtGui.QApplication(['']) si se busca

en la documentación se hace usa la librería sys para crear la variable de application, y el método

argv el cual es una lista de argumentos; guiándose por la documentación la línea de código sería

Page 31: APLICACIÓN MÓVIL PARA LA OPTIMIZACIÓN DE RUTAS DE VEHÍCULOS DE CARGA EN LA …repository.udistrital.edu.co/bitstream/11349/6363/1... · 2019-08-26 · usando una integral de volumen

31

de la siguiente forma: self._PyQt4App = QtGui.QApplication(sys.argv), pero en ocasiones

ArcMap no encuentra el método argv de la librería sys; este fue uno los inconvenientes que

también se encontraron al momento de desarrollar la aplicación ya que sin esto es imposible

ejecutar la interfaz en ArcMap.

Con esto solucionado el siguiente paso fue desarrollar el algoritmo para que calculara el

volumen aproximado de hidrocarburo que se derrama cuando un poliducto sufra una rotura

totalmente. Para darle solución a este problema se usó el principio de los vasos comunicantes el

cual nos dice que: “Se entiende por vasos comunicantes dos o más capacidades en cuyo interior

puede existir un líquido cualquiera, y que por medio de tubos o aberturas se establecen relaciones

entre aquellas capacidades”. Esto nos quiere decir que para poder calcular el volumen de

hidrocarburo que se puede derramar debemos tener en cuenta que es el volumen que va a ser

drenado hasta que el sistema quede en equilibrio y también como ya se ha dicho anteriormente

no se va a tener en cuenta presión de bombeo, viscosidad, tipo de sustancia transportada y demás

variables físicas que pueda dar un resultado más exacto, ya que con esta calculadora se plantea

poder calcular el volumen de derrame en el peor escenario posible.

Con estas ideas claras el primer paso fue tener el perfil de un ducto en el que se pudieran

plantear los siguientes tres escenarios:

- El primer escenario se calculará el volumen derramado en toda la longitud del poliducto

debido a la fuerza de gravedad, sin tener en cuenta las válvulas de seccionamiento y cheque

y el volumen que se derrame hasta que estas se cierren.

- El segundo escenario se tendrá en cuenta las válvulas que se encuentre a lo largo del

poliducto, principalmente se analizaran las válvulas de seccionamiento y cheque, pero sin

tener en cuenta el tiempo de cierre de estas.

Page 32: APLICACIÓN MÓVIL PARA LA OPTIMIZACIÓN DE RUTAS DE VEHÍCULOS DE CARGA EN LA …repository.udistrital.edu.co/bitstream/11349/6363/1... · 2019-08-26 · usando una integral de volumen

32

- El tercer escenario se tendrá en cuenta las válvulas de seccionamiento y cheque, además

de esto se calculará el volumen derramado aproximado hasta que las válvulas

seccionamiento se cierren en su totalidad.

Para comenzar a programar estos escenarios, se creó un perfil con datos aleatorios y con

solo 28 puntos, esto con el fin de que pudiera facilitar el análisis y ver los cambios de pendiente

que puede tener el ducto, además del perfil se requieren los datos del diámetro del ducto y el

espesor de este, ya que son los datos que se obtienen de la ILI y son necesarios para calcular

dicho volumen

Figura No.14. Perfil usado para el análisis

Una vez con el perfil se comenzó con el desarrollo del problema, para esto se definió un

punto de rotura con el cual se iba a tener un punto de referencia para analizar las secciones en

que se iba a derramar un volumen determinado de hidrocarburo, para esto se ubicaron roturas en

los vértices o puntos con los que ya se sabía las coordenadas, esto con el objetivo de conocer la

cota de elevación ya que todo lo que esté por encima de dicha cota va a derramarse por el efecto

de la gravedad, esto basándose en el principio vasos comunicantes que ya se había mencionado

anteriormente, así que el resultado fue el siguiente:

Page 33: APLICACIÓN MÓVIL PARA LA OPTIMIZACIÓN DE RUTAS DE VEHÍCULOS DE CARGA EN LA …repository.udistrital.edu.co/bitstream/11349/6363/1... · 2019-08-26 · usando una integral de volumen

33

Figura No.15. Descripción del cálculo del volumen derramado

Como se observa en la figura No.15 se hizo un punto de rotura en la abscisa 450 la cual

tiene una cota de 295 unidades, lo siguiente que se hizo fue analizar cuáles eran las secciones que

se iban a derramar, además se le dio un sentido de análisis, el cual se asumió que el flujo va en la

dirección de izquierda a derecha, con esto se va a definir el volumen que se va a derramar aguas

abajo y aguas arriba, esto quiere decir el volumen que se derrama antes de la ubicación de la

rotura y el volumen que se va a derramar después de la rotura.

Para el caso de aguas abajo la primera sección que se va a derramar está comprendida

entre los tramos de 450 y 650, ya que en estas secciones se encuentran cotas por encima del

punto de rotura, a su vez se hace un cambio de cota de referencia en la abscisa 650 ya que el

siguiente punto tiene un cambio de cota, así que la nueva cota de referencia va a ser 468

unidades, esta cota se proyecta hasta que se encuentre una sección que esté por encima de esta,

así ocurre en la abscisa 841 en donde llega al proyectar esa cota de referencia, así que habrá un

cambio de cota en la abscisa 850 que será de 488 unidades, de esta manera se vuelve a proyectar

hasta llegar a la abscisa 1399, este proceso se repite hasta analizar todo el perfil del ducto; a lo

que se refiere a aguas arriba será de la misma manera, se derramará lo que esté por encima de las

cotas de referencia hasta llegar al punto de origen; de una manera sencilla el volumen será

calculado de la siguiente manera:

Page 34: APLICACIÓN MÓVIL PARA LA OPTIMIZACIÓN DE RUTAS DE VEHÍCULOS DE CARGA EN LA …repository.udistrital.edu.co/bitstream/11349/6363/1... · 2019-08-26 · usando una integral de volumen

34

Aplicando la fórmula del cilindro: 𝜋 ∗ 𝑅2 ∗ 𝐻 en donde:

R = Es el radio del ducto, el cual se obtiene de los datos del diámetro y espesor del ducto.

H = la longitud total acumulada de las secciones en donde se va a derramar el

hidrocarburo.

Aplicando esta fórmula y la metodología anteriormente mencionada se puede obtener el

volumen aproximado que se puede derramar en un ducto, pero como se puede observar en la

figura No.15, los cambios de pendientes son demasiados abruptos y además de esto se está

asumiendo que el derrame va a ser total, es decir se está omitiendo cuando pase el caso en que el

ducto se derrame de manera parcial, para que se entienda de una mejor manera se explica con la

siguiente figura.

Figura No.16. Volumen real derramado

Como se observa en la figura No.16, no se derrama el 100% de la sección y este no se

puede calcular usando la fórmula del volumen del cilindro lo que hace necesario realizar el

cálculo mediante la siguiente integral de volumen.

(1)𝑉 = 𝑅2

2∫ 𝜃(𝑥) − 𝑠𝑒𝑛𝜃(𝑥)𝑑𝑥

𝐿

0

En donde 𝜃(𝑥) = 2𝑎𝑟𝑐𝑜𝑠𝑅−ℎ

𝑅= 2𝑎𝑟𝑐𝑜𝑠

𝑅−(𝑥 tan 𝛼+ℎ0)

𝑅

α = ángulo de inclinación

ℎ0 = nivel del líquido en la parte superior

Page 35: APLICACIÓN MÓVIL PARA LA OPTIMIZACIÓN DE RUTAS DE VEHÍCULOS DE CARGA EN LA …repository.udistrital.edu.co/bitstream/11349/6363/1... · 2019-08-26 · usando una integral de volumen

35

Substituyendo:

(2)𝑉 = 𝑅2 ∫ 𝑎𝑟𝑐𝑜𝑠 𝑢 − 𝑢√1 − 𝑢2𝐿

0

𝑑𝑥 = 𝑅3

tan 𝛼∫ 𝑎𝑟𝑐𝑜𝑠 𝑢 − 𝑢 √1 − 𝑢2𝑑𝑢

𝑢𝐿

𝑢0

En donde se tiene que:

𝑢 = 𝑅−(𝑥 tan 𝛼+ℎ0)

𝑅

Si se toma la solución de la integral

(3)𝑉 = −𝑅3

tan 𝛼(𝑢 𝑎𝑟𝑐𝑜𝑠 𝑢 −

1

3√1 − 𝑢2(𝑢2 + 2))|𝑢0

𝑢𝐿

= 𝑅3

tan 𝛼(𝐾 𝑎𝑟𝑐𝑜𝑠 𝐾 −

1

3√1 − 𝐾2(𝐾2 + 2) − [𝐾 −

𝐿 tan 𝛼

𝑅] 𝑎𝑟𝑐𝑜𝑠 [𝐾 −

𝐿 tan 𝛼

𝑅]

+1

3√1 − [𝐾 −

𝐿 tan 𝛼

𝑅]

2

([𝐾 − 𝐿 tan 𝛼

𝑅]

2

+ 2))

En donde 𝐾 = 1 −ℎ0

𝑅

Figura No.17. Volumen cilindro inclinado

“Calculadora en línea: Volumen de un tanque cilíndrico inclinado”. Consultado el 3 de abril de 2017.

https://es.planetcalc.com/1442/?language_select=es.

La figura No.17 muestra la porción de volumen que se va a calcular cuando el cilindro

tiene un ángulo de inclinación, aunque si se observa la figura el volumen que se tiene que

calcular es la parte que se va a derramar y no la que va a quedar en el ducto, pero a su vez

aunque no sea de forma directa, al volumen del cilindro se le resta este volumen y se obtiene el

valor del volumen que se quiere calcular.

Page 36: APLICACIÓN MÓVIL PARA LA OPTIMIZACIÓN DE RUTAS DE VEHÍCULOS DE CARGA EN LA …repository.udistrital.edu.co/bitstream/11349/6363/1... · 2019-08-26 · usando una integral de volumen

36

Ya con esto solucionado la siguiente fase fue desarrollar los posibles casos en que el

ducto puede perder el hidrocarburo que transporta, esto quiere decir qué pasa si la cota de

referencia corta al ducto y este tiene un ángulo α, pero luego tiene un β, esto genera varias

posibilidades que se analizaron dando como resultado 10 posibles casos de geometría, en estos

casos se tiene en cuenta directamente el radio del ducto, este puede ir variando de acuerdo al

espesor que fue obtenido de los datos de la ILI; los posibles casos se solucionan a continuación.

Caso No.1

Este caso fue el más fácil de calcular de todos, ya que es cuando se derrama toda la

porción comprendida entre dos abscisas continuas lo que se reduce solo a calcular el volumen

total de un cilindro:

𝑉 = 𝜋 ∗ 𝑅2 ∗ 𝐻

Figura No.18. Caso número 1

La figura No.18 muestra el caso 1, en esta se puede observar que la totalidad del volumen

contenida entres dos abscisas continuas se va a derramar, esto se debe a que se encuentra

completamente por encima de la cota de referencia y como se había mencionado anteriormente,

todo lo que se encuentre por encima de la cota de referencia se va a derramar por efecto de la

gravedad hasta que el sistema quede en equilibrio.

Page 37: APLICACIÓN MÓVIL PARA LA OPTIMIZACIÓN DE RUTAS DE VEHÍCULOS DE CARGA EN LA …repository.udistrital.edu.co/bitstream/11349/6363/1... · 2019-08-26 · usando una integral de volumen

37

Caso No.2

En este caso ya no se puede calcular el volumen usando el volumen del cilindro, fue

necesario usar la fórmula No.3, la cual da el resultado del volumen del líquido cuando se tiene un

ángulo de inclinación.

Figura No.19. Caso número 2

En la figura No.19 se observa que la cota de referencia sobrepasa toda la parte inferior

del ducto, pero no la parte superior, el ángulo de inclinación es la pendiente del ducto en dicha

sección y la altura del líquido es la diferencia del ducto en la parte superior con la cota de

referencia, con estos datos es posible poder determinar el volumen de hidrocarburo derramado

usando le ecuación No.3

Caso No.3

Figura No.20. Caso número 3

Como se observa en la figura No.20 se presenta un derrame parcial, para este caso la cota

de referencia atraviesa de manera transversal la sección de la parte inferior del ducto, pero no

sobrepasa la sección superior de este, al igual que el caso 2, el ángulo de inclinación es la

Page 38: APLICACIÓN MÓVIL PARA LA OPTIMIZACIÓN DE RUTAS DE VEHÍCULOS DE CARGA EN LA …repository.udistrital.edu.co/bitstream/11349/6363/1... · 2019-08-26 · usando una integral de volumen

38

pendiente del ducto y la altura del líquido es la diferencia entre la parte superior de este con la

cota de referencia.

Caso No.4

Figura No.21. Caso número 4

La figura No.21 muestra el cuarto caso, en el cual consiste cuando la cota de referencia

corta transversalmente a todo el ducto, en este como se puede observar la elevación del líquido

es 0, el valor que se calcula es el ángulo α que al igual en los otros casos se obtiene de la

pendiente del ducto.

Caso No.5

Figura No.22. Caso número 5

La figura No. 22 muestras el caso cuando la cota de referencia solo atraviesa

transversalmente la sección superior del ducto pero no toca la parte inferior de este, al igual que

el caso 4, la altura del líquido es y el ángulo la pendiente del ducto en la sección analizada.

Page 39: APLICACIÓN MÓVIL PARA LA OPTIMIZACIÓN DE RUTAS DE VEHÍCULOS DE CARGA EN LA …repository.udistrital.edu.co/bitstream/11349/6363/1... · 2019-08-26 · usando una integral de volumen

39

Caso No.6

Figura No.23. Caso número 6

La figura No.23 muestra el sexto caso que sucede cuando se derrama el hidrocarburo, se

puede observar que la cota de referencia no corta la parte superior e inferior del ducto, al igual

que para los otros casos anteriormente mencionados el ángulo α se tiene de la pendiente del

ducto en dicha sección y la altura del líquido es la diferencia entre la parte superior del ducto y la

cota de referencia.

Caso No.7

Figura No.24. Caso número 7

La figura No.24 muestra el séptimo caso, en este se puede observar que la cota de

referencia corta la parte inferior del ducto transversalmente, pero la parte superior de este no es

cortada, y al igual que en los casos anteriormente mencionados el ángulo es la pendiente del

ducto en la sección analizada y la elevación del líquido es la diferencia entre la parte superior del

ducto con la cota de referencia.

Page 40: APLICACIÓN MÓVIL PARA LA OPTIMIZACIÓN DE RUTAS DE VEHÍCULOS DE CARGA EN LA …repository.udistrital.edu.co/bitstream/11349/6363/1... · 2019-08-26 · usando una integral de volumen

40

Caso No.8

Figura No.25. Caso número 8

Para el caso número 8, la cota de referencia corta transversalmente a ambas secciones del

ducto, parte superior en inferior, y al igual que en el caso anterior el nivel del líquido es 0,

además el ángulo seguirá siendo la pendiente del ducto en la sección analizada.

Caso No.9

Figura No.26. Caso número 9

El caso 9 como se observa en la figura No.26 solo corta transversalmente la sección

superior del ducto, los datos de ángulo de inclinación será la pendiente del ducto en dicha

sección, también se puede ver que la altura del líquido es 0.

Caso No.10

Finalmente, el caso que lo representa la figura No.27

Figura No.27. Caso número 10

Page 41: APLICACIÓN MÓVIL PARA LA OPTIMIZACIÓN DE RUTAS DE VEHÍCULOS DE CARGA EN LA …repository.udistrital.edu.co/bitstream/11349/6363/1... · 2019-08-26 · usando una integral de volumen

41

En este caso se asume que el ángulo de inclinación es 0, lo que quiere decir que el ducto

está completamente horizontal, aunque este caso es poco probable que ocurra en la práctica se

tuvo en cuenta, e igual que para los otros casos la altura del líquido es la diferencia de la parte

superior del ducto menos la cota de referencia, para determinar el volumen del caso 10 se usó la

siguiente fórmula:

𝛼 = 2 ∗ acos (𝑅 − ℎ

𝑅)

En R es el radio del cilindro y h la elevación del líquido

𝑉 =𝑅2

2∗ (𝛼 − 𝑠𝑒𝑛(𝛼)) ∗ 𝐿

En donde 𝐿 corresponde a la longitud del cilindro en la sección analizada

Una vez que se encontraron los posibles casos en que se puede derramar el hidrocarburo

se procedió a hacer verificaciones de los resultados de manera manual, trazando secciones de un

ducto y a este haciendo las operaciones matemáticas correspondientes a cada caso de los

anteriormente mencionados, a esta verificación se le suma que se usó el software AutoCAD, ya

que en este se tiene la opción de crear figuras geométricas en 3D y poder calcular varias

propiedades como centro de masa, momento de inercia y por supuesto el volumen de un objeto

en 3D, al realizar esta comparación se obtuvo que la diferencia entre los valores que arrojaba

AutoCAD y los calculados de menara manual eran alrededor del 1.5% al 3%, esto posiblemente

a que al momento de crear el ducto en 3D cambiaba ligeramente la curvatura en los quiebres de

las abscisas.

Como se ha mencionado en los objetivos, se plantearon solucionar tres escenarios en

donde puede ocurrir un derrame, para el primer y segundo caso la solución es de manera similar,

esto debido a que en el segundo caso aunque se usen las válvulas se asume que estas tienen

Page 42: APLICACIÓN MÓVIL PARA LA OPTIMIZACIÓN DE RUTAS DE VEHÍCULOS DE CARGA EN LA …repository.udistrital.edu.co/bitstream/11349/6363/1... · 2019-08-26 · usando una integral de volumen

42

tiempo de cierre 0, lo cual hace que las válvulas solo limiten las abscisas que se van a analizar,

para el escenario 3 se tuvo en cuenta el tiempo de cierre de las válvulas de seccionamiento, así

que fue necesario calcular ese caudal de flujo con la fórmula de Manning aplicado a tuberías.

𝑉 =1.486

𝑛∗ 𝑟2/3𝑠1/2

V = velocidad de flujo

n = coeficiente de rugosidad

r = radio hidráulico

s = pendiente de la sección

Con la velocidad de flujo calculada es solo aplicar la fórmula de caudal que es:

𝑄 = 𝑉 ∗ á𝑟𝑒𝑎 𝑚𝑜𝑗𝑎𝑑𝑎

Donde á𝑟𝑒𝑎 𝑚𝑜𝑗𝑎𝑑𝑎 = 2 ∗ 𝜋 ∗𝐷2

8

Olmos, Raudel Ramos, Rubén Sepúlveda Marqués, y Francisco Villalobos Moreto. El

agua en el medio ambiente: muestreo y análisis. Plaza y Valdes, 2003.

D corresponde al diámetro del ducto en la sección analizada, este va variando de acuerdo

a la válvula cuando se va cerrando, para hacer este cálculo se tuvo en cuenta el volumen máximo

que puede derramar la sección analizada, esto quiere decir que si por ejemplo hay una válvula de

cheque a una distancia “x” de la de seccionamiento habrá una cantidad máxima de hidrocarburo

que se va a derramar sin importar el tiempo que se demore en cerrar la válvula de

seccionamiento, para este caso se tendrá como valor derramado el valor máximo de hidrocarburo

comprendido entre las válvulas.

Page 43: APLICACIÓN MÓVIL PARA LA OPTIMIZACIÓN DE RUTAS DE VEHÍCULOS DE CARGA EN LA …repository.udistrital.edu.co/bitstream/11349/6363/1... · 2019-08-26 · usando una integral de volumen

43

8. RESULTADOS

El resultado final fue una herramienta, rápida, fácil de usar, desarrollada en software libre

y que se puede ejecutar dentro de ArcMap como un Add – In desarrollado bajo el lenguaje

Python, la cual puede calcular el volumen de hidrocarburo derramado cuando un poliducto u

oleoducto sufra una rotura en los tres escenarios anteriormente mencionados, además de esto se

puede generar dos reportes, uno cuando se ubica solo una abscisa de rotura, y el otro un archivo

Excel el cual contiene los volúmenes de derrame evaluados en cada punto de abscisa, con estos

datos se puede construir un perfil de volúmenes de derrame para ver en qué lugares se va a

derramar mayor cantidad del hidrocarburo transportado

La interfaz gráfica final fue la siguiente:

Figura No.28. Desarrollo final de la interfaz gráfica

Como se observa en la figura No.28 es la vista final de la interfaz, en esta se resaltan 5

secciones las cuales se describen a continuación:

Sección 1: En esta se encuentran los parámetros principales de entrada, estos son la tabla

en donde están contenidas las abscisas, estas abscisas pueden ser de tipo horizontal o de cadena

pisada, el primer tipo de abscisa se refiere a la distancia horizontal vista en perfil del ducto, y la

cadena pisada es la abscisa que se mide directamente sobre el ducto, esto es por ejemplo si

Page 44: APLICACIÓN MÓVIL PARA LA OPTIMIZACIÓN DE RUTAS DE VEHÍCULOS DE CARGA EN LA …repository.udistrital.edu.co/bitstream/11349/6363/1... · 2019-08-26 · usando una integral de volumen

44

queremos ir de un punto A hacía uno B separado por una montaña y si hacemos una medición

preliminar sin tener en cuenta la topografía de la montaña se encuentra que habrá una distancia

“x”, esta será la abscisa horizontal, pero si se tiene en cuenta la topografía de la montaña habrá

una distancia “y”, está será la abscisa de cadena pisada, esto quiere decir que la distancia de

abscisa de cadena pisada siempre será mayor a la de la abscisa horizontal, este parámetro se

agregó debido a que la información que un cliente suministra en ocasiones puede venir con

cadena horizontal o cadena pisada, así que fue necesario especificar el tipo de abscisa usada. En

esta sección se puede escoger el campo de abscisa y elevación.

Figura No.29. Sección 1 interfaz gráfica

Sección 2: Esta sección contiene los parámetros en donde se pueden seleccionar los

campos en donde se ubican las válvulas de seccionamiento y de cheque, además del campo del

tiempo de cierre de las válvulas de seccionamiento.

Figura No.30. Sección 2 interfaz gráfica

Sección 3: La sección 3 tiene los parámetros del ducto, estos son el diámetro y el espesor

los cuales deben ir en pulgadas, también se encuentra el parámetro de la abscisa de rotura del

ducto la cual va en metros y la elevación respecto al suelo de la rotura medida en pulgadas.

Page 45: APLICACIÓN MÓVIL PARA LA OPTIMIZACIÓN DE RUTAS DE VEHÍCULOS DE CARGA EN LA …repository.udistrital.edu.co/bitstream/11349/6363/1... · 2019-08-26 · usando una integral de volumen

45

Figura No.31. Sección 3 interfaz gráfica

Sección 4: Contiene un panel gráfico que muestra el perfil del ducto, ubicación de rotura,

válvulas y secciones en donde se derrama el hidrocarburo.

Sección 5: Muestra los resultados de volumen derramado aguas arriba, aguas abajo,

dinámico, estático y volumen total derramado, todos estos en barriles.

Figura No.32. Sección 4 interfaz gráfica

Page 46: APLICACIÓN MÓVIL PARA LA OPTIMIZACIÓN DE RUTAS DE VEHÍCULOS DE CARGA EN LA …repository.udistrital.edu.co/bitstream/11349/6363/1... · 2019-08-26 · usando una integral de volumen

46

A lo que respecta al informe se utilizó la librería reportlab para esto, el resultado fue el

siguiente:

Figura No.33. Informe pdf generado usando reportlab

Sección 1: Muestra el nombre del informe, en este se específica a cuál de los tres

escenarios pertenece, sin válvulas, con válvulas, y válvulas con tiempo de cierre de estas.

Sección 2: En esta sección se muestran los valores numéricos de los resultados, abscisa

de rotura, cota del punto de rotura, diámetro del ducto y espesor promedio en pulgadas, volumen

derramado aguas arriba y aguas abajo en unidades de barriles americanos, el volumen dinámico

y el volumen total y un último dato que es la fecha en que se hizo el cálculo.

Page 47: APLICACIÓN MÓVIL PARA LA OPTIMIZACIÓN DE RUTAS DE VEHÍCULOS DE CARGA EN LA …repository.udistrital.edu.co/bitstream/11349/6363/1... · 2019-08-26 · usando una integral de volumen

47

Sección 3: Esta sección muestra una figura la cual contiene el perfil de la tabla ingresada,

el punto de rotura, ubicación de válvulas y las secciones en que el ducto va a sufrir un derrame

de hidrocarburo.

El segundo reporte es un archivo Excel en el cual contiene la información de cada punto

ingresado en la tabla y estos serán los puntos de abscisa evaluados.

La figura No.34 muestra este Excel

Figura No.34. Informe Excel generado

La primera columna es la abscisa evaluada, esta es la que está contenida en la tabla que

tiene los datos ingresados a la aplicación, la segunda y tercera contiene el volumen en barriles

US derramados aguas abajo y aguas arriba, y la última columna contiene el volumen total en

barriles US derramado.

Page 48: APLICACIÓN MÓVIL PARA LA OPTIMIZACIÓN DE RUTAS DE VEHÍCULOS DE CARGA EN LA …repository.udistrital.edu.co/bitstream/11349/6363/1... · 2019-08-26 · usando una integral de volumen

48

Con los datos generados en el informe se puede construir un perfil de derrame, el cual

tiene de coordenada “x” las abscisas y en el eje “y” serán los barriles totales derramados, el

perfil de derrame se muestra en la figura No.35

Figura No.35. Perfil de volúmenes de derrame

Este perfil de derrame se puede construir para los 3 escenarios ya solucionados, esto da

una idea en qué abscisas puede presentar un mayor volumen derramado, esto es de gran

importancia ya que se pueden identificar zonas críticas, se pueden ubicar en este perfil datos

como cruces con cuerpos de agua, cruces viales, centros poblados, zonas de riesgo en donde

pueda sufrir un daño ya sea por un atentado o un evento natural y demás elementos de interés

que se tenga, además de esto se puede hacer una comparación entre los escenarios solucionados,

así como se muestra en la figura No.36

0

100

200

300

400

500

600

700

0 30 60 90 120 150 180 210 240 270 300 330 360 390 420 450 480

Bls

Us

Abscisa (m)

Perfil de derrame

Sin Válvulas

Page 49: APLICACIÓN MÓVIL PARA LA OPTIMIZACIÓN DE RUTAS DE VEHÍCULOS DE CARGA EN LA …repository.udistrital.edu.co/bitstream/11349/6363/1... · 2019-08-26 · usando una integral de volumen

49

Figura No.36. Comparación perfil volúmenes de derrame

En esta figura se puede observar la comparación de dos perfiles de volúmenes de

derrame, en donde está el escenario 1 y 2, en el primero no se tiene en cuenta las válvulas de

seccionamiento y de cheque, y en el segundo las válvulas de seccionamiento y cheque con el

tiempo de cierre en 0, se observa que la diferencia de derrame entre los dos escenarios después

de la abscisa 130 es bastante grande al igual que en la parte final del ducto en el cual es alrededor

de 550 barriles, esto da una buena idea en la eventualidad de que alguna de las válvulas no

funcione correctamente la cantidad de hidrocarburo puede ser de gran consideración.

Además de esto, aunque no estaba en los objetivos originales, poder configurar y plantear

dos escenarios más, en los cuales solo se tiene en cuenta el funcionamiento de una de las dos

válvulas a la vez, es decir, se puede seleccionar que solo aparezcan las válvulas de

seccionamiento o de cheque.

Figura No.37. Selección de solo un tipo de válvula

0

100

200

300

400

500

600

700

0 30 60 90 120 150 180 210 240 270 300 330 360 390 420 450 480

Bls

Us

Abscisa (m)

Perfil de derrame

Sin Válvulas

Con Válvulas

Page 50: APLICACIÓN MÓVIL PARA LA OPTIMIZACIÓN DE RUTAS DE VEHÍCULOS DE CARGA EN LA …repository.udistrital.edu.co/bitstream/11349/6363/1... · 2019-08-26 · usando una integral de volumen

50

9. CONCLUSIONES

- El desarrollo de herramientas SIG por parte de los usuarios es de gran importancia, ya

que, aunque estos programas integren con diversas funciones, métodos, algoritmos

servicios y demás, no cubren todas las necesidades y/o requerimientos de tareas

específicas.

- Aunque la interfaz gráfica se programó usando una sola librería la cual fue PyQt, no se

debe pensar que esta sea la mejor y única opción para el desarrollo de herramientas

integradas con ArcGIS, ya que como se vio ArcGIS utiliza el lenguaje programación

Python, y para este existen diversas librerías con licencia GPL que se pueden usar para

crear interfaces gráficas, además esta flexibilidad propone la idea para pensar que no es

estrictamente necesario desarrollar herramientas que se tengan que ejecutar dentro de

ArcMap, ya que al momento de usar la librería ArcPy es tan solo importar y esta es

reconocida por la consola de comandos de Python trayendo todas las funcionalidades.

- Al momento de utilizar librerías para el desarrollo de interfaces GUI que se van a ejecutar

dentro de ArcMap, es necesario tener en cuenta para qué se quiere dicha interfaz, cuáles

son los requisitos como usuario y no limitarse de cuál se integra mejor, ya que como se

vio, cualquier librería se puede usar para programar interfaces GUI, es solo encontrar el

método para que esta no genere ningún problema dentro de ArcMap.

- Se pueden generar distintos tipos de reporte usando librerías como Matplotlib, la cual no

es solo para crear simples salidas gráficas, también se pueden crear figuras complejas

como sólidos en 3D, funciones vectoriales y demás, esto hace que sea bastante flexible si

se quiere crear un elemento gráfico para ser usado dentro de un SIG, ya sea simplemente

Page 51: APLICACIÓN MÓVIL PARA LA OPTIMIZACIÓN DE RUTAS DE VEHÍCULOS DE CARGA EN LA …repository.udistrital.edu.co/bitstream/11349/6363/1... · 2019-08-26 · usando una integral de volumen

51

para mostrar el comportamiento de dos variables o datos geográficos con mapas bases

referenciados de páginas Web usando un toolkit.

- Una de las principales características de Python es que es un lenguaje de programación

fácil de aprender, flexible y muy intuitivo, no es necesario ser un experto en

programación para crear scripts, además de esto la documentación que se encuentra en la

web tanto para el desarrollo de interfaces GUI, arcpy y Python es enorme, y no solo en la

web sino también en libros se puede encontrar ejemplos para que se pueda desarrollar

herramientas personalizadas sin ningún problema.

- El desarrollo de herramientas que se integren a un SIG no siempre son de tipo espacial, se

pueden usar distintas metodologías y solucionar problemas sin tener algún elemento

geográfico, como por ejemplo un archivo shape, raster, cobertura y/o demás archivo que

represente el entorno que nos rodea.

- Los SIG actuales están pensados para que cualquier usuario pueda interactuar con estos,

esto hace que profesionales de distintas áreas puedan abordar y solucionar problemas de

una nueva manera, ya sea usando elementos espaciales o simplemente usando

herramientas matemáticas, es así como en este caso se solucionó un problema de

hidráulica sin ser el área específica de nuestra labor como ingeniero Catastral y Geodesta.

- De los resultados obtenidos con la calculadora de derrame de hidrocarburo se puede tener

una idea en la eventualidad de una emergencia la cantidad de volumen aproximada que se

puede perder y además de la cantidad de personal y equipos que se debe movilizar a los

puntos de control, a esto se le suma los perfiles de derrames que muestran los puntos más

críticos del ducto cuando sufra una avería ya sea por un atentado, o un daño por un

desastre natural.

Page 52: APLICACIÓN MÓVIL PARA LA OPTIMIZACIÓN DE RUTAS DE VEHÍCULOS DE CARGA EN LA …repository.udistrital.edu.co/bitstream/11349/6363/1... · 2019-08-26 · usando una integral de volumen

52

- En ocasiones cuando se están cursando primeros semestres de ingeniería se tiende a

pensar que las matemáticas que nos enseñan los docentes no las vamos a usar en nuestra

vida profesional, ya que tenemos la idea de que la gran mayoría de los problemas que

vamos a afrontar ya están solucionados o simplemente solo nos limitamos a hacer tareas

de manera mecánica.

- Es de gran importancia tomar información de varias fuentes y poder comparar estas con

los resultados que se van obteniendo a la medida que se va solucionando un problema,

esto ayuda a verificar que los datos que se están obteniendo son correctos o no, esta

conclusión se debe a que cuando se comenzó a programar la calculadora no se tuvo en

cuenta el ducto como una figura en 3D, esto hizo que cuando se comparó con

herramientas que solucionan de manera similar el problema abordado se obtuvieran

diferencias del más del 100%, a razón de esto se solucionó con los 10 casos de geometría

ya explicados anteriormente.

- Son de gran ayuda las herramientas SIG para crear planes de contingencia y emergencia,

esto se debe a que actualmente se está pensando a llevar toda la información a datos

espaciales, claro está que estos pueden ser más robustos agregando funcionalidades

nuevas sin ser necesariamente geoprocesos o usar datos espaciales.

- Aunque ArcGIS tiene herramientas propias para poder programar como lo es model

builder, esta se queda corta si queremos acceder a cierto tipo de información o

modificarla de alguna manera, lo cual limita programar nuevas herramientas que

solucionen nuestras necesidades.

Page 53: APLICACIÓN MÓVIL PARA LA OPTIMIZACIÓN DE RUTAS DE VEHÍCULOS DE CARGA EN LA …repository.udistrital.edu.co/bitstream/11349/6363/1... · 2019-08-26 · usando una integral de volumen

53

- Una de las principales características de Python es que es un lenguaje de programación

libre, pero esto genera un problema, ya que al momento de programar scripts y si se

quieren proteger para que no se pueda acceder al código, esto no se puede hacer, lo cual

genera un problema de seguridad, y como se vio cuando se instala el Add – In, a esta

carpeta se puede acceder de una manera fácil y el código es vulnerable para que sea

vistos por terceros.

Page 54: APLICACIÓN MÓVIL PARA LA OPTIMIZACIÓN DE RUTAS DE VEHÍCULOS DE CARGA EN LA …repository.udistrital.edu.co/bitstream/11349/6363/1... · 2019-08-26 · usando una integral de volumen

54

10. BIBLIOGRAFÍA

- Derrame de petróleo en Tumaco es el peor desastre ambiental en 10 años: Gobierno

ElEspectador. (2016). Derrame de petróleo en Tumaco es el peor desastre ambiental en

10 años: Gobierno. [online] disponible en:

http://www.elespectador.com/noticias/nacional/derrame-de-petroleo-tumaco-el-peor-

desastre-ambiental-1-articulo-568408 [Accedido el 30 Oct. 2016].

- Díez, L. A. S. (s. f.). REGLAMENTO DE INSTALACIONES PETROLIFERAS. Y

REGLAMENTO DE REDES. Lulu.com.

- Golfo de México: contaminación e impacto ambiental : diagnóstico y tendencias. (2005).

Univ. J. Autónoma de Tabasco.

- Revie, R. W. (2015). Oil and Gas Pipelines: Integrity and Safety Handbook. John Wiley

& Sons.

- Mertz, D. (2003). Text Processing in Python. Addison-Wesley Professional.

- Fehily, C. (2002). Python. Peachpit Press.

- Meier, B. A. (2015). Python GUI Programming Cookbook. Packt Publishing Ltd.

- Harwani, B. M. (2011). Introduction to Python Programming and Developing GUI

Applications with PyQT, 1st Ed. Cengage Learning.

- Allen, D. W. (2014). GIS Tutorial for Python Scripting. Esri Press.

- Harwani, B. M. (2011). Introduction to Python Programming and Developing GUI

Applications with PyQT, 1st Ed. Cengage Learning.

- Langtangen, H. P. (2013). Python Scripting for Computational Science. Springer Science

& Business Media.

- Pimpler, E. (2013). Programming ArcGIS 10.1 with Python Cookbook. Packt Publishing

Ltd.

Page 55: APLICACIÓN MÓVIL PARA LA OPTIMIZACIÓN DE RUTAS DE VEHÍCULOS DE CARGA EN LA …repository.udistrital.edu.co/bitstream/11349/6363/1... · 2019-08-26 · usando una integral de volumen

55

- Pimpler, E. (2015). Programming ArcGIS with Python Cookbook. Packt Publishing Ltd.

- Summerfield, M. (2007). Rapid GUI Programming with Python and Qt: The Definitive

Guide to PyQt Programming. Pearson Education.

- Tateosian, L. (2016). Python For ArcGIS. Springer.

- Toms, S. (2015). ArcPy and ArcGIS – Geospatial Analysis with Python. Packt Publishing

Ltd.