You are here:GeoTux»Geo-Blogs»SIG de escritorio»Aplicación TRAS-MI-SIG: Cálculo de rutas con Postgres/PostGIS y la librería de desarrollo SharpMap

Estadísticas

Invitados: 50
Usuarios registrados: 3126
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

Miércoles 02 de Abril de 2008 09:32

Aplicación TRAS-MI-SIG: Cálculo de rutas con Postgres/PostGIS y la librería de desarrollo SharpMap

Written by  German Carrillo
Rate this item
(2 votes)
El siguiente es un ejemplo de integración de proyectos de software libre y de código abierto que consiste en una aplicación geográfica denominada Tras-Mi-SIG para consultar y visualizar rutas óptimas en una red de transporte masivo compuesta por estaciones y segmentos.

 

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 Domingo 23 de Octubre de 2011 09:23

Comentarios  

 
+1 # Gracias!geosigma 20-08-2008 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.
Responder | Responder con una citación | Citar
 
 
0 # Agradecimientogeosigma 21-08-2008 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
Responder | Responder con una citación | Citar
 
 
0 # TrasMiSIGtuxman 21-08-2008 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.
Responder | Responder con una citación | Citar
 
 
0 # TrasMiSIGgeosigma 23-08-2008 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!
Responder | Responder con una citación | Citar
 
 
0 # Es factible tener acceso a las fuentes?ojarana 03-09-2008 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
Responder | Responder con una citación | Citar
 
 
0 # TrasMiSIGtuxman 08-09-2008 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:

Citación:
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.
Responder | Responder con una citación | Citar
 
 
0 # baster 06-08-2009 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
Responder | Responder con una citación | Citar
 
 
0 # tuxman 06-08-2009 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
Responder | Responder con una citación | Citar
 
 
0 # galeriabaster 11-08-2009 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.
Responder | Responder con una citación | Citar
 
 
0 # Funciona en Linux?Daniel Rivail Medina López 11-07-2011 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?
Responder | Responder con una citación | Citar
 
 
0 # Re:tuxman 11-07-2011 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
Responder | Responder con una citación | Citar
 

Escribir un comentario


Código de seguridad
Refescar

 

¿Dónde nos leen?

Últimos comentarios