You are here:GeoTux»Geo-Blogs»Desktop GIS»TRAS-MI-SIG: Route calculation with Postgres/PostGIS and the SharpMap library

Statistics

Invitados: 76
Usuarios registrados: 3190
Usuarios en línea:
-
Registrados hoy:
-

Register

RSS

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

Get them by e-mail
Recibir Geo-Noticias y Geo-Blogs por e-mail

¿What is this about?

Wednesday, 02 April 2008 09:32

TRAS-MI-SIG: Route calculation with Postgres/PostGIS and the SharpMap library

Written by  German Carrillo
Rate this item
(2 votes)

This is an example of free and open source software integration that consists of a geographical application called Tras-Mi-SIG to query and visualize routes in a network of public transport composed by stations and segments.

The English version of the document can be downloaded here. (Thanks to dianatg)

 

 

Hay una nueva versión de TrasMiSIG con el código fuente disponible, por favor visítala.  Para ello haz click en este enlace.

 

Disponible en inglés en este enlace.

 

Introducción

 

La aplicación Tras-Mi-SIG 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 Tras-Mi-SIG 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.

introduccion

 

¿Qué es Tras-Mi-SIG?

 

Tras-Mi-SIG es una aplicación de escritorio en Windows que está desarrollada con base en el siguiente software:

 

 

Tras-Mi-SIG emplea los resultados de muchos proyectos de software libre y de código abierto, pretendiendo demostrar su validez en la construcción de soluciones geoinformáticas.

 

 

¿Cómo está compuesto?

 

Tras-Mi-SIG tiene los siguientes componentes:

 

Persistencia: Base de datos en Postgres/Postgis que contiene tablas alfanuméricas, tablas espaciales y funciones PL/PgSQL personalizadas.

 

Acceso a Datos: Componente Npgsql para acceder y ejecutar consultas a la base de datos Postgres/Postgis.

 

Presentación: Código en C# para presentar los datos en la interfaz principal de la aplicación y capturar los parámetros que el usuario define para su viaje por el sistema Transmilenio.

 

 

¿Cómo funciona?

 

Tras-Mi-SIG hace uso del lenguaje de programación C# y del componente Sharpmap para capturar los parámetros del viaje, los cuales al ser enviados por el usuario, son utilizados para hacer llamados a funciones PL/PgSQL personalizadas (que retornan el tiempo y el número de paradas de cada ruta) y para construir vistas espaciales de Postgis en tiempo de ejecución (que permiten resaltar gráficamente los elementos espaciales que componen el viaje).

 

Las funciones PL/PgSQL permiten ubicar la lógica del negocio en el Sistema Manejador de Bases de Datos Postgres, lo cual aisla el comportamiento de las estaciones y rutas de la capa de presentación de la aplicación, facilitando su mantenimiento y aumentando su interoperabilidad con otros sistemas.



Instalación

 

Para instalar Tras-Mi-SIG se deben seguir los siguientes pasos:

 

1. Instalar la base de datos Tras-Mi-SIG:

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

 

 

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

 

createuser.exe -S -d -r -l -i -P usuario -U postgres

 

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, -U: Usuario que ejecuta la orden.

 

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

 

 

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

 

createdb.exe trasmisig -O usuario -h localhost -E LATIN1 -U postgres

 

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

 

 

  • Se debe descargar el archivo SQL con la estructura y los datos de Tras-Mi-SIG aquí (356 Kb). Para importar el archivo SQL descargado a la base de datos “trasmisig” creada, se ejecuta el siguiente comando:

     

psql.exe -f d:\bd_trasmisig_v1.sql -U postgres

 

Donde -f: Ruta al archivo SQL, -U: Usuario que ejecuta la orden.

 

 

Ahora se debe instalar la aplicación.

 

2. Instalar la aplicación:

Para instalar la aplicación Tras-Mi-SIG se debe descargar el archivo de instalación desde aquí (914 Kb) y posteriormente ejecutarlo, definiendo los parámetros convencionales del proceso (aceptación de la licencia, ruta de la aplicación y grupo de programas en el menú inicio).

instalacion


¿Cómo se usa?

 

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

trasmisig_uso1

 

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.

 

parametros

 

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.

estaciones

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

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:

 

    • Número: Consecutivo para cada ruta encontrada por la aplicación.

    • Ruta: Nombre de la ruta del sistema de transporte que pasa por 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.

    • Tiempo: Tiempo que tarda el viaje en minutos.

    • No. 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 del viaje).

reporte

 

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

trasmisig_uso6

 

Si existe más de una ruta que pase por las estaciones de origen y destino, la ruta seleccionada en el reporte determina las paradas y el recorrido representado en el mapa.

 

Si la selección de la ruta en el reporte cambia, el mapa se ajusta automáticamente desplegando las paradas y el recorrido de la ruta seleccionada.

ruta1 ruta2

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

etiquetas

 

Si se quiere consultar otro viaje, se debe dar click en el botón “Ingresar nueva ruta” y volver a ingresar 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, Tras-Mi-SIG 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.

 

Conclusiones y Aclaraciones

 

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

     

  • Este artículo ha sido concebido como una muestra de la utilidad que proveen los proyectos de software libre y de código abierto.

 

Agradecimientos

 

Agradezco al especialista Samuel Mesa, integrante del equipo GeoTux, por sus sugerencias sobre la aplicación y por llevar a cabo el proceso de cargue de datos correspondiente a tablas alfanuméricas y espaciales.

 

 

Referencias consultadas:

 



Puede descargar este artículo en formato PDF en este enlace (330Kb).


Last modified on Sunday, 23 October 2011 09:23

comments  

 
+1 # Gracias!geosigma 2008-08-20 17:59
Hola German, dejame felicitarte por el gran trabajo que vienes adelantando en la comunidad del opengis, gracias por compartir tu conocimiento con nosotros, no tenia muchas bases de programación, sin embargo he seguido todas tu explicaciones en la Contruccion de un Visor de Shapes con Mapwingis y ha sido una experiencia bastante enriquecedora.

¿Es posible que nos enseñes ha realizar una aplicación como la de trasmisig paso a paso.? o ¿Que publiques los documentos en los cuales te basaste para su diseño?

Nuevamente mil gracias.
Reply | Reply with quote | Quote
 
 
0 # Agradecimientogeosigma 2008-08-21 08:28
Hola German, gracias por tus valiosos aportes en la comunidad opengis y por compartir tu conocimiento y experiencia con nosotros. Es posible que nos enseñes a realizar esta apliacación paso a paso como lo hiciste con el Viosr de Shapes.?

Gracias
Reply | Reply with quote | Quote
 
 
0 # TrasMiSIGtuxman 2008-08-21 12:31
Hola Geosigma, gracias, es bueno saberlo, te comento que con respecto a TrasMiSIG, fue una aplicación que llevó un par de meses construir, explicarla paso a paso puede no ser sencillo pues integra además programación en PostgreSQL. Estaba pensando en hacer algún ejemplo con SharpMap conectando a bases de datos en PostgreSQL, pero por ahora no tengo mucho tiempo para dedicar a esta tarea.

Con respecto a las funciones en PostgreSQL, hay un enlace para descargar la base de datos y allí­ dentro están las funciones, ese código puedes verlo con PgAdmin III.

Saludos.
Reply | Reply with quote | Quote
 
 
0 # TrasMiSIGgeosigma 2008-08-23 19:51
Hola German, gracias por responder. Te cuento que he estado revisando, como lo sugeriste las funciones con el PgAdmin III de PostgreSQL, pero la verdad no las entiendo mucho :sad: ; es posible que pubiques el codigo de la aplicación o tal vez una parte, para estudiarlo y entender un poco mas?

Nuevamente mil gracias!
Reply | Reply with quote | Quote
 
 
0 # Es factible tener acceso a las fuentes?ojarana 2008-09-03 12:25
me parece muy interesante, no he trabajado con ruteos en PostGis solo en oracle y me interesaria ver la forma en que lo codificaste. Es factible tener acceso a las fuentes?.

saludos
Reply | Reply with quote | Quote
 
 
0 # TrasMiSIGtuxman 2008-09-08 23:52
Hola Omar y geosigma, para empezar deben tener claro el almacenamiento en la base de datos, aquí­ (downloads.tuxfamily.org/tuxgis/geoblogs/trasmisig/respuestas/trasmisig_E-R.png) pueden ver el diagrama entidad-relación. Solamente hay dos tablas con geometrí­a, estaciones (puntos) y segmentos (lí­neas). Los segmentos se componen de una estación de inicio y otra de llegada. Varios segmentos conectados conforman una ruta.

La aplicación recibe los parámetros: Estación inicial, estación de llegada, dí­a del viaje, hora del viaje y a partir de funciones en PL/PgSQL (CompararDia, CalcularTiempo, CalcularNoParad as, CrearVistaRuta, CrearVistaEstac iones, CrearVistaParad as y CrearVistaEtiqu etasRuta) se construyen vistas de Postgis que permiten obtener un grupo de estaciones y de segmentos (los que pertenecen a la ruta definida por los parámetros) que son representadas en la aplicación con una simbologí­a especial.

Para ejecutar las funciones de Postgis en la aplicación se emplea la librerí­a Npgsql, como en el siguiente ejemplo:

Quote:
Consulta = "SELECT CalcularNoParad as(" idServicio ",'" sEstacionOrigen "','" sEstacionDestin o "');
ConexionNpgsql = new Npgsql.NpgsqlConnectio n("Server=" this.sServidor ";Port=" this.sPuerto "; DataBase=" this.sBaseDeDatos ";User ID=" this.sUsuario ";Password=" this.sContrasena ";");
ConexionNpgsql.Open();
CommandNpgsql = new Npgsql.NpgsqlCommand(C onsulta,Conexio nNpgsql);
Npgsql.NpgsqlDataAdapt er DataAdapterNpgs ql = new Npgsql.NpgsqlDataAdapt er(CommandNpgsq l);
System.Data.DataSet miDataSet= new System.Data.DataSet();
DataAdapterNpgs ql.Fill(miDataSet) ;
return miDataSet;


La aplicación carga las vistas que sirven para mostrar los segmentos y estaciones de la ruta de interés y muestra en un control dataGrid una tabla con los resultados de las consultas SQL contenidas en las funciones mencionadas.

Espero les sirva la información.
Reply | Reply with quote | Quote
 
 
0 # baster 2009-08-06 00:58
German estoy creando una aplicacion de informacion turistica con ciertas caracteristicas de gis ya que estoy utilizando mapserver con posgre pero tengo el inconveniente q no encuentro como configurar el sitio para subirlo al webhosting sin que este host cuente con el servicio de mapserver
Reply | Reply with quote | Quote
 
 
0 # tuxman 2009-08-06 09:39
Hola baster, pues si que tienes un problema, porque el hosting debe tener MapServer instalado para que puedas servir tus datos. Deberí­as buscar la forma de instalarlo en el servidor o buscar un hosting con esa caracterí­stica . Puedes darte una idea aquí­: http://www.spatialserver.com/hosting
Reply | Reply with quote | Quote
 
 
0 # galeriabaster 2009-08-11 22:36
German quisiera saver si podes ayudarme estoy intentando hacer una galeria de imagenes atraves de una consulta de imagenes guardadas en una base de datos postgre pero la verad no encuentro como.
Reply | Reply with quote | Quote
 
 
0 # Funciona en Linux?Daniel Rivail Medina López 2011-07-11 12:10
Hola me gustaria saber si esta aplicación se puede utilizar en Linux o sea en cualquier estación de trabajo con software libre?
Reply | Reply with quote | Quote
 
 
0 # Re:tuxman 2011-07-11 12:27
Hola Daniel,

en un principio TrasMiSIG estuvo basado en SharpMap, esa versión es la que ves en este post y no corre sobre Linux pues utiliza .Net (hace rato le perdí­ el rastro al proyecto Mono que prometí­a superar este problema).

La nueva versión de TrasMiSIG corre sobre GNU/Linux, Mac OS X y Windows puesto que está basada en PyQGIS, échale un vistazo en este enlace (http://geotux.tuxfamily.org/index.php?option=com_myblog&task=view&id=213&Itemid=59).

Saludos,

Tuxman
Reply | Reply with quote | Quote
 

Add comment


Security code
Refresh

 

On-line users