You are here:GeoTux»Geo-Blogs»SIG de escritorio»TrasMiSIG, Cálculo de rutas con PyQGIS y PostgreSQL/PostGIS

Estadísticas

Invitados: 37
Usuarios registrados: 3153
Usuarios en línea:
-
Registrados hoy:
-

Registro

Redifusión (RSS)

Blogs y Noticias:
Recibe las actualizaciones en Geo-Noticias y Geo-Blogs

Recibir por e-mail
Recibir Geo-Noticias y Geo-Blogs por e-mail

¿Qué es esto?

En Twitter

Viernes 19 de Junio de 2009 06:28

TrasMiSIG, Cálculo de rutas con PyQGIS y PostgreSQL/PostGIS

Written by  German Carrillo
Rate this item
(1 Vote)

Hay un par de novedades en TrasMiSIG: Lo he migrado a PyQGIS, por lo que ahora es multiplataforma, y el código fuente está disponible, bajo licencia GPL.

Después de observar que PyQGIS provee las funcionalidades necesarias para hacer funcionar TrasMiSIG busqué migrarlo y el resultado ha sido bueno. En realidad, como mencioné hace un año, TrasMiSIG solo exige a la librería de desarrollo espacial funcionalidades de navegación y conexión a PostgreSQL, pues la lógica del negocio está implementada en la base de datos, utilizando el lenguaje PL/PgSQL.

TrasMiSIG en PyQGIS

¿Para qué sirve?

 

La aplicación TrasMiSIG permite consultar y visualizar las rutas asociadas a un par de estaciones del sistema Transmilenio, teniendo en cuenta el día, la hora y el sentido del viaje. Como resultado se genera un reporte que contiene varios criterios para decidir la ruta óptima, como son el tiempo de viaje y el número de paradas en el trayecto.

 

¿Qué software utiliza?

 

Ahora TrasMiSIG está desarrollado en Python y utiliza el siguiente software:

 

  • PyQGIS: Bindings de Python para Quantum GIS. (Se requiere la versión 1.1 o superior)

  • PyQt4: Bindings de Python para Qt4.

  • QtSql: Es parte de Qt4, permite la conexión a PostgreSQL.

  • PostgreSQL: Sistema Manejador de Bases de Datos. (Se requiere la versión 8.3 o superior)

  • Postgis: Extensión espacial para PostgreSQL.

 

¿Cómo conseguir el código fuente?

 

El código fuente de TrasMiSIG está disponible de dos maneras, como archivo tar o directamente del repositorio Subversion.

 

El archivo tar puede descargarse en este enlace.

 

Para descargar desde el repositorio es necesario tener instalado un cliente Subversion, como por ejemplo svn en GNU/Linux o Tortoise SVN en Windows, y ejecutar la siguiente instrucción:

 

svn co svn://svn.tuxfamily.org/svnroot/tuxgis/geotux/tags/trasmisig/1.0 trasmisig

 

Esto descarga la aplicación en el directorio trasmisig. Por defecto solamente se cuenta con permisos de lectura en el repositorio, si piensas contribuir con alguna funcionalidad extra (cualquier aporte es bienvenido) puedes registrarte en Tuxfamily y avisarme para darte permisos de escritura.

 

Se puede ver la estructura del repositorio desde la dirección:

 

 

Instalación

 

Prerequisitos

 

Para instalar las dependencias en Ubuntu puedes seguir estos pasos:

 

1. Agregar al archivo /etc/apt/sources.list las siguientes líneas:

deb http://ppa.launchpad.net/qgis/unstable/ubuntu jaunty main

deb-src http://ppa.launchpad.net/qgis/unstable/ubuntu jaunty main

2. Actualizar la información en los repositorios: sudo apt-get update.

3. Instalar dependencias (en una misma línea):

sudo apt-get install pyqt4-dev-tools python python-qt4 qt4-designer

python-qt4-sql libqt4-sql-psql qgis

4. Fijar variables de entorno:

export PYTHONPATH="/usr/share/qgis/python"

 

En Windows puedes usar el instalador OSGeo4W y marcar los paquetes que se mencionan en estas instrucciones: http://wiki.qgis.org/qgiswiki/OsGeo4wSetup

Una vez instalado el software fijar las variables de entorno:

set PATH=C:/OSGeo4W/apps/qgis/bin;%PATH%

set PYTHONPATH=C:/OSGeo4W/apps/qgis/python

 

TrasMiSIG

 

Después de instalar las dependencias se prosigue con la instalación de TrasMiSIG: Base de datos y aplicación.

  1. Instalar la base de datos TrasMiSIG:

    • En la terminal de PostgreSQL se crea el usuario al que se asignará la base de datos:

    • Se crea la base de datos “trasmisig” con el siguiente comando:

    • Descargar el archivo SQL con la estructura y los datos de TrasMiSIG:

      Para Ubuntu (codificación LATIN1) en este enlace, para Windows (codificación WIN1252) en este enlace. Descomprimir el zip descargado.

    • Para importar el archivo SQL obtenido a la base de datos “trasmisig” creada en un paso anterior, se ejecuta el siguiente comando:

    •  

    • Ahora se debe instalar la aplicación.

       

    • Para instalar la base de datos “trasmisig” se debe contar con PostgreSQL y su extensión espacial PostGIS.

      createuser -S -d -r -l -i -P usuario

      createuser.exe -S -d -r -l -i -P -U postgres (En Windows)

      Donde, -S: No es superusuario, -d: Puede crear BD, -r: Puede crear roles, -l: Puede loguearse, -i: Hereda de roles superiores, -P: Fijar el password.

      Se escribe la contraseña “usuario” para el usuario llamado “usuario”.

      createdb trasmisig -O usuario -h localhost -E LATIN1

      createdb.exe -O usuario -h localhost -E WIN1252 -U postgres trasmisig (En Windows)

      Donde -O: Usuario al que pertenece la base de datos, -h: Servidor, -E: Codificación.

      Con respecto a la codificación, dependiendo de la configuración de PostgreSQL se utilizará una u otra, para Windows puede que sea necesario definir la WIN1252, mientras que en GNU/Linux (partiendo de una buena configuración de PostgreSQL) se usa sin problemas la LATIN1.

       

       

      psql trasmisig < /home/tuxman/trasmisig_pyqgis_latin1.sql

      psql -U postgres trasmisig < d:\trasmisig_pyqgis_win1252.sql (En Windows)

       

    • Construir la aplicación:
    • Para construir la aplicación en GNU/Linux se ejecuta make desde el directorio raíz del código fuente.

      En Windows se ejecuta el archivo make.bat

      Así se obtienen los archivos de recursos y de interfaz de usuario necesarios.


  2. Ejecutar la aplicación:

      • Para ejecutar TrasMiSIG en GNU/Linux se ejecuta en la terminal desde el directorio raiz de la aplicación: ./TrasMiSIG.py En Windows debe ejecutarse “python TrasMiSIG.py” desde la consola.

 

¿Cómo se usa?

 

Al ejecutar TrasMiSIG aparece la interfaz mostrando información espacial básica (ciudad de Bogotá y red de transporte masivo compuesta por estaciones y segmentos de ruta). Se disponen en la parte central, algunos botones para manipular y consultar el mapa.

Interfaz principal

Definir los parámetros del viaje:

 

Para definir el viaje a realizar se deben ingresar los siguientes parámetros en la parte superior de la ventana:

 

  • Estación de Origen: Corresponde a la estación del sistema desde la cual inicia el viaje.

  • Estación de Destino: Corresponde a la estación del sistema donde finaliza el viaje.

  • Día: Día de la semana en que se efectúa el viaje.

  • Hora: Hora del día en la cual se parte de la estación de origen.

 

Parmámetros del viaje

 

Para definir la estación de origen y la estación de destino se tienen dos opciones:

  1. Seleccionar las estaciones en las listas desplegables ubicadas en la parte superior de la interfaz.

     

  2. Utilizar la herramienta Seleccionar Estación que permite interactuar con el mapa a través de un click sobre la estación de interés.

    Seleccionar Estación

     

El día y la hora del viaje se definen en las listas desplegables de la parte superior de la interfaz de la aplicación. La hora está en el formato 24h (por ejemplo, 18:00 equivale a 6:00pm).

 

Una vez definidos los parámetros del viaje, se debe dar click en el botón Calcular Rutas.

 

Despliegue de resultados:

 

La aplicación desplegará en el mapa el viaje seleccionado y en la parte inferior un reporte detallado que contiene la siguiente información de la ruta:

 

  • Ruta: Nombre de la ruta del sistema de transporte que pasa por las estaciones de origen y destino.

  • Tiempo: Tiempo que tarda el viaje en minutos.

  • Paradas: Número de paradas intermedias que debe realizar el bus del sistema.

  • Servicio: Tipo de servicio al que pertenece la ruta. Puede ser Expreso (si la ruta tiene paradas que optimizan el tiempo del viaje) o Corriente (si la ruta se detiene en todas las estaciones comprendidas entre las estaciones de origen y destino).

  • Origen: Nombre de la estación de origen del viaje.

  • Destino: Nombre de la estación de destino del viaje.

 

Reporte generado por la aplicación

 

En el reporte aparece seleccionada por defecto la primera ruta (de color azul oscuro), desplegando sus paradas (puntos amarillos) y su recorrido (línea roja) en el mapa.

Ruta

 

Acercándose un poco en el mapa, se muestran las etiquetas de las estaciones por las que pasa la ruta, facilitando la lectura del recorrido.

Etiquetas sobre la ruta

Si se quiere consultar otro viaje, se debe dar click en el botón Ingresar nueva ruta y volver a definir los parámetros.

 

 

Posibles mejoras

 

  • Transmilenio posee un conjunto de buses alimentadores que permiten ampliar el área de influencia del sistema. En su versión 1.0, TrasMiSIG no tiene en cuenta las rutas alimentadores debido a la complejidad que le agregan a la aplicación, sin embargo, constituye una de las posibles mejoras a realizar.

 

  • En ciertas ocasiones tomar más de una ruta puede disminuir el tiempo de viaje manteniendo el mismo costo. La implementación de este escenario, constituiría otra mejora a la aplicación.

 

 

Nota

 

Los datos empleados en TrasMiSIG son ficticios y no corresponden completamente a la realidad, pues se crearon para llevar a cabo las pruebas de la aplicación.

     

Referencias consultadas:

  • Equipo de desarrollo de Quantum GIS, 2009. Quantum GIS, Geographic Information System API Documentation. Open Source Geospatial Foundation Project. Documento electrónico: http://doc.qgis.org/

  • Carrillo, Germán. Aplicación TRAS-MI-SIG: Cálculo de rutas con Postgres/PostGIS y la librería de desarrollo SharpMap. 2008. Documento electrónico: http://geotux.tuxfamily.org

 

Last modified on Miércoles 04 de Enero de 2012 13:49

Comentarios  

 
0 # ¿No será mejor spatialite?mapologo 01-08-2009 17:27
Antes que nada felicitaciones por este excelente trabajo. Sé que Spatialite es una solución reciente, pero, ya que la aplicación es básicamente de escritorio creo que es mejor utilizar Spatialite (el PostGIS de SQLite).
Responder | Responder con una citación | Citar
 
 
0 # PL/PgSQLtuxman 01-08-2009 21:58
Hola fpalm, gracias por lo que dices.

No descarto tener algún dí­a TrasMiSIG como aplicación web (aunque no es prioridad), en ese caso tendrí­a que ajustar un poco en PostgreSQL la forma de almacenar temporalmente las rutas a resaltar en el mapa.

Tienes razón en recomendar Spatialite para trabajos especí­ficos de escritorio, es una alternativa a tener muy en cuenta, sin embargo, por el hecho de buscar ser simple, Sqlite no tiene caracterí­stica s que necesita TrasMiSIG y que si me da PostgreSQL, en concreto, el lenguaje PL/PgSQL (o un equivalente). PL/PgSQL realiza buena parte del trabajo: encuentra los servicios candidatos, calcula tiempos, calcula número de paradas y crea las vistas.

Es cierto que estas tareas pueden hacerse desde Python pero inundarí­a el código fuente con sentencias SQL y quiero mantenerlo simple.
Responder | Responder con una citación | Citar
 
 
0 # Problema con la aplicacióndiegomon 17-08-2009 17:47
Hola TuxMan el problema es el siguiente luego de seguir todos los pasos me da el siguiente error!
laptop:~/trasmisig_v1.0$ ./TrasMiSIG.py
Traceback (most recent call last):
File "./TrasMiSIG.py", line 88, in
main( sys.argv )
File "./TrasMiSIG.py", line 71, in main
miVisor = Visor()
File "/home/diego/trasmisig_v1.0/logica_trasmisi g.py", line 142, in __init__
self.mapTip = QgsMapTip()
NameError: global name 'QgsMapTip' is not defined

Gracias por tu ayuda
Responder | Responder con una citación | Citar
 
 
0 # QgsMapTiptuxman 18-08-2009 09:41
Hola diegomon, seguramente tienes QGis 1.0.x instalado en tu equipo. La clase QgsMapTip fue agregada a los bindings por Martin Dobias desde la versión 1.1.

Asegúrate que en el archivo /etc/apt/sources.list se encuentren los repositorios que menciono en el paso 1 de la instalación de TrasMiSIG. Una vez hecho esto ejecuta: sudo apt-get update para actualizar los paquetes. Con esto deberí­as tener QGis 1.1. listo para instalar.

Para evitar este tipo de problemas he agregado una validación de la versión de QGis antes que arranque TrasMiSIG, puedes descargar la última versión de TrasMiSIG ejecutando:

svn co svn://svn.tuxfamily.org/svnroot/tuxgis/geotux/trunk/trasmisig trasmisig

Saludos.
Responder | Responder con una citación | Citar
 

Escribir un comentario


Código de seguridad
Refescar

 

¿Dónde nos leen?

Últimos comentarios