universidad central del ecuador facultad de ingeniería, ciencias

UNIVERSIDAD CENTRAL DEL ECUADOR
FACULTAD DE INGENIERÍA, CIENCIAS FÍSICAS Y MATEMÁTICA
CARRERA DE INGENIERÍA INFORMÁTICA
DISEÑO Y DESARROLLO DE UNA HERRAMIENTA WEB GEOGRÁFICA
PROTOTIPO PARA APOYAR LA OPTIMIZACIÓN DE TIEMPOS DE
RESPUESTA A LOS SERVICIOS DE SALUD AMBULATORIOS DENTRO
DE LAS ÁREAS POBLADAS URBANAS DEL DISTRITO
METROPOLITANO DE QUITO –DMQ-.
TRABAJO DE GRADUACIÓN PREVIO A LA OBTENCIÓN DEL TÍTULO
DE INGENIERO INFORMÁTICO.
AUTOR:
JHONATHAN GUILLERMO VACA CABRERA
TUTOR:
ING. LUIS FELIPE BORJA BORJA
QUITO – ECUADOR
2015
DEDICATORIA
Dedico la presente tesis a Dios, a mis padres que con su incansable apoyo, esfuerzo y
sabiduría han sabido guiar mis pasos, a mis abuelos que ven en este documento
cumplir uno de sus sueños y más anhelados regalos, a mi enamorada y amigos que
siempre han estado ahí para apoyarme y a todas las personas que al conocerlas han
marcado el camino que hoy recorro.
A mi hermana que siempre me motivo a ser y seguir siendo mejor en todo lo que me
propongo ya que ha visto en mí el modelo de persona a seguir en su vida personal y
profesional.
ii
AGRADECIMIENTO
A la Universidad Central del Ecuador, a la facultad de Ingeniería, Ciencias Físicas y
Matemática, a todo el personal docente que han aportado con su conocimiento en mi
formación personal y profesional.
A mi tutor de tesis que fomento en mí el interés en los sistemas de información
geográfica.
Un agradecimiento especial a EXCO y a su gerente de proyectos Elvis Benítez por su
amistad, apoyo y guía durante el desarrollo de la presente tesis.
iii
AUTORIZACIÓN INTELECTUAL
Yo, JHONATHAN GUILLERMO VACA CABRERA en calidad de autor del
trabajo de investigación o tesis realizada sobre el Diseño y desarrollo de una
herramienta web geográfica prototipo para apoyar la optimización de tiempos de
respuesta a los servicios de salud ambulatorios dentro de las áreas pobladas urbanas
del Distrito Metropolitano de Quito –DMQ-, por el presente autorizo a la
UNIVERSIDAD CENTRAL DEL ECUADOR, hacer uso de todos los contenidos
que me pertenecen o de parte de los que contiene esta obra, con fines estrictamente
académicos o de investigación.
Los derechos que como autor me corresponden, con excepción de la presente
autorización, seguirán vigentes a mi favor, de conformidad con lo establecido en los
artículos 5, 6, 8, 19 y demás participantes de la Ley de Propiedad Intelectual y su
reglamento.
Quito, 15 Mayo de 2015
_________________________________________
JHONATHAN GUILLERMO VACA CABRERA
C.C. 1721349890
iv
v
vi
vii
viii
Contenido
PORTADA .................................................................................................................... i
DEDICATORIA........................................................................................................... ii
AGRADECIMIENTO ................................................................................................. iii
AUTORIZACIÓN INTELECTUAL ......................................................................... iv
LISTA DE TABLAS ................................................................................................... xi
LISTA DE ILUSTRACIONES .................................................................................. xii
RESUMEN ................................................................................................................ xiv
ABSTRACT ............................................................................................................... xv
CAPÍTULO 1 ............................................................................................................... 1
Introducción .......................................................................................................... 1
Antecedentes ......................................................................................................... 1
Justificación e importancia .................................................................................... 3
Planteamiento del problema .................................................................................. 3
Formulación del problema .................................................................................... 4
Objetivos de la investigación ................................................................................ 4
Alcance .................................................................................................................. 4
Limitaciones .......................................................................................................... 5
CAPÍTULO 2 ............................................................................................................... 5
Servicios pre hospitalarios públicos en el DMQ ................................................... 5
a.
Servicios pre hospitalarios ............................................................................. 5
b.
Análisis de oferta de servicios públicos pre hospitalarios ............................. 6
c. Estándares nacionales e internacionales para manejo de información para
atención pre hospitalaria. ...................................................................................... 8
d.
Análisis y definición conceptual.................................................................. 11
e. Experiencias de otras ciudades metropolitanas referente a servicios de salud
ambulatorios ........................................................................................................ 16
CAPÍTULO 3 ............................................................................................................. 16
GIS y Dispositivos móviles. ................................................................................ 16
a.
Sistemas de información geográfica (GIS). ................................................. 16
i.
Arquitectura de los servidores de mapas ..................................................... 18
ii.
Entradas y salidas de datos soportados ........................................................ 20
iii.
Tipos de servicios: WMS, WFS............................................................... 25
iv.
Librerías de visualización geográfica ...................................................... 40
v. Frameworks para integración geográfica y alfanumérica. .............................. 42
b. ¿Qué es un dispositivo móvil? ........................................................................ 44
i. Sistemas operativos móviles. .......................................................................... 45
ix
ii. Componentes incorporados en los móviles actuales. ...................................... 48
iii.
Frameworks de desarrollo de aplicaciones móviles................................. 51
CAPÍTULO 4 ............................................................................................................. 53
Infraestructura tecnológica .................................................................................. 53
a. Bases de datos alfanuméricas .......................................................................... 53
b. Bases de datos geográficas .............................................................................. 54
c. Frameworks o librerías para el desarrollo de aplicaciones SIG ...................... 57
d. Algoritmo para encontrar la ruta más corta entre dos puntos ......................... 57
e. Librerías para desarrollo de aplicaciones móviles .......................................... 59
CAPÍTULO 5 ............................................................................................................. 60
Diseño, desarrollo y pruebas del sistema prototipo ............................................ 60
a. Objetivos generales y específicos ................................................................... 60
b. Diseño del sistema. .......................................................................................... 60
i.
Diagrama entidad relación. .......................................................................... 61
ii.
Diagramas de Casos de Uso ........................................................................ 63
iii.
Formularios .............................................................................................. 63
iv.
Prototipo de interfaz. (Móvil y WEB) ..................................................... 64
c.
Pruebas......................................................................................................... 66
i.
Rendimiento................................................................................................. 66
ii.
Control. ........................................................................................................ 71
Manual de usuario. .............................................................................................. 72
a.
Visor Geográfico ......................................................................................... 73
b.
Aplicación Móvil ......................................................................................... 80
CAPÍTULO 6 ............................................................................................................. 83
Conclusiones y recomendaciones ....................................................................... 83
CAPÍTULO 7 ............................................................................................................. 85
Bibliografía ......................................................................................................... 85
ANEXOS............................................................................................................. 90
x
LISTA DE TABLAS
Tabla 1 – Número de ambulancias en el DMQ en el año 2012 (Extra, 2012) .........................................7
Tabla 2 – Representación de colores según su prioridad (Carrasco, Gonzáles, & Moreno, 2000). ......11
Tabla 3 –Alternativas de software requerido. .......................................................................................13
Tabla 4 –Recursos necesarios para desarrollo del sistema. ...................................................................15
Tabla 5 – Ejemplo de petición getCapabilities ......................................................................................28
Tabla 6 – Ejemplo de petición getMap .................................................................................................29
Tabla 7 – Ejemplo de petición getFeatureInfo ......................................................................................29
Tabla 8 – Ejemplo de petición getCapabilities (WFS) ..........................................................................37
Tabla 9 – Ejemplo de petición DescribeFeatureType (WFS) ...............................................................37
Tabla 10 – Ejemplo de petición getFeature (WFS) ...............................................................................38
Tabla 11 – Ejemplo de petición getPropertyValue (WFS) ....................................................................39
Tabla 12 – Ejemplo de petición getFeatureWithLock (WFS) ...............................................................40
Tabla 13 – Unidades de Smartphones vendidos en los años 2013 y 2014 (GFK, 2015) .......................45
Tabla 14 – Porcentaje de distribución del mercado mundial según el sistema operativo al año 2014
(IDC, International Data Corporation, 2014) ........................................................................................47
Tabla 15 – Unidades de Smartphones vendidos en los años 2012,2013 y 2014 clasificados por sistema
operativo (GFK, 2015). .........................................................................................................................48
Tabla 16 – Comparativa SGBD. ...........................................................................................................54
Tabla 17 – Comparativa extensiones geográficas. ................................................................................56
Tabla 18 – Pruebas de rendimiento prototipo web. ...............................................................................67
Tabla 19 – Pruebas de rendimiento prototipo móvil. ............................................................................70
xi
LISTA DE ILUSTRACIONES
Ilustración 1.Esquema de decisión de triaje efectuado por el personal en la atención pre hospitalaria
(Carrasco, Gonzáles, & Moreno, 2000, pág. 177). ..................................................................................9
Ilustración 2.Triaje START usado por la Cruz Roja Ecuatoriana (e-mergencia.com, 2009) ................10
Ilustración 3.Sistema de tarjetas usado por la Cruz Roja Ecuatoriana (Carrasco, Gonzáles, & Moreno,
2000, pág. 173). ....................................................................................................................................11
Ilustración 4. Situaciones de emergencia y prioridad de atención prehospitalaria (Carrasco, Gonzáles,
& Moreno, 2000, pág. 172). ..................................................................................................................11
Ilustración 5.Diagrama de procesos para la atención medica pre hospitalaria. .....................................12
Ilustración 6.Mapa de pozos y decesos por cólera. (Wikipedia, 2005) .................................................17
Ilustración 7.Representacion de un mapa geográfico conformado por diversas capas. ........................18
Ilustración 8.Diagrama de un servidor de mapas en internet (IMS). .....................................................19
Ilustración 9.representación geográfica con GML. ...............................................................................23
Ilustración 10.representación geográfica con KML. .............................................................................24
Ilustración 11.representación geográfica con WMS. ............................................................................24
Ilustración 12.representación funcionamiento de los servicios WMS (Osegeo Live, 2014). ................25
Ilustración 13.representación funcionamiento de los servicios WFS (OSGeo Live, 2014). .................30
Ilustración 14.Relación entre clientes web geográficos (GeoTux, 2012). .............................................41
Ilustración 15. Gráfico arquitectura Geomajas (Geomajas, 2014). .......................................................43
Ilustración 16.Indicador de personas con Smartphones en el Ecuador (INEC, 2013). ..........................45
Ilustración 17.Modelo de capas de un sistema operativo móvil (Android) (Maksim, 2013). ...............46
Ilustración 18.Evolución ventas de Smartphones clasificados por sistema operativo (Wikipedia, 2015).
..............................................................................................................................................................47
Ilustración 19 A-GPS. Diagrama de funcionamiento (Windows Central, 2009). .................................50
Ilustración 20.Orbitas de satélites en la tierra, Glonass (izquierda) y GPS (derecha) (Barbian, 2014).
..............................................................................................................................................................50
Ilustración 21.Triangulación asistida por GPS y Glonass (Glonass.it, s.f.). ..........................................51
Ilustración 22.Android Studio (Android Developer, 2015)...................................................................51
Ilustración 23.IDE XCode (Apple, Inc., 2015). ....................................................................................52
Ilustración 24.Infraestructura de base de datos y extensión geográfica seleccionada para el sistema.
..............................................................................................................................................................57
Ilustración 25.Infraestructura de la capa de presentación seleccionada para el sistema. ...................57
Ilustración 26. Ejemplo topología de red vial. .......................................................................................59
Ilustración 27. Diseño arquitectura del sistema. ..................................................................................61
Ilustración 28. Modelo de base de datos geográfica. ...........................................................................62
Ilustración 29. Diagrama de casos de uso. ............................................................................................63
Ilustración 30.Formulario para el registro de emergencias. .................................................................64
Ilustración 31.Prototipo de interfaz web para el registro de emergencias. .........................................65
xii
Ilustración 32.Prototipo de interfaz móvil (pantalla inicial). .................................................................65
Ilustración 33.Prototipo de interfaz móvil (pantalla de capas temáticas). ...........................................66
Ilustración 34.Estadística de peticiones y bytes de carga durante la primera carga (prototipo web). .68
Ilustración 35.Estadística de peticiones y bytes de carga durante la re - visita (prototipo web). ........68
Ilustración 36.Estadística de peticiones y bytes de carga durante la primera carga (prototipo móvil).
..............................................................................................................................................................71
Ilustración 37.Estadística de peticiones y bytes de carga durante la re - visita (prototipo móvil)........71
Ilustración 38. Pantalla de ingreso al sistema .......................................................................................73
Ilustración 39. Descripción general del visor .......................................................................................73
Ilustración 40. Capas base ....................................................................................................................74
Ilustración 41. Servicios de Salud .........................................................................................................75
Ilustración 42. Medir distancia. ............................................................................................................76
Ilustración 43. Medir área ....................................................................................................................76
Ilustración 44. Punto de coordenadas. ................................................................................................77
Ilustración 45. Ingrese coordenadas para ir a un lugar del mapa. .......................................................77
Ilustración 46. Resultado de búsqueda. ...............................................................................................78
Ilustración 47. Información de elemento. ............................................................................................78
Ilustración 48. Agregar mapas WMS ....................................................................................................78
Ilustración 49. Registro de emergencias ..............................................................................................79
Ilustración 50. Pantalla de ingreso aplicación móvil ............................................................................80
Ilustración 51. Pantalla de inicio aplicación móvil ...............................................................................81
Ilustración 52. Pantalla de localización aplicación móvil .....................................................................81
Ilustración 53. Selección de capas temáticas .......................................................................................82
Ilustración 54. Presentación de la ruta ................................................................................................83
Ilustración 55. Presentación de la ruta más corta ................................................................................83
xiii
RESUMEN
DISEÑO Y DESARROLLO DE UNA HERRAMIENTA WEB GEOGRÁFICA
PROTOTIPO PARA APOYAR LA OPTIMIZACIÓN DE TIEMPOS DE
RESPUESTA A LOS SERVICIOS DE SALUD AMBULATORIOS DENTRO DE
LAS ÁREAS POBLADAS URBANAS DEL DISTRITO METROPOLITANO DE
QUITO –DMQ-.
El presente trabajo de investigación explora la propuesta de desarrollar un sistema
prototipo capaz de ayudar a automatizar la logística de los vehículos de servicios
ambulatorios con la finalidad que a un futuro dichos servicios puedan mejorar a nivel
local y/o nacional con estándares de tiempos de respuesta recomendados
internacionalmente haciendo uso de aplicaciones web en tiempo real.
La aplicación fue desarrollada con conceptos de programación distribuida, utilizando
WebSockets e implementa la arquitectura de 4-capas, la capa de datos PostgreSQL,
PostGIS y pgRouting para manejar topologías viales, la capa de negocio usa
estándares JEE6 sobre el servidor WildFly (v8.2), una capa de servicios para
interoperabilidad del sistema con servicios REST desacoplando la capa de
presentación, permitiendo una aplicación escalable y una capa de presentación
desarrollada con HTML5, JavaScript, JQuery, OpenLayers, JSON y GeoJSON.
DESCRIPTORES:
VISOR GEOGRÁFICO / SIG / WMS / WFS / JSON / GEOJSON / OPENLAYERS
/ JAVA / WEBSOCKETS / SERVICIOS WEB REST / POSTGRESQL / POSTGIS /
PGROUTING / WILDFLY / HTML5 / JQUERY / JQUERY MOBILE /
JAVASCRIPT / HERON-MC
xiv
ABSTRACT
DISIGN AND DEVELOP OF A GEOGRAPHIC PROTOTYPE WEB TOOL TO
SUPPORT THE OPTIMIZATION OF RESPONSE TIMES TO OUTPATIENT
HEALTH SERVICES IN POPULATED AREAS OF THE METROPOLITAN
DISTRICT OF QUITO -DMQ-.
This paper presents the proposal to develop a prototype system capable to help
automate the logistics of vehicles outpatient services in order that in the near future
improve these outpatient services locally and / or country standards of response times
internationally recommended, using real time web applications.
The application was developed under the concepts of distributed programming using
WebSockets and implements the architecture of 4-tiers, where data tier is designed
with PostgreSQL, PostGIS and pgRouting for handling road topologies, the business
tier using JEE6 standards RedHat WildFly (v8.2) server, service tier designed for
system interoperability with web services REST to decouple the presentation tier,
enabling an scalable application and presentation tier developed with HTML5,
JavaScript, JQuery, OpenLayers, JSON and GeoJSON.
DESCRIPTORS:
WEB MAPPING / GIS / WMS / WFS / JSON / GEOJSON / OPENLAYERS /
JAVA / WEBSOCKETS / WEB SERVICES REST / POSTGRESQL / POSTGIS /
PGROUTING / WILDFLY / HTML5 / JQUERY / JQUERY MOBILE /
JAVASCRIPT / HERON-MC
xv
xvi
xvii
CAPÍTULO 1
Introducción
La Universidad Central del Ecuador como institución de educación superior
comprometida con la sociedad y la investigación, junto a la Facultad de Ingeniería
Ciencias Físicas y Matemática
formadora de nuevos profesionales con visión
innovadora capaces de desarrollar soluciones tecnológicas que ayudan a mejorar la
atención a los ciudadanos en distintos ámbitos tales como: educación, salud y
bienestar social. En tal sentido siendo evidentes las necesidades de herramientas
tecnológicas que apoyen en la gestión de información de las entidades de salud tanto
públicas, como privadas las cuales requieren organizar sus recursos de manera
eficiente con el fin de brindar una mejor atención a sus clientes, hemos seleccionado
al servicio ambulatorio como uno de los servicios que actualmente varias casas de
salud ofrecen a través de las llamadas de emergencia que realizan los clientes
(pacientes), para esto es necesario optimizar al máximo los recursos y principalmente
el tiempo necesario para la atención de emergencia.
Una de las ramas de la informática que han tomado mucha fuerza en los últimos años
por su utilidad y ayuda son los GIS o sistemas de información geográfica con el fin
de resolver problemas complejos de planificación y gestión geográfica.
Antecedentes
Quito es una de las ciudades más pobladas del país con una población de 2,239,191
según los datos del último censo realizado en 2010, como toda metrópoli que
aumenta cada vez su población necesita nuevas y mejores formas de distribuir sus
recursos médicos o de atención pre hospitalaria.
Quito cuenta con un sistema vial complejo, en ocasiones con vías de difícil acceso,
las unidades de emergencia como las unidades ambulatorias presentan retrasos
durante un llamado de emergencia y los tiempos de respuesta se encuentran por
encima de los límites recomendados internacionalmente.
Un promedio de 18 minutos tardan en responder a una emergencia las ambulancias que son
coordinadas por el sistema ECU-911, según se confirmó en el Servicio de Atención Pre
hospitalaria del Ministerio de Salud Pública (MSP) donde se admitió que aún no se llega al
tiempo óptimo de respuesta.
(La Hora, 2013)
1
Henry Ochoa, coordinador de atención pre hospitalaria de la Cruz Roja, mantiene
que realmente debería ser de apenas cinco minutos, pero reconoce que el tiempo real
desde que se despacha una ambulancia hasta que ésta llega al sitio donde fue
requerida, puede variar de 2 hasta 12 minutos sin tomar en cuenta los siete
adicionales que transcurren desde que una persona llama al ECU-911 hasta que el
operador
despacha
la
ambulancia,
ese
tiempo
supera
al
recomendado
internacionalmente, que fluctúa entre 5 a 8 minutos (La Hora, 2013).
Los paramédicos reconocen que cerca del 80% de oportunidades, no han llegado a
tiempo a una escena. “A veces no depende de nosotros, si el lugar queda muy lejos
resulta muy complicado llegar a tiempo, en otras ocasiones el problema está en la
central de emergencias” (ciudadaniainformada, 2009).
(El Universo, 2014), “El informe del ECU-911, precisa en 14 minutos y 23 segundos
el tiempo desde que se despacha una ambulancia hasta que esta llega al sitio del
incidente”. Esta realidad no solo se presenta en la ciudad de Quito, como el caso de
Guayaquil otra de las urbes con más densidad poblacional del país donde el 14% de
las ambulancias pedidas no llegan al sitio según el informe del ECU-911 de
Samborondón o en Santo Domingo que solo el 5.2% de los heridos llega a las
unidades de salud en ambulancia.
Datos que dan a conocer una realidad donde el ausentismo, falta de unidades
ambulatorias o un tardío envío de las unidades desde los centros de control apunta
que es necesario un cambio en la gestión de los recursos médicos y los centros de
control.
La introducción y uso de dispositivos móviles es cada vez más elevada, según
información publicada por el ministerio de telecomunicaciones hasta el mes de junio
del año 2014 la penetración de telefonía móvil alcanzó 17’600.0000 de teléfonos
habilitados es decir el 105%, sobre la población que es aproximadamente 16’000.000
de personas, y todo apunta a que esta tendencia se mantendrá a lo largo de los
próximos años.
Nuevas formas de comunicación móvil y la incursión de los visores y sistemas de
información geográfica permiten desarrollar aplicaciones capaces de mejorar la
gestión de los centros de control y permitir una mejoría sustancial en la atención de
los servicios de salud pre hospitalarios.
2
Justificación e importancia
Hoy en día las herramientas de visualización geográfica son cada vez más difundidas
y utilizadas como un instrumento para mejorar las soluciones a los problemas de
logística.
La gran difusión y uso de los equipos móviles con GPS y servicios de Internet móvil
permiten hoy por hoy pensar en aplicaciones de bajo costo capaces de presentar
información real bajo demanda
Con el diseño y desarrollo de ésta aplicación web se proporciona una herramienta
prototipo capas de ayudar a automatizar la logística de los vehículos de los servicios
ambulatorios con la finalidad que a un futuro próximo dichos servicios ambulatorios
puedan mejorar a nivel local y/o nacional con estándares de tiempos de respuesta
recomendados internacionalmente.
Planteamiento del problema
Actualmente las dificultades para encontrar direcciones viales en la ciudad de Quito
requiere de un tiempo considerable, se vuelve crítico el ubicar direcciones para
prestar servicios de salud ocasionando pérdidas de tiempo innecesarias que pueden
afectar negativamente el estado de salud de un paciente.
La inexperiencia de las rutas por parte del personal que participa en las operaciones
de los servicios ambulatorios o falta de información en determinado lugar puede
recaer en la demora y posibles problemas de salud de las personas afectadas durante
una emergencia o atención de salud.
Una mejora en cuanto al cálculo de las distancias necesarias, tiempos máximos y
centros de atención más cercanos permitirían mejorar la atención a la ciudadanía.
Usar sistemas de información geográfica ayudará a actuar con mayor eficiencia a los
operadores de los centros de monitoreo u operaciones en las entidades que prestan
servicios de salud ambulatoria.
3
Formulación del problema
¿Cuál es la ventaja de diseñar y desarrollar un sistema de información geográfico
para el registro y monitoreo geográfico de la atenciones pre hospitalarias?
Objetivos de la investigación
Objetivo General
Generar una herramienta web que permita el registro de datos y cálculo de las
distancias con las rutas óptimas para mejorar los procesos operativos y disminuir los
tiempos de respuesta de los servicios de atención pre hospitalarios a pacientes con
problemas de salud dentro de las áreas pobladas urbanas del DMQ.
Objetivos Específicos
Investigar las principales herramientas para el desarrollo de sistemas de información
geográfica

Diseñar y desarrollar una aplicación web que
permita el registro y
categorización de las atenciones pre hospitalarias por parte de un centro de
operaciones.

Diseñar una aplicación prototipo para localizar las unidades móviles de salud
a través de GPS.

Optimizar la asignación de los recursos vehiculares en los servicios de
atención pre hospitalaria.

Optimizar el tiempo de traslado por parte de los vehículos de salud para
realizar la atención pre hospitalaria.

Desarrollar una aplicación para dispositivos móviles que permita el Registro
de datos del paciente con el estado de salud durante la atención.

Preparar información de vías disponibles en la zona urbana del DMQ de
acuerdo a las necesidades de la herramienta WEB basadas en información
cartográfica disponible y válida.
Alcance
Siendo la logística un tema muy importante para las diferentes instituciones que
proveen servicios de SALUD ambulatoria: atención a emergencias y/o consultas
4
médicas, por lo tanto este tema de tesis se centra principalmente en la creación de
una herramienta informática prototipo que permita la optimización de tiempos de
respuesta de los servicios de emergencia dentro de los sectores poblados urbanos en
el DMQ durante la aparición de una emergencia médica.
Limitaciones
Se puede determinar las siguientes limitaciones.

Falta o reducida información oficial sobre la topología vial.

Políticas gubernamentales cambiantes acerca de la información vial.

Quito y su planificación de nomenclatura vial que presenta constantes
cambios como los vistos en la última década.

Falta de actualización en los datos de la topología vial por parte de una
entidad oficial.

Información cartográfica de vías del DMQ de libre acceso disponible en
Internet con cierto retraso en las actualizaciones de la misma.
CAPÍTULO 2
Servicios pre hospitalarios públicos en el DMQ
a. Servicios pre hospitalarios
La atención pre hospitalario se define como un servicio operacional y de coordinación para los
problemas médicos urgentes y que comprende todos los servicios de salvamento, atención médica y
transporte que se presta a enfermos o accidentados fuera del hospital y que constituye una
prolongación del tratamiento de urgencias hospitalarias. La atención pre hospitalaria debe constituirse
en un sistema integrado de servicios médicos de urgencias y no entenderse como un simple servicio de
traslado de pacientes en ambulancias, atendidos con preparación mínima. (Rodríguez H, 2014)
El objetivo fundamental es ubicar el paciente en el lugar más indicado para su
patología y realizar durante el transporte una serie de actividades médicas de
reanimación y/o soporte que requieren capacitación específica al respecto, con lo
cual se logra una mejor condición de ingreso del paciente al hospital y por tanto
mayor sobrevida frente a la causa del evento urgente. En síntesis la filosofía de la
APH se resume en "llevar al paciente adecuado, al lugar adecuado, en el tiempo
adecuado" (Rodríguez H, 2014).
5
La implementación de la APH exige motivación y participación activa de los
médicos, cooperación entre las instituciones prestadoras de servicios y educación a la
comunidad sobre las ventajas, objetivos, forma de utilización de los recursos
disponibles, etc.
En la atención pre hospitalaria APH el traslado puede provenir como resultado de un
llamado de emergencia al número de discado rápido, al número de ambulancias de
una entidad de salud, etc. y responder a situaciones de traslado individual o
colectivo. En ambos casos es deseable que existan sistemas de regulación que
permitan definir el tipo de ambulancias requerido y las características del traslado
(Rodríguez H, 2014).
Existen diferentes tipos de traslado ya sean primario y secundario, sus diferencias
son evidentes, en el traslado primario el personal no posee la información suficiente
con antelación de un evento para preparar todo lo requerido con tan solo recibir una
llamada,
mientras en el traslado secundario el personal cuenta con toda la
información indispensable para preparar un traslado con todos los implementos
requeridos. En eventos de desastres el transporte de heridos conlleva una etapa previa
de clasificación o triaje, existen diferentes cartillas con clasificación de colores según
la gravedad y/o tipo de atención requerida que deben ser conocidos y aplicados por el
personal encargado del manejo de los centros de clasificación de heridos o CACH.
Existen casos infortunadamente frecuentes, donde se desplaza un número importante
de medios de transporte de heridos a zonas de desastre pero esto no siempre significa
un traslado de los pacientes graves.
Como se mencionó el traslado de pacientes se ha dividido en dos tipos: primario
desde el lugar de ocurrencia del evento urgente hasta el centro de atención y
secundaria entre el centro de atención hacia el domicilio del paciente. También es
importante tener en cuenta la clasificación de las ambulancias terrestres según el tipo
de servicio de traslado que brindan ya sea simple, urgencias básicas o urgencias
avanzadas (Secretaria de Salud, Estados unidos mexicanos, 2004).
b. Análisis de oferta de servicios públicos pre hospitalarios
El 7 de septiembre de 1995 el Ecuador a través de acuerdo ministerial N.2309
fundamentado en la “Ley de derecho y amparo al paciente” crea el comité
Interinstitucional de la Red de emergencias médicas (CIREM) conformadas por Cruz
6
Roja, Cuerpo de Bomberos y gestión de riesgos (Carrasco, Gonzáles, & Moreno,
2000).
En el distrito metropolitano de Quito la coordinación de las ambulancias
pertenecientes al CIREM eran por parte de la central de coordinación de emergencias
911 esta entidad de coordinación tenía financiamiento del sistema Trolebús y del
Patronato Municipal San José (Lcda. Estrella Silva, 2005, pág. 42), para el año 2002
el CIREM deja de funcionar y la central de emergencias 911 asume la coordinación
con las entidades del ex CIREM.
En 2003 en el Distrito Metropolitano de Quito empieza a funcionar la Central
Metropolitana de Atención Ciudadana - CMAC la cual integra a la central de
emergencias médicas 911, bomberos, cruz roja, policía nacional y el sistema de
cámaras de vigilancia “ojos de águila” (La Hora, s.f.).
El 29 de diciembre de 2011 bajo decreto N.988, el Econ. Rafael Correa Delgado
como presidente constitucional de la República del Ecuador implementa el Servicio
Integrado de Seguridad ECU-911 como herramienta tecnológica integradora de los
servicios de emergencia que conforman el Sistema Nacional de Salud (CELI-MERO,
SALDAÑA-SÁNCHEZ, & RODRÍGUEZ-PEÑAFIEL, 2013).
Según indicó Mónica Benítez, directora de la CMAC, en el año 2012 el Distrito
Metropolitano de Quito contaba con 18 unidades para atender las necesidades de
2’239.199 de personas distribuidas de la siguiente manera (Extra, 2012):
Institución
Cuerpo de bomberos
Cruz Roja
Policía Nacional
Número de ambulancias
13
3
2
Tabla 1 – Número de ambulancias en el DMQ en el año 2012 (Extra, 2012)
La Organización Mundial de Salud OMS, establece que se debe tener una
ambulancia por cada 25.000 a 50.000 habitantes, según este indicador el DMQ
requiere por lo menos de 45 ambulancias, existiendo un déficit de 27 ambulancias.
Para reducir el déficit de ambulancias en el país, el gobierno nacional adquirió en
2013 alrededor de 200 ambulancias nuevas, que fueron distribuidas a todas las
provincias del país. El 25 de julio de ese año fueron entregadas para el Distrito
7
Metropolitano de Quito 14 ambulancias nuevas pertenecientes al Ministerio de Salud
Pública, a
pesar de esta adquisición el DMQ aún presenta un déficit de 13
ambulancias (Ministerio de salud pública, 2013).
c. Estándares nacionales e internacionales para manejo de información
para atención pre hospitalaria.
En atención prehospitalaria existen varios métodos para clasificar a los pacientes,
también denominado Triaje que no es más que la clasificación y selección de
pacientes basado en las prioridades de atención, según la información provista por
estos métodos de clasificación un paciente será o no trasladado a un centro de
atención privilegiando las posibilidades de supervivencia (Carrasco, Gonzáles, &
Moreno, 2000, pág. 172).
Los sistemas de triaje más usados en el mundo son: Triaje START, Triaje de
Manchester, Triaje de Andorra y sus variaciones que varían de país en país, en
Ecuador la Cruz Roja Ecuatoriana al igual que la USAID (La Agencia de los Estados
Unidos para el Desarrollo Internacional) (USAID, 2009) divide las emergencias en
dos clases, la primera se denomina emergencias cotidianas en la cual el objetivo del
triaje es trasladar heridos al centro de atención hospitalario más adecuado para
solventar los problemas médicos, se basa principalmente en la urgencia y
secundariamente en la posibilidad de supervivencia. No existen criterios perfectos
para efectuar el triaje, el esquema de decisión de triaje publicado en el Comité de
Trauma del American College of Surgeons realiza un sobretriaje en un 30% de
pacientes (Carrasco, Gonzáles, & Moreno, 2000, pág. 172).
8
Ilustración 1.Esquema de decisión de triaje efectuado por el personal en la atención pre hospitalaria (Carrasco, Gonzáles, &
Moreno, 2000, pág. 177).
La segunda clase se denomina emergencias en situaciones de desastre, en esta
clasificación se usa el triaje y el sistema de tarjeteo que permiten seleccionar a las
víctimas y categorizarlas de acuerdo a las probabilidades de recuperación.
Cuando el tiempo, el personal y los recursos humanos y materiales son insuficientes para afrontar las
necesidades de una situación de desastre en que hay gran cantidad de víctimas, el triage es el único
9
método para proveer un máximo de beneficio a la mayoría de víctimas o heridos en masa. (Carrasco,
Gonzáles, & Moreno, 2000, pág. 172).
El sistema de triaje usado en situaciones de desastre difiere del criterio de triaje
anteriormente expuesto en este documento, la Cruz Roja Ecuatoriana implementa el
uso de triaje START (Simple Triage and Rapid Transport) el cual evalúa tres ítems:
respiración, circulación y nivel de conciencia para determinar el transporte de un
paciente, implementa un código de prioridades basado en los colores negro, rojo,
amarillo y verde al igual que el sistema de tarjeteo.
Ilustración 2.Triaje START usado por la Cruz Roja Ecuatoriana (e-mergencia.com, 2009)
10
Ilustración 3.Sistema de tarjetas usado por la Cruz Roja Ecuatoriana (Carrasco, Gonzáles, & Moreno, 2000, pág. 173).
Prioridad 0
Muertos, moribundos o heridos tan graves que no existe
probabilidad razonable de sobrevivencia.
Prioridad I
Pacientes que necesita atención médica inmediata. Ej.: (paro cardiorespiratorio)
Prioridad II
Pacientes que corren poco riesgo. Ej.: (Traumatismo craneal sin
alteración de la conciencia)
Prioridad III Pacientes con lesiones leves y no requieren de traslado hacia un
centro médico, se realiza la atención de manera ambulatoria. Ej.:
(Lesiones en tejido blando)
Tabla 2 – Representación de colores según su prioridad (Carrasco, Gonzáles, & Moreno, 2000).
Ilustración 4. Situaciones de emergencia y prioridad de atención prehospitalaria (Carrasco, Gonzáles, & Moreno, 2000, pág.
172).
d. Análisis y definición conceptual
11
i.
Diagramas de procesos
Ilustración 5.Diagrama de procesos para la atención medica pre hospitalaria.
12
ii.
Factibilidad técnica, económica y operacional
Para determinar y verificar si el presente proyecto es viable, se ha realizado un
estudio de la factibilidad técnica, económica y operacional.
Factibilidad técnica
Para determinar la factibilidad técnica se analizaron tres aspectos:
Tecnología y Conocimientos técnicos.
Tecnología
Para el desarrollo de la siguiente solución informática se requiere software y
hardware con las siguientes características:
Software
Sistema operativo, base de datos, servidor de mapas, servidor de aplicaciones,
navegador web, navegador web móvil.
Software
Alternativa
Sistema operativo
Linux
Disponibilidad
Centos,
cualquier
Ubuntu
distribución
o Software Open Source.
de
Linux
Windows 7 o Windows server Software Comercial.
2008 sp2
Base de datos
Servidor de mapas
Navegador Web
PostgreSQL - PostGIS
Software Open Source.
MySQL Spatial
Software Open Source.
Oracle Spatial
Software Comercial.
MS SQL Server Spatial
Software Comercial.
GeoServer
Software Open Source.
MapServer
Software Open Source.
ArcGis Server
Software Comercial.
Navegador web con soporte Software Freeware.
HTML5
geolocation
API
(Can I Use, 2015).
Navegador web móvil Navegador móvil con soporte Software Freeware.
HTML5
geolocation
API
(Can I Use, 2015).
Tabla 3 –Alternativas de software requerido.
13
Hardware
Para la implementación del sistema se requiere dos computadores y/o servidores con
mínimo 1.5 gb de RAM para el sistema operativo y 1gb para levantar el servidor de
base de datos y el servidor de aplicación web, disco duro con espacio disponible de
200gb como mínimo, procesador dual core o superior y periféricos de entrada y
salida estándares.
Conocimientos técnicos.
Los conocimientos técnicos del uso de las alternativas de software requerido para el
desarrollo e implementación se encuentran cubiertos por parte del personal de
desarrollo por su experiencia y vinculación con proyectos de geo informática.
Factibilidad Operativa
Dado que el sistema se basa en estándares web HTML5 su operación es muy
sencilla, donde la curva de aprendizaje del funcionamiento del mismo es corta e
intuitiva para cualquier usuario.
El personal que haga uso del sistema no requerirá una capacitación específica para
hacer uso del sistema.
Factibilidad Económica
Se requieren:
Recurso
Cantidad
Costo
Total
1
$600
$600
1
$1000
$4000
2
$150
$300
Computador Core
i5, 4gb de RAM y
1Tb de disco
Desarrollador
(periodo de 4
meses)
Tablet con
14
navegador web que
soporte HTML5
TOTAL
$4900
Tabla 4 –Recursos necesarios para desarrollo del sistema.
Dados que los altos costos de licenciamiento en herramientas propietarias como
ArcGis Server1 y Oracle Spatial2, se ha determinado el uso de programas Open
Source para reducir los costes en el licenciamiento del software y también para
alinearse con el decreto N° 1014 emitido el 10 de Abril de 2008 (Secretaría Nacional
de Administración Pública, 2008), el cual fomenta el uso de software libre en las
instituciones públicas del estado.
Se concluye con este análisis que el sistema es factible y viable en su desarrollo e
implementación.
iii.
Beneficios tangibles e intangibles del sistema
Beneficios tangibles
Los beneficios tangibles del presente sistema son:
Reducción del ausentismo de ambulancias.
Reducción en los tiempos de atención ambulatoria prehospitalaria.
Posibilidad de ser adaptado a diversas ciudades del país.
Beneficios intangibles
Los beneficios intangibles del presente sistema son:
Mejorar la satisfacción del cliente (paciente) al reducir los tiempos de respuesta ante
una emergencia.
Mejorar la percepción de atención ambulatoria pre hospitalaria en la población.
Mejorar en la toma de decisiones, como planificación de reestructuración o
incremente de las unidades ambulatorias en el DMQ.
1
2
Costo licencias ArcGis (Estado de Nueva York, 2014).
Costo licencias Oracle y Oracle Spatial (Oracle, 2015).
15
e. Experiencias de otras ciudades metropolitanas referente a servicios de
salud ambulatorios
Las principales metrópolis del país como Guayaquil y Cuenca presentan los mismos
problemas anteriormente señalados en este documento, ciudades metropolitanas de
los países vecinos de la región como Bogotá también cuentan con un problema
similar de movilización y transporte, no se ha encontrado sistemas similares para
cálculos de rutas óptimas para mejorar los tiempos de respuesta de los servicios de
atención prehospitalaria, lo cual indica que este tipo de proyectos tendrán un efecto
positivo en la población de las metrópolis que decidan implementar este tipo de
sistemas.
CAPÍTULO 3
GIS y Dispositivos móviles.
a. Sistemas de información geográfica (GIS).
Los sistemas de información geográfica SIG o por sus siglas en ingles GIS, es un
conjunto de herramientas informáticas que permiten agregar, manipular, almacenar,
procesar y presentar datos del mundo real representado en coordenadas espaciales
“x” y “y”, la NASA define a los GIS como un sistema integrado de quipos de
computo, software y personal calificado enlazando recursos topográficos,
demográficos, servicios públicos, instalaciones, imágenes y otros que son
geográficamente referenciados (“GIS is an integrated system of computer hardware,
software, and trained personnel linking topographic, demographic, utility, facility,
image and other resource data that is geographically referenced.” (Gopi, 2008, pág.
7).).
A través de la historia el hombre ha requerido asociar información de lugares
geográficos3 y eventos del mundo real, por ejemplo las pinturas rupestres usadas por
los hombres de Cromañón los cuales asociaban animales que cazaban con trazos
lineales relacionados a las rutas de migración de dichas especies animales.
El primer intento de asociar fenómenos del mundo real y la información cartográfica
fue a mediados del siglo XIX durante un ataque de cólera en SOHO, LONDRES
donde el Dr. John Snow cartografió los pozos de agua y los decesos por cólera para
determinar la fuente de la infección. (Cerda Lorca & Valdivia C., 2007)
3
Historia de los sistemas de información geográfica (Youtube, 2011)
16
Ilustración 6.Mapa de pozos y decesos por cólera. (Wikipedia, 2005)
La evolución de la cartografía a los SIG se dio durante los años 60 unos pocos años
después del lanzamiento de los primeros satélites a la órbita terrestre, los cuales
fotografiaron al planeta y encontraron las medidas exactas de la tierra, donde un
mainframe integraba información cartográfica en capas sobre la cultura, demografía,
el medio ambiente de una determinada localidad (PennState University, s.f.).
A finales de los años 80’s se crea TIGER (Referenciación y codificación geográfica
integradas topológicamente) siendo la base para los SIG de dominio público como
Map Quest, Yahoo Maps y Google maps que fueron desarrollados en la década de
los 90’s hasta la actualidad, integrando la cartografía con información de ubicación
de lugares, sitios de interés, sitios socialmente aceptados y transportándolos de un
computador personal a un dispositivo móvil a principios del siglo XXI gracias a la
incorporación de los GPS en los nuevos smartphones de consumo masivo (PennState
University, s.f.).
17
Los mapas en internet solían ser muy complejos, requerían de software especializado
y un fuerte conocimiento sobre los procesos y tipos de datos usados para la creación
de mapas y/o productos cartográficos, hoy en día se usan los servidores de mapas que
son piezas de una arquitectura tecnológica proveniente de diferentes fuentes de datos,
esta arquitectura está construida sobre componentes tecnológicos categorizados que
hacen a un mapa funcionar.
i.
Arquitectura de los servidores de mapas
Se entiende un mapa como la unión de un número de capas, topografías,
transportación, hidrología, cobertura terrestre y construcciones humanas entre otras,
donde cada capa representa una porción de información del mundo real interpretadas
por algoritmos para la visualización por parte de un servidor de mapas.
Ilustración 7.Representacion de un mapa geográfico conformado por diversas capas.
Un servidor de mapas gestiona y provee información, a través de la internet,
proveniente de datos satelitales como imágenes raster, imágenes vectoriales, puntos y
trazas GPS procesadas por un motor de base de datos geográfica permitiendo la
generación de mapas de una manera sencilla y fácil; gracias a la gran difusión de la
internet que ha permitido facilitar la publicación y obtención de información
cartográfica en tiempo real de una manera eficaz a un bajo coste.
18
Ilustración 8.Diagrama de un servidor de mapas en internet (IMS).
Un servidor de mapas interviene en el proceso de mapeo web o web mapping que es
el proceso de diseño, aplicación, generación y visualización u ofrecer datos
geoespaciales a través de la World Wide Web (Wikipedia, 2015), esta tecnología
intenta suministrar datos geográficos en un formato estándar GML para obtener una
máxima interoperabilidad aprovechando la arquitectura cliente-servidor entre el
servidor IMS y una gran variedad de dispositivos clientes (navegadores web con
JavaScript, applets, aplicaciones para móviles, etc.) que interactúan a través de
19
consultas y/o peticiones desde el servidor de mapas a una geodatabase o archivo de
datos geográficos retornando un objeto geográfico.
La clave principal de esta arquitectura es separar los mapas en capas funcionales:

Motor de base de datos (Geodatabase): Los datos geográficos por si solos son
útiles pero se requiere un motor de base de datos para administrarlos en un
almacén de datos consistente para la lectura y/o escritura para mantener la
integridad de los mismos, es aquí donde intervienen las bases de datos
relacionales como PostgreSQL y su extensión geográfica PostGIS, Oracle
Spatial, MySQL Spatial, MS SQL Server Spatial, Spatialite entre las más
populares en el mercado.

Servidor de mapas (Servidor de aplicación): La información contenida en la
geodatabase es accedida por el servidor de mapas a través de conexiones
ODBC/JDBC, esta información es procesada e interpretada para generar
servicios de mapas cartográficos que luego serán consultados por el cliente.

Servicios de mapas: Los servicios de mapas son estándares de representación
geográfica en formato de imagen digital que ofrecen las siguientes
operaciones:
o Devolver metadatos del nivel de servicio
o Devolver un mapa con parámetros geográficos y dimensionales bien
definidos.
o Devolver información de características particulares mostradas en el
mapa (Wikipedia, 2015).

Cliente (interfaz web, móvil): un cliente de mapas es un componente que
interpreta las características espaciales y capas de mapas.
ii.
Entradas y salidas de datos soportados
Existe una diversidad de servidores de mapas por internet o IMS, que proveen tanto
información vectorial como raster, estos servidores se basan en los estándares de
referencia de la OGC (Open Geospatial Consortium) cuyo fin es la creación de
estándares abiertos con capacidad de interoperabilidad dentro de los sistemas de
información geográfica y la Word Wide Web.
Los formatos de entrada u orígenes de datos geoespaciales se dividen en:
20

Vector (Imágenes vectoriales).- es una definición atributos matemáticos de
segmentos, formas, líneas, polígonos y su ubicación geo referenciada.

Archivos shape.- formato de representación de datos espaciales creado por la
empresa ESRI, se ha convertido en el estándar de facto para el intercambio de
información geográfica. Es un formato vectorial que guarda objetos
geográficos, pero carece de capacidad de almacenamiento de información
topológica. Información topológica que es usada en las redes de nodos como
las redes viales.

WFS externo.- Capacidad de cargar datos de un Web Feature Server remoto
(WFS) y luego ser utilizados como servicios WMS, KML, GML, etc.

Bases de datos espaciales.- PostGIS, ArcSDE, DB2, Oracle Spatial, MySQL,
SQL Server son bases de datos con capacidades espaciales que permiten la
representación vectorial de los objetos espaciales almacenados en forma de
tablas, a estas bases de datos también se las conoce como geodatabase.

Raster (Imágenes renderizadas), es un modelo de datos espaciales que no es
más que una matriz con celdas de igual tamaño compuestos por uno o varias
bandas RGB y un atributo de representación geográfica (ESRI, 2015).
Geo TIFF, JPG y PNG geo referenciados, formatos GDAL, imágenes MOSAIC,
imágenes pyramid, Oracle GeoRaster.
A continuación se detallan las especificaciones más importantes sugeridas por la
OGC (formatos de salida)

GML.- Lenguaje de marcado geográfico, que es un sublenguaje XML para el
modelaje, transporte y almacenamiento de la información geográfica. Se
considera como una definición de entendimiento común de los datos entre los
diferentes sistemas de software que hacen uso de este tipo de datos
(Wikipedia, 2013).
21
<wfs:FeatureCollection xmlns="http://www.opengis.net/wfs"
xmlns:wfs="http://www.opengis.net/wfs" xmlns:mseg="com.exco"
xmlns:gml="http://www.opengis.net/gml"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="com.exco
http://186.101.170.100:8895/geoserver/mseg/wfs?service=WFS&version=1.0.0&
request=DescribeFeatureType&typeName=mseg%3Ahoteleria
http://www.opengis.net/wfs
http://186.101.170.100:8895/geoserver/schemas/wfs/1.0.0/WFS-basic.xsd">
<gml:boundedBy>
<gml:null>unknown</gml:null>
</gml:boundedBy>
<gml:featureMember>
<mseg:hoteleria fid="hoteleria.1">
<mseg:orden>1</mseg:orden>
<mseg:nombre>CASA SIMPSON</mseg:nombre>
<mseg:num_camas>37</mseg:num_camas>
<mseg:x>695546.388599999950000</mseg:x>
<mseg:y>9621588.339999999900000</mseg:y>
<mseg:zona>Z07</mseg:zona>
<mseg:provincia>19</mseg:provincia>
<mseg:canton>1908</mseg:canton>
<mseg:parroquia>190850</mseg:parroquia>
<mseg:telefono>3041777</mseg:telefono>
<mseg:e_mail>[email protected]</mseg:e_mail>
<mseg:repres_leg>SOLIS RAMÍREZ ENRIQUE LUIS</mseg:repres_leg>
<mseg:celular>993823347</mseg:celular>
<mseg:geom>
<gml:Point
srsName="http://www.opengis.net/gml/srs/epsg.xml#32717">
<gml:coordinates
xmlns:gml="http://www.opengis.net/gml" decimal="." cs="," ts="
">695546.3886,9621588.34</gml:coordinates>
</gml:Point>
22
</mseg:geom>
</mseg:hoteleria>
</gml:featureMember>
</wfs:FeatureCollection>
Ilustración 9.representación geográfica con GML.

KML.- Keyhole Markup Language basado en XML, desarrollado por
Keyhole LT, adquirida por Google Earth en 2004, puede ser distribuido en un
formato comprimido o KMZ. Este tipo de fichero consta de una estructura
simple con un título, una descripción básica y sus respectivas coordenadas
que especifican una característica para Google Earth como imágenes, lugares
o polígonos (Wikipedia, 2014).
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<kml xmlns="http://www.opengis.net/kml/2.2"
xmlns:ns2="http://www.google.com/kml/ext/2.2"
xmlns:ns3="http://www.w3.org/2005/Atom"
xmlns:ns4="urn:oasis:names:tc:ciq:xsdschema:xAL:2.0">
<Document>
<LookAt>
<longitude>-83.59115418048592</longitude>
<latitude>-1.6708906958243261</latitude>
<altitude>2488104.64468543</altitude>
<heading>0.0</heading>
<tilt>0.0</tilt>
<range>2010519.0581503562</range>
<altitudeMode>clampToGround</altitudeMode>
</LookAt>
<NetworkLink>
<name>ahiss:provincias</name>
<visibility>1</visibility>
<open>1</open>
<LookAt>
<longitude>-83.59115418048592</longitude>
23
<latitude>-1.6708906958243261</latitude>
<altitude>2488104.64468543</altitude>
<heading>0.0</heading>
<tilt>0.0</tilt>
<range>2010519.0581503562</range>
<altitudeMode>clampToGround</altitudeMode>
</LookAt>
<Url>
<href>http://186.101.170.100:8895/geoserver/ahiss/wms?service=wms&amp;requ
est=GetMap&amp;version=1.1.1&amp;format=application/vnd.googleearth.kml+xml&amp;layers=ahiss:provincias&amp;styles=provincias&amp;heig
ht=330&amp;width=827&amp;transparent=false&amp;srs=EPSG:4326</href>
<refreshInterval>0.0</refreshInterval>
<viewRefreshMode>onStop</viewRefreshMode>
<viewRefreshTime>1.0</viewRefreshTime>
<viewBoundScale>1.0</viewBoundScale>
</Url>
</NetworkLink>
</Document>
</kml>
Ilustración 10.representación geográfica con KML.
WMS.- Servicio de mapas en la web o Web Map Service, es un estándar de la OGC
probablemente el más utilizado, produce mapas en formato de imagen renderizada
bajo demanda para ser visualizados por un cliente ya sea web o de escritorio, la
apariencia puede ser modificada utilizando el descriptor de capas estilizado o SLD.
Ilustración 11.representación geográfica con WMS.
WFS.- Servicio de entidades vectoriales o Web Feature Service, proporciona una
interfaz de comunicación que permite interactuar con los mapas servidos por el
WMS, permitiendo realizar consultas y recuperación de elementos geográficos.
24
WFS-T.- Es la implementación transaccional del servicio WFS para permitir la
creación, eliminación y actualización de los elementos geográficos en el mapa.
iii.
Tipos de servicios: WMS, WFS
Web Map Service (WMS)
Web Map Service (WMS) es uno de los estándares desarrollados por la OGC, este
estándar proporciona un interface HTTP para la petición de imágenes de mapas
registrados en una geodatabase. La respuesta a la petición es una o más imágenes de
mapas (devueltas como JPEG, PNG, etc.) que se pueden visualizar en buscadores y
aplicaciones de escritorio, adicionalmente la interfaz WMS también permiten
especificar si una imagen enviada sea transparente y pueda ser combinada con
imágenes de otros servidores (OCG, 2012).
Ilustración 12.representación funcionamiento de los servicios WMS (Osegeo Live, 2014).
El estándar WMS define tres operaciones, estas especificaciones determinan la
implementación y uso de operaciones WMS en el protocolo HTTP.
25
GetCapabilities (requerido): Obtiene los metadatos del servicio, que constituyen
una descripción interpretable automáticamente (y también legible para humano) de
información del contenido de los WMS’s y los parámetros de petición aceptados por
el servicio (OSGeoLive, 2014).
http://190.11.24.213:8080/geoserver/wms?request=getCapabilities
<WMS_Capabilities xmlns="http://www.opengis.net/wms" xmlns:xlink="http://www.w3.org/1
999/xlink" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="1.3.0" updat
eSequence="380" xsi:schemaLocation="http://www.opengis.net/wms http://190.11.24.213:8080
/geoserver/schemas/wms/1.3.0/capabilities_1_3_0.xsd">
<Service>
<Name>WMS</Name>
<Title>GeoServer Web Map Service</Title>
<Abstract>
A compliant implementation of WMS plus most of the SLD extension (dynamic stylin
g). Can also generate PDF, SVG, KML, GeoRSS
</Abstract>
<KeywordList>
<Keyword>WFS</Keyword>
<Keyword>WMS</Keyword>
<Keyword>GEOSERVER</Keyword>
</KeywordList>
<OnlineResource xlink:type="simple" xlink:href="http://geoserver.sourceforge.net/ht
ml/index.php"/>
<ContactInformation>
</ContactInformation>
<Fees>NONE</Fees>
<AccessConstraints>NONE</AccessConstraints>
</Service>
<Capability>
<Request>
<GetCapabilities>
<Format>text/xml</Format>
<DCPType>
<HTTP>
<Get>
<OnlineResource xlink:type="simple" xlink:href="http://190.
11.24.213:8080/geoserver/ows?SERVICE=WMS&"/>
</Get>
<Post>
<OnlineResource xlink:type="simple" xlink:href="http://190.
11.24.213:8080/geoserver/ows?SERVICE=WMS&"/>
</Post>
</HTTP>
</DCPType>
</GetCapabilities>
<GetMap>
<Format>image/png</Format>
<Format>application/atom+xml</Format>
<Format>application/pdf</Format>
<Format>application/vnd.google-earth.kml+xml</Format>
<Format>
application/vnd.google-earth.kml+xml;mode=networklink
</Format>
<Format>application/vnd.google-earth.kmz</Format>
<Format>image/gif</Format>
<Format>image/jpeg</Format>
<Format>image/svg+xml</Format>
26
<Format>image/tiff</Format>
<DCPType>
<HTTP>
<Get>
<OnlineResource xlink:type="simple" xlink:href="ht
tp://190.11.24.213:8080/geoserver/ows?SERVICE=WMS&"/>
</Get>
</HTTP>
</DCPType>
</GetMap>
<GetFeatureInfo>
<Format>text/plain</Format>
<Format>application/vnd.ogc.gml</Format>
<Format>application/vnd.ogc.gml/3.1.1</Format>
<Format>text/html</Format>
<DCPType>
<HTTP>
<Get>
<OnlineResource xlink:type="simple" xlink:href="http://190.
11.24.213:8080/geoserver/ows?SERVICE=WMS&"/>
</Get>
</HTTP>
</DCPType>
</GetFeatureInfo>
</Request>
<Exception>
<Format>XML</Format>
<Format>INIMAGE</Format>
<Format>BLANK</Format>
</Exception>
<Layer>
<Title>GeoServer Web Map Service</Title>
<Abstract>
A compliant implementation of WMS plus most of the SLD extension (dynamic stylin
g). Can also generate PDF, SVG, KML, GeoRSS
</Abstract>
<CRS>EPSG:4326</CRS>
<CRS>EPSG:32717</CRS>
<CRS>CRS:84</CRS>
<EX_GeographicBoundingBox>
<westBoundLongitude>-81.40093999999999</westBoundLongitude>
<eastBoundLongitude>-74.77706</eastBoundLongitude>
<southBoundLatitude>-90.0</southBoundLatitude>
<northBoundLatitude>1.54094</northBoundLatitude>
</EX_GeographicBoundingBox>
<Layer queryable="1">
<Name>amb:administraciones_zonales</Name>
<Title>Administraciones zonales</Title>
<Abstract>Administraciones zonales</Abstract>
<KeywordList/>
<CRS>EPSG:32717</CRS>
<CRS>CRS:84</CRS>
<EX_GeographicBoundingBox>
<westBoundLongitude>-78.99960940000001</westBoundLongitude>
<eastBoundLongitude>-78.11839059999998</eastBoundLongitude>
<southBoundLatitude>-0.608109400000007</southBoundLatitude>
<northBoundLatitude>0.273109400000007</northBoundLatitude>
</EX_GeographicBoundingBox>
<BoundingBox CRS="EPSG:32717" minx="728348.017" miny="9934644.321
" maxx="815024.891" maxy="1.0028272023E7"/>
27
<Style>
<Name>polygon</Name>
<Title>Default Polygon</Title>
<Abstract>A sample style that draws a polygon</Abstract>
<LegendURL width="20" height="20">
<Format>image/png</Format>
<OnlineResource xmlns:xlink="http://www.w3.org/1999/xlin
k" xlink:type="simple" xlink:href="http://190.11.24.213:8080/geoserver/ows?service=WMS&
request=GetLegendGraphic&format=image%2Fpng&width=20&height=20&layer=administ
raciones_zonales"/>
</LegendURL>
</Style>
</Layer>
<Layer queryable="1">
<Name>biomasa2</Name>
<Title>biomasa2</Title>
<Abstract>Layer-Group type layer: biomasa2</Abstract>
<CRS>EPSG:32717</CRS>
<EX_GeographicBoundingBox>
<westBoundLongitude>-78.9481082627106</westBoundLongitude>
<eastBoundLongitude>-78.16985061390422</eastBoundLongitude>
<southBoundLatitude>-0.5913444864054345</southBoundLatitude>
<northBoundLatitude>0.2561492398119479</northBoundLatitude>
</EX_GeographicBoundingBox>
<BoundingBox CRS="EPSG:32717" minx="728373.303" miny="9934596.423
" maxx="815037.1" maxy="1.0028330477E7"/>
</Layer>
</Layer>
</Capability>
</WMS_Capabilities>
Tabla 5 – Ejemplo de petición getCapabilities
GetMap (requerido): Obtiene una imagen de mapa con unos parámetros
geoespaciales y de dimensión bien definidos.
http://186.101.170.100:8895/geoserver/ahiss/wms?service=WMS&version=1.1.0&re
quest=GetMap&layers=ahiss:provincias&styles=&bbox=-92.04525439596057,5.019145015049528,75.16591206239954,1.7135316572164065&width=827&height=330&srs=EPSG:43
26&format=application/openlayers
28
Tabla 6 – Ejemplo de petición getMap
GetFeatureInfo (optional): Pregunta por información sobre una entidad (feature) en
particular, de las mostradas en el mapa.
http://186.101.170.100:8895/geoserver/ahiss/wms?REQUEST=GetFeatureInfo&EX
CEPTIONS=application%2Fvnd.ogc.se_xml&BBOX=-97.23763%2C7.092438%2C69.973536%2C3.786825&SERVICE=WMS&INFO_FORMAT=text%2Fhtml&QU
ERY_LAYERS=ahiss%3Aprovincias&FEATURE_COUNT=50&Layers=ahiss%3A
provincias&WIDTH=827&HEIGHT=330&format=image%2Fpng&styles=&srs=EP
SG%3A4326&version=1.1.1&x=625&y=171
Tabla 7 – Ejemplo de petición getFeatureInfo
El estándar actualmente se encuentra implementado en cientos de productos, muchos
de los cuales se registran en la OCG4.
Web Feature Service (WFS)
4
OGC listado de aplicaciones con implementación WMS (OGC, s.f.)
29
Web Feature Service (WFS) estándar desarrollado por la OGC define operaciones
Web de interface para la consulta y edición de entidades geográficas (en inglés
features) vectoriales, como por ejemplo carreteras o líneas de contorno de lagos o
ríos (OGC, Open Geo Spatial , s.f.).
Ilustración 13.representación funcionamiento de los servicios WFS (OSGeo Live, 2014).
El estándar WFS define once operaciones estándar, cinco soportadas por todas las
versiones y seis operaciones solo disponibles en la versión 2.0.0:
Disponible por todas las versiones del protocolo WFS:
GetCapabilities (operación de descubrimiento) Obtiene los metadatos del servicio,
que constituyen una descripción interpretable automáticamente (y también legible
para humano) de información del contenido de los WFS’s y los parámetros de
petición aceptados por el servicio.
http://186.101.170.100:8895/geoserver/wfs?request=getCapabilities
<wfs:WFS_Capabilities xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" x
mlns="http://www.opengis.net/wfs/2.0" xmlns:wfs="http://www.opengis.net/wfs/2.0"
xmlns:ows="http://www.opengis.net/ows/1.1" xmlns:gml="http://www.opengis.net/g
ml/3.2" xmlns:fes="http://www.opengis.net/fes/2.0" xmlns:xlink="http://www.w3.org/
1999/xlink" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:it.geosolutions=
"http://www.geo-solutions.it" xmlns:tiger="http://www.census.gov" xmlns:topp="http
://www.openplans.org/topp"
30
xmlns:sf="http://www.openplans.org/spearfish"
xmlns:ahiss="ahiss" xmlns:bnf="bnf" xmlns:cite="http://www.opengeospatial.net/cite
" xmlns:optisesa="ec.edu.uce.optisesa" xmlns:sde="http://geoserver.sf.net" xmlns:mse
g="com.exco" xmlns:sni="ec.gob.senplades" xmlns:nurc="http://www.nurc.nato.int"
version="2.0.0" xsi:schemaLocation="http://www.opengis.net/wfs/2.0 http://186.101.1
70.100:8895/geoserver/schemas/wfs/2.0/wfs.xsd" updateSequence="917">
<ows:ServiceIdentification>
<ows:Title>GeoServer Web Feature Service</ows:Title>
<ows:Abstract>
This is the reference implementation of WFS 1.0.0 and WFS 1.1.0, s
upports all WFS operations including Transaction.
</ows:Abstract>
<ows:Keywords>
<ows:Keyword>WFS</ows:Keyword>
<ows:Keyword>WMS</ows:Keyword>
<ows:Keyword>GEOSERVER</ows:Keyword>
</ows:Keywords>
<ows:ServiceType>WFS</ows:ServiceType>
<ows:ServiceTypeVersion>2.0.0</ows:ServiceTypeVersion>
<ows:Fees>NONE</ows:Fees>
<ows:AccessConstraints>NONE</ows:AccessConstraints>
</ows:ServiceIdentification>
<ows:ServiceProvider>
<ows:ProviderName>The ancient geographes INC</ows:ProviderNam
e>
<ows:ServiceContact>
<ows:IndividualName>Claudius Ptolomaeus</ows:Individual
Name>
<ows:PositionName>Chief geographer</ows:PositionName>
<ows:ContactInfo>
<ows:Phone>
<ows:Voice/>
<ows:Facsimile/>
</ows:Phone>
<ows:Address>
<ows:City>Alexandria</ows:City>
<ows:AdministrativeArea/>
<ows:PostalCode/>
<ows:Country>Egypt</ows:Country>
</ows:Address>
</ows:ContactInfo>
</ows:ServiceContact>
</ows:ServiceProvider>
<ows:OperationsMetadata>
<ows:Operation name="GetCapabilities">
<ows:DCP>
<ows:HTTP>
<ows:Get xlink:href="http://186.101.170.100
:8895/geoserver/wfs"/>
<ows:Post xlink:href="http://186.101.170.10
0:8895/geoserver/wfs"/>
</ows:HTTP>
</ows:DCP>
<ows:Parameter name="AcceptVersions">
<ows:AllowedValues>
<ows:Value>1.0.0</ows:Value>
<ows:Value>1.1.0</ows:Value>
<ows:Value>2.0.0</ows:Value>
</ows:AllowedValues>
</ows:Parameter>
31
<ows:Parameter name="AcceptFormats">
<ows:AllowedValues>
<ows:Value>text/xml</ows:Value>
</ows:AllowedValues>
</ows:Parameter>
</ows:Operation>
<ows:Operation name="DescribeFeatureType">
<ows:DCP>
<ows:HTTP>
<ows:Get xlink:href="http://186.101.170.100
:8895/geoserver/wfs"/>
<ows:Post xlink:href="http://186.101.170.10
0:8895/geoserver/wfs"/>
</ows:HTTP>
</ows:DCP>
<ows:Parameter name="outputFormat">
<ows:AllowedValues>
<ows:Value>text/xml; subtype=gml/3.2</ow
s:Value>
</ows:AllowedValues>
</ows:Parameter>
</ows:Operation>
<ows:Operation name="GetFeature">
<ows:DCP>
<ows:HTTP>
<ows:Get xlink:href="http://186.101.170.100:8895/ge
oserver/wfs"/>
<ows:Post xlink:href="http://186.101.170.100:8895/g
eoserver/wfs"/>
</ows:HTTP>
</ows:DCP>
<ows:Parameter name="resultType">
<ows:AllowedValues>
<ows:Value>results</ows:Value>
<ows:Value>hits</ows:Value>
</ows:AllowedValues>
</ows:Parameter>
<ows:Parameter name="outputFormat">
<ows:AllowedValues>
<ows:Value>text/xml; subtype=gml/3.2</ows:Value
>
<ows:Value>GML2</ows:Value>
<ows:Value>KML</ows:Value>
<ows:Value>SHAPE-ZIP</ows:Value>
<ows:Value>application/gml+xml; version=3.2</ow
s:Value>
<ows:Value>application/json</ows:Value>
<ows:Value>application/vnd.google-earth.kml xml<
/ows:Value>
<ows:Value>application/vnd.google-earth.kml+xml
</ows:Value>
<ows:Value>csv</ows:Value>
<ows:Value>gml3</ows:Value>
<ows:Value>gml32</ows:Value>
<ows:Value>json</ows:Value>
<ows:Value>text/xml;
subtype=gml/2.1.2</ows:Value>
<ows:Value>text/xml; subtype=gml/3.1.1</ows:Valu
e>
</ows:AllowedValues>
32
</ows:Parameter>
<ows:Constraint name="PagingIsTransactionSafe">
<ows:NoValues/>
<ows:DefaultValue>FALSE</ows:DefaultValue>
</ows:Constraint>
<ows:Constraint name="CountDefault">
<ows:NoValues/>
<ows:DefaultValue>1000000</ows:DefaultValue>
</ows:Constraint>
</ows:Operation>
<ows:Operation name="GetPropertyValue">
<ows:DCP>
<ows:HTTP>
<ows:Get xlink:href="http://186.101.170.100
:8895/geoserver/wfs"/>
<ows:Post xlink:href="http://186.101.170.10
0:8895/geoserver/wfs"/>
</ows:HTTP>
</ows:DCP>
<ows:Parameter name="resolve">
<ows:AllowedValues>
<ows:Value>none</ows:Value>
</ows:AllowedValues>
</ows:Parameter>
</ows:Operation>
<ows:Operation name="ListStoredQueries">
<ows:DCP>
<ows:HTTP>
<ows:Get xlink:href="http://186.101.170.100
:8895/geoserver/wfs"/>
<ows:Post xlink:href="http://186.101.170.10
0:8895/geoserver/wfs"/>
</ows:HTTP>
</ows:DCP>
</ows:Operation>
<ows:Operation name="DescribeStoredQueries">
<ows:DCP>
<ows:HTTP>
<ows:Get xlink:href="http://186.101.170.100
:8895/geoserver/wfs"/>
<ows:Post xlink:href="http://186.101.170.10
0:8895/geoserver/wfs"/>
</ows:HTTP>
</ows:DCP>
</ows:Operation>
<ows:Operation name="CreateStoredQuery">
<ows:DCP>
<ows:HTTP>
<ows:Post xlink:href="http://186.101.170.10
0:8895/geoserver/wfs"/>
</ows:HTTP>
</ows:DCP>
</ows:Operation>
<ows:Operation name="DropStoredQuery">
<ows:DCP>
<ows:HTTP>
<ows:Get
xlink:href="http://186.101.170.100:8895/geoserver/wfs"/>
<ows:Post xlink:href="http://186.101.170.10
0:8895/geoserver/wfs"/>
33
</ows:HTTP>
</ows:DCP>
</ows:Operation>
<ows:Operation name="LockFeature">
<ows:DCP>
<ows:HTTP>
<ows:Get xlink:href="http://186.101.170.100
:8895/geoserver/wfs"/>
<ows:Post xlink:href="http://186.101.170.10
0:8895/geoserver/wfs"/>
</ows:HTTP>
</ows:DCP>
<ows:Parameter name="releaseAction">
<ows:AllowedValues>
<ows:Value>ALL</ows:Value>
<ows:Value>SOME</ows:Value>
</ows:AllowedValues>
</ows:Parameter>
</ows:Operation>
<ows:Operation name="GetFeatureWithLock">
<ows:DCP>
<ows:HTTP>
<ows:Get xlink:href="http://186.101.170.100
:8895/geoserver/wfs"/>
<ows:Post xlink:href="http://186.101.170.10
0:8895/geoserver/wfs"/>
</ows:HTTP>
</ows:DCP>
<ows:Parameter name="resultType">
<ows:AllowedValues>
<ows:Value>results</ows:Value>
<ows:Value>hits</ows:Value>
</ows:AllowedValues>
</ows:Parameter>
<ows:Parameter name="outputFormat">
<ows:AllowedValues>
<ows:Value>text/xml; subtype=gml/3.2</ow
s:Value>
<ows:Value>GML2</ows:Value>
<ows:Value>KML</ows:Value>
<ows:Value>SHAPE-ZIP</ows:Value>
<ows:Value>application/gml+xml; version=
3.2</ows:Value>
<ows:Value>application/json</ows:Value>
<ows:Value>application/vnd.google-earth.k
ml xml</ows:Value>
<ows:Value>application/vnd.google-earth.k
ml+xml</ows:Value>
<ows:Value>csv</ows:Value>
<ows:Value>gml3</ows:Value>
<ows:Value>gml32</ows:Value>
<ows:Value>json</ows:Value>
<ows:Value>text/xml; subtype=gml/2.1.2</o
ws:Value>
<ows:Value>text/xml; subtype=gml/3.1.1</o
ws:Value>
</ows:AllowedValues>
</ows:Parameter>
<ows:Constraint name="PagingIsTransactionSafe">
<ows:NoValues/>
34
<ows:DefaultValue>FALSE</ows:DefaultValue>
</ows:Constraint>
<ows:Constraint name="CountDefault">
<ows:NoValues/>
<ows:DefaultValue>1000000</ows:DefaultValue>
</ows:Constraint>
</ows:Operation>
<ows:Operation name="Transaction">
<ows:DCP>
<ows:HTTP>
<ows:Get xlink:href="http://186.101.170.100
:8895/geoserver/wfs"/>
<ows:Post xlink:href="http://186.101.170.10
0:8895/geoserver/wfs"/>
</ows:HTTP>
</ows:DCP>
<ows:Parameter name="inputFormat">
<ows:AllowedValues>
<ows:Value>text/xml; subtype=gml/3.2</ow
s:Value>
</ows:AllowedValues>
</ows:Parameter>
<ows:Parameter name="releaseAction">
<ows:AllowedValues>
<ows:Value>ALL</ows:Value>
<ows:Value>SOME</ows:Value>
</ows:AllowedValues>
</ows:Parameter>
</ows:Operation>
<ows:Constraint name="ImplementsBasicWFS">
<ows:NoValues/>
<ows:DefaultValue>TRUE</ows:DefaultValue>
</ows:Constraint>
<ows:Constraint name="ImplementsTransactionalWFS">
<ows:NoValues/>
<ows:DefaultValue>TRUE</ows:DefaultValue>
</ows:Constraint>
<ows:Constraint name="ImplementsLockingWFS">
<ows:NoValues/>
<ows:DefaultValue>TRUE</ows:DefaultValue>
</ows:Constraint>
<ows:Constraint name="KVPEncoding">
<ows:NoValues/>
<ows:DefaultValue>TRUE</ows:DefaultValue>
</ows:Constraint>
<ows:Constraint name="XMLEncoding">
<ows:NoValues/>
<ows:DefaultValue>TRUE</ows:DefaultValue>
</ows:Constraint>
<ows:Constraint name="SOAPEncoding">
<ows:NoValues/>
<ows:DefaultValue>TRUE</ows:DefaultValue>
</ows:Constraint>
<ows:Constraint name="ImplementsInheritance">
<ows:NoValues/>
<ows:DefaultValue>FALSE</ows:DefaultValue>
</ows:Constraint>
<ows:Constraint name="ImplementsRemoteResolve">
<ows:NoValues/>
<ows:DefaultValue>FALSE</ows:DefaultValue>
35
</ows:Constraint>
<ows:Constraint name="ImplementsResultPaging">
<ows:NoValues/>
<ows:DefaultValue>TRUE</ows:DefaultValue>
</ows:Constraint>
<ows:Constraint name="ImplementsStandardJoins">
<ows:NoValues/>
<ows:DefaultValue>TRUE</ows:DefaultValue>
</ows:Constraint>
<ows:Constraint name="ImplementsSpatialJoins">
<ows:NoValues/>
<ows:DefaultValue>TRUE</ows:DefaultValue>
</ows:Constraint>
<ows:Constraint name="ImplementsTemporalJoins">
<ows:NoValues/>
<ows:DefaultValue>TRUE</ows:DefaultValue>
</ows:Constraint>
<ows:Constraint name="ImplementsFeatureVersioning">
<ows:NoValues/>
<ows:DefaultValue>FALSE</ows:DefaultValue>
</ows:Constraint>
<ows:Constraint name="ManageStoredQueries">
<ows:NoValues/>
<ows:DefaultValue>TRUE</ows:DefaultValue>
</ows:Constraint>
<ows:Constraint name="PagingIsTransactionSafe">
<ows:NoValues/>
<ows:DefaultValue>FALSE</ows:DefaultValue>
</ows:Constraint>
<ows:Constraint name="QueryExpressions">
<ows:AllowedValues>
<ows:Value>wfs:Query</ows:Value>
<ows:Value>wfs:StoredQuery</ows:Value>
</ows:AllowedValues>
</ows:Constraint>
</ows:OperationsMetadata>
<FeatureTypeList>
<FeatureType xmlns:ahiss="ahiss">
<Name>ahiss:rs_analfa</Name>
<Title>Analfabetismo segun RS</Title>
<Abstract/>
<ows:Keywords>
<ows:Keyword>vw_registro_social</ows:Keyword>
<ows:Keyword>features</ows:Keyword>
</ows:Keywords>
<DefaultCRS>urn:ogc:def:crs:EPSG::32717</DefaultCRS>
<ows:WGS84BoundingBox>
<ows:LowerCorner>-81.0 -90.0</ows:LowerCorner>
<ows:UpperCorner>-81.0 -90.0</ows:UpperCorner>
</ows:WGS84BoundingBox>
</FeatureType>
</FeatureTypeList>
<fes:Filter_Capabilities>
<fes:Conformance>...
</fes:Conformance>
<fes:Id_Capabilities>
<fes:ResourceIdentifier name="fes:ResourceId"/>
</fes:Id_Capabilities>
<fes:Scalar_Capabilities>...
</fes:Scalar_Capabilities>
36
<fes:Spatial_Capabilities>
<fes:GeometryOperands>...
</fes:GeometryOperands>
<fes:SpatialOperators>...
</fes:SpatialOperators>
</fes:Spatial_Capabilities>
<fes:Temporal_Capabilities>...
</fes:Temporal_Capabilities>
<fes:Functions>...
</fes:Functions>
</fes:Filter_Capabilities>
</wfs:WFS_Capabilities>
Tabla 8 – Ejemplo de petición getCapabilities (WFS)
DescribeFeatureType (operación de descubrimiento) Devuelve una descripción
de los atributos disponibles por entidades apoyado en el servicio WFS.
http://190.11.24.213:8080/geoserver/wfs?servicio=wfs&version=2.0.0&req
uest=DescribeFeatureType
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" elementFormDefault
="qualified">
<xsd:import namespace="http://www.quitoambiente.gob.ec/" schemaLocation
="http://190.11.24.213:8080/geoserver/wfs?request=DescribeFeatureType&version=
1.0.0&service=WFS&typeName=amb%3Aadministraciones_zonales%2Camb%3Ac
abecera_parroquial%2Camb%3Aetapas_inga%2Camb%3Agis_cli_est_geomorfolog
ica%2Camb%3Ainfraestructura_inga%2Camb%3Alimite_dmq%2Camb%3Alimit
e_provincial%2Camb%3Aparroquias_rurales%2Camb%3Aparroquias_urbanas%
2Camb%3Aplan_uso_suelo%2Camb%3Aprecipitacion_2009%2Camb%3Apredios_
inga%2Camb%3Aradiacion_2009%2Camb%3Arecurrencia_indencios%2Camb%3
Ared_hidrica%2Camb%3Ared_vial%2Camb%3Atemperatura_2009%2Camb%3A
viento_direccion_2009%2Camb%3Azona_urbana_dmq%2Camb%3Azonificacion_i
nga"/>
<xsd:import namespace="http://www.quitoambiente.gob.ec/patrimonio" sche
maLocation="http://190.11.24.213:8080/geoserver/wfs?request=DescribeFeatureType
&version=1.0.0&service=WFS&typeName=amb.pat%3Abosques_protectores%2Ca
mb.pat%3Acobertura_vegetal%2Camb.pat%3Aproteccion_ecologica%2Camb.pat
%3Aproteccion_puos%2Camb.pat%3Asnap"/>
</xsd:schema>
Tabla 9 – Ejemplo de petición DescribeFeatureType (WFS)
GetFeature (operación de consulta) Devuelve una selección de características de
una fuente de datos que incluye valores de geometría y atributos.
http://186.101.170.100:8895/geoserver/wfs?service=wfs&version=2.0.0&req
uest=GetFeature&typeNames=mseg:hoteleria
<wfs:FeatureCollection xmlns:it.geosolutions="http://www.geo-solutions.it" xmlns:tiger="
http://www.census.gov" xmlns:topp="http://www.openplans.org/topp" xmlns:sf="http://
www.openplans.org/spearfish" xmlns:ahiss="ahiss" xmlns:bnf="bnf" xmlns:cite="http:/
/www.opengeospatial.net/cite" xmlns:optisesa="ec.edu.uce.optisesa" xmlns:sde="http://g
eoserver.sf.net" xmlns:wfs="http://www.opengis.net/wfs/2.0" xmlns:mseg="com.exco"
xmlns:sni="ec.gob.senplades"
xmlns:gml="http://www.opengis.net/gml/3.2" xmlns:nurc="http://www.nurc.nato.int" x
mlns:xsi="http://www.w3.org/2001/XMLSchema-instance" numberMatched="100" num
berReturned="100" timeStamp="2015-02-04T03:44:13.732Z" xsi:schemaLocation="http:
37
//www.opengis.net/gml/3.2 http://186.101.170.100:8895/geoserver/schemas/gml/3.2.1/gml
.xsd http://www.opengis.net/wfs/2.0 http://186.101.170.100:8895/geoserver/schemas/wfs/
2.0/wfs.xsd com.exco http://186.101.170.100:8895/geoserver/wfs?service=WFS&version
=2.0.0&request=DescribeFeatureType&typeName=mseg%3Ahoteleria">
<wfs:boundedBy>
<gml:Envelope>
<gml:lowerCorner>513911.09432317 9511990.36792757</gml:lo
werCorner>
<gml:upperCorner>779813.911770728 1.013554122E7</gml:upp
erCorner>
</gml:Envelope>
</wfs:boundedBy>
<wfs:member>
<mseg:hoteleria gml:id="hoteleria.1">
<gml:boundedBy>
<gml:Envelope srsDimension="2" srsName="urn:ogc:d
ef:crs:EPSG::32717">
<gml:lowerCorner>695546.3886 9621588.34</g
ml:lowerCorner>
<gml:upperCorner>695546.3886 9621588.34</g
ml:upperCorner>
</gml:Envelope>
</gml:boundedBy>
<mseg:orden>1</mseg:orden>
<mseg:nombre>CASA SIMPSON</mseg:nombre>
<mseg:num_camas>37</mseg:num_camas>
<mseg:x>695546.388599999950000</mseg:x>
<mseg:y>9621588.339999999900000</mseg:y>
<mseg:zona>Z07</mseg:zona>
<mseg:provincia>19</mseg:provincia>
<mseg:canton>1908</mseg:canton>
<mseg:parroquia>190850</mseg:parroquia>
<mseg:telefono>3041777</mseg:telefono>
<mseg:e_mail>[email protected]</mseg:e_mail>
<mseg:repres_leg>SOLIS RAMÍREZ ENRIQUE LUIS</mseg:r
epres_leg>
<mseg:celular>993823347</mseg:celular>
<mseg:geom>
<gml:Point srsDimension="2" srsName="urn:ogc:def:c
rs:EPSG::32717">
<gml:pos>695546.3886 9621588.34</gml:pos>
</gml:Point>
</mseg:geom>
</mseg:hoteleria>
</wfs:member>
</wfs:FeatureCollection>
Tabla 10 – Ejemplo de petición getFeature (WFS)
LockFeature (operación de bloqueo) Evita la edición de características a través de
un bloqueo persistente de la característica. Si un cliente modifica una característica
antes de enviar la petición WFS de vuelta el bloqueo evitará que otro cliente
modifique la misma característica.
38
Transaction (transaction operation) Añadir, editar o borrar los tipos de entidades
existentes en el servidor WFS. Cada transacción consiste en ”0” o “n” inserts,
updates o deletes realizados en orden, las transacciones de Geoserver son atómicas lo
que significa si una operación falla se abandona la transacción y no se alteran los
datos.
Disponible solo para la versión 2.0.0 o superior:
GetPropertyValue (Operación de consulta) Recupera el valor de una propiedad de
la característica o parte del valor de una propiedad compleja desde una función del
almacén de datos para un conjunto de características identificadas por una expresión
de consulta.
http://186.101.170.100:8895/geoserver/wfs?service=wfs&version=2.0.0&req
uest=GetPropertyValue&typeNames=mseg:albergues&valueReference=geo
m
<wfs:ValueCollection xmlns:mseg="com.exco" xmlns:fes="http://www.opengis.net/fes/2.
0" xmlns:wfs="http://www.opengis.net/wfs/2.0" xmlns:ows="http://www.opengis.net/ow
s/1.1" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:gml="http://www.opengis.net
/gml/3.2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocati
on="http://www.opengis.net/wfs/2.0 http://186.101.170.100:8895/geoserver/schemas/wfs/
2.0/wfs.xsd">
<wfs:member>
<mseg:geom>
<gml:Point srsDimension="2" srsName="urn:ogc:def:crs:EPSG
::32717">
<gml:pos>196925.0 89855.0</gml:pos>
</gml:Point>
</mseg:geom>
</wfs:member>
<wfs:member>
<mseg:geom>
<gml:Point srsDimension="2" srsName="urn:ogc:def:crs:EPSG
::32717">
<gml:pos>197282.0 895927.0</gml:pos>
</gml:Point>
</mseg:geom>
</wfs:member>
<wfs:member>
<mseg:geom>
<gml:Point srsDimension="2" srsName="urn:ogc:def:crs:EPSG
::32717">
<gml:pos>196217.0 88658.0</gml:pos>
</gml:Point>
</mseg:geom>
</wfs:member>
</wfs:ValueCollection>
Tabla 11 – Ejemplo de petición getPropertyValue (WFS)
39
GetFeatureWithLock (Operación de consulta y bloqueo) Devuelve una selección
de características y aplica un bloqueo sobre estas características por un tiempo
determinado de la variable “expiry” expresado en minutos.
<wfs:GetFeatureWithLock service='WFS' version='2.0.0'
handle='GetFeatureWithLock-tc1' expiry='5' resultType='results'
xmlns:topp='http://www.openplans.org/topp'
xmlns:fes='http://www.opengis.net/fes/2.0'
xmlns:wfs='http://www.opengis.net/wfs/2.0'
valueReference='the_geom'>
<wfs:Query typeNames='topp:states'/>
</wfs:GetFeatureWithLock>
Tabla 12 – Ejemplo de petición getFeatureWithLock (WFS)
CreateStoredQuery (operaciones de consultas almacenadas) Crea una consulta
almacenada en el servidor WFS.
DropStoredQuery (operaciones de consultas almacenadas) Elimina una consulta
almacenada en el servidor WFS.
ListStoredQueries (operaciones de consultas almacenadas) devuelve una lista de
las consultas almacenadas en el servidor WFS.
DescribeStoredQueries (operaciones de consultas almacenadas) Devuelve los
metadatos que describen las consultas almacenadas en el servidor de WFS.
Todos los WFS soportan entrada y salida de datos utilizando lenguaje Geography
Markup Language (GML). Algunos WFS también soportan otras codificaciones,
como por ejemplo Geo RSS o ficheros shape.
Normalmente los usuarios interactúan con WFS a través de clientes geoespaciales
Web o Desktop, que permiten acceder a capas de mapas vectoriales desde clientes
externos, sobre Internet.
iv.
Librerías de visualización geográfica
La generación de servicios WMS o WFS es el inicio de la publicación de mapas en
internet, datos que son enviados a través del protocolo http a los usuarios quienes
requieren una librería ligera con características básicas para la visualización de estos
mapas en el lado del cliente.
40
Las principales librerías web que existen en el mercado de los GIS son OpenLayers,
Leaflet, UMN MapServer, MapFaces, Ka-Map, MapBuilder, FlexLayers, WebGIS
Public.
Ilustración 14.Relación entre clientes web geográficos (GeoTux, 2012).
OpenLayers: es la librería JavaScript BSD-license más usada por los clientes y
frameworks GIS existentes desde su aparición en junio de 2006, amigable para
dispositivos móviles, extensible con toolkits como GeoExt y clientes GIS, cuenta con
certificación OGC que permite la interoperabilidad entre sistemas de información
geográfica. (OpenLayers, 2015).
Leaflet: librería JavaScript Open Source amigable con dispositivos móviles para
mapas interactivos (Leaflet, 2014).
41
Leaflet es simple, pesa 33kb y toma ventaja de las nuevas características de HTML5
y CSS3, extensible con una cantidad significativa de plugins.
UNM MapServer: También conocido como MapServer es uno de los primeros SIG
desarrollados en lenguaje C/C++ que en el año de 1994 ya permitía la entrega de
imágenes satelitales provistos por la NASA en el proyecto ForNet, desde entonces
hasta la actualidad se han liberado seis versiones de MapServer (Mapserver, s.f.).
MapServer consta de tres componentes:
•
MapServerCore: Servidor de mapas,
•
MapCache: Módulo de cacheo de capas para aumentar la velocidad de
renderización de las capas geográficas, y
•
TinyOWS: Librería de visualización y edición de mapas en línea a través de
la especificación WFS-T.
MapFaces Librería geoespacial que incorpora componentes JSF y JavaScript para la
construcción de aplicaciones de clase empresarial para generar clientes web para la
presentación, manipulación y análisis de datos geográficos (MapFaces, s.f.).
Ka-Map Es una API para renderizar mapas en la web, salió a la luz en mayo de 2005
apenas tres meses después de Google maps, ideal para realizar mapas estáticos con
puntos dinámicos, mapas a pantalla completa y mapas dinámicamente reajustables.
Actualmente el proyecto ha sido abandonado en pro de la librería OpenLayers
(MapTools.org, s.f.).
FlexLayers Librería para visualización de mapas que porta las capacidades de
OpenLayers a ActionScript 3, este cliente soporta la visualización capas WMS,
WMS-C, WFS con sus respectivos controles para manejo del zoom y selección de
capas temáticas (FlexLayers, s.f.).
v.
Frameworks para integración geográfica y alfanumérica.
Tal como se vio en el literal anterior OpenLayers es una librería robusta en la cual se
basan actualmente los frameworks para poder visualizar información geográfica,
considerando la gran cantidad de frameworks existentes y que algunos en su mayoría
han sido abandonados en un intento de estandarizar y fomentar el uso de frameworks
robustos, se consideran los siguientes que están en vigencia actualmente.
42
Geomajas. - es un framework GPS el cual integra de una manera sencilla las
características de un potente servidor en un navegador web5.
El objetivo de Geomajas es proveer una plataforma para la integración de datos
espaciales provisto por Geotools o Hibernate, permitiendo a múltiples usuarios
controlar y manejar la data en sus propios navegadores.
Ilustración 15. Gráfico arquitectura Geomajas (Geomajas, 2014).
GeoMOOSE. - GeoMOOSE es un framework de cliente web desarrollado en
JavaScript y viene pre empaquetado con módulos PHP que realizan diversas
funciones en la aplicación web6.
Mapbender. - es un entorno de geoportales para publicar registrar visualizar navegar
seguir y conceder acceso seguro de servicios de infraestructura de datos espaciales
Mapbender permite a los usuarios crear geoportales personalizados fácilmente a
partir de una amplia gama de aplicaciones con mínima o ninguna necesidad de
programación. Las funcionalidades de tipo servidor proveen funcionalidades
5
6
Geomajas (Geomajas, 2014).
Geomoose (Geomoose, 2014).
43
avanzadas como seguridad de tipo proxy digitalización en líneas a través del
navegador autosnapping y más7.
Heron map client (Heron-MC).- A pesar de no estar considerado dentro de un
framework, incorpora muchas funcionalidades de los framework como la impresión
de mapas, manejo de capas, exportación de datos a formatos geográficos (GeoJSON,
csv) siendo considerada una herramienta robusta y ligera8 al ser desarrollada en
JavaScript.
b. ¿Qué es un dispositivo móvil?
Un dispositivo móvil es conocido también como un computador de bolsillo o
computador de mano (palmtop), y se lo define como un computador de tamaño
pequeño, con capacidades de procesamiento, con conexión a internet, con memoria
diseñado para una función, pero que pueden llevar a cabo otras funciones más
generales (Wikipedia, 2015).
Los smartphones o tablets también forman parte de esta clasificación, en américa
latina y el mundo el uso y proliferación de este tipo de dispositivos va en aumento,
según cifras publicadas en un estudio de la empresa GFK (GFK, 2015) américa latina
ha crecido en un 59% en unidades vendidas en el año 2014 con respecto al año 2013
con una proyección para el año 2015 que se va a mantener esta tendencia al alza. En
Ecuador el uso de smartphones ha crecido a pasos agigantados, según los datos del
INEC en su portal web www.ecuadorencifras.gob.ec en 2011 Ecuador contaba con
500 mil usuarios con teléfonos inteligente y para 2013 esta cifra casi fue triplicada a
1 millón 200 mil, lo que nos hace pensar que los dispositivos móviles llegaron para
quedarse (INEC, 2013, pág. 24).
Smartphones
América
Latina
Centro y Este
de Europa
América del
norte
7
8
Unidades vendidas (en millón)
Año
Año
% de
completo
Completo
Cambio
2013
2014
68.7
109.5
59%
Valor de ventas (en billones USD)
Año
Año
% de
completo
Completo
Cambio
2013
2014
20.6
31.4
52%
50.9
69.8
37%
15.1
17.2
14%
139.1
177.6
28%
58.2
71.8
23%
MapBender3 (MapBender.org, s.f.)
Heron-mc (Heron-mc, 2011)
44
Emergente
(APAC)
Medio Este y
África
Europa
Occidental
China
Desarrollo
(APAC)
Total unidades
globales
96.9
149.9
55%
22.3
28.4
27%
99.8
135.2
35%
32.3
39.4
22%
115.4
128.0
11%
52.2
55.8
7%
359.0
68.3
392.8
65.1
9%
-5%
90.1
39.6
99.0
38.1
10%
-4%
998.1
1,227.9
23%
330.4
381.1
15%
Tabla 13 – Unidades de Smartphones vendidos en los años 2013 y 2014 (GFK, 2015)
Ilustración 16.Indicador de personas con Smartphones en el Ecuador (INEC, 2013).
En la actualidad los Smartphones y Tablets en el mercado cuentan con sensores
incluidos como giroscopios, sensores de luminosidad, sensores de posicionamiento
global entre otros, aprovechar estos avances tecnológicos con aplicaciones que
permitan sacar el máximo provecho a estos dispositivos móviles, como el caso del
sistema de posicionamiento global (GPS) que en Ecuador han empezado a usarse en
vehículos de transporte público y/o privados.
i.
Sistemas operativos móviles.
Un sistema operativo móvil controla a un dispositivo móvil similar a un pc, su
diferencia radica en la simplicidad y su orientación a la conectividad inalámbrica.
Algunos dispositivos móviles están basadas en el modelo de capas que constan de:
45
Kernel.- es el núcleo que proporciona comunicación entre los distintos elementos del
hardware del dispositivo móvil, gestiona el sistema de archivos, acceso y gestión de
memoria (Wikipedia, 2015).
Middleware.- es el conjunto de módulos que hacen posible la propia existencia de
aplicaciones para móviles, provee los servicios de mensajería y comunicaciones,
drivers multimedia, navegadores web y gestiona la seguridad del dispositivo
(Wikipedia, 2015).
Entorno de ejecución de aplicaciones.- Es un gestor de aplicaciones y un conjunto
de interfaces programables abiertas para facilitar la creación de software por parte de
los desarrolladores de software (Wikipedia, 2015).
Interfaz de usuario.- Es la capa de interacción del dispositivo móvil con el usuario,
el diseño de la presentación visual de la aplicación. Los componentes geográficos
(botones, pantallas, listas, etc.) (Wikipedia, 2015).
Ilustración 17.Modelo de capas de un sistema operativo móvil (Android) (Maksim, 2013).
Desde el año 2006 el mercado de los dispositivos móviles inteligentes ha crecido
vertiginosamente, para el segundo trimestre del año 2014 el mercado de dispositivos
móviles se dividía de la siguiente manera:
Sistema operativo
Porcentaje del mercado mundial
46
84.7%
11.7%
2.5%
0.5%
0.6%
Android
iOS
Windows Phone
BlackBerry
Otros
Tabla 14 – Porcentaje de distribución del mercado mundial según el sistema operativo al año 2014 (IDC, International Data
Corporation, 2014)
Porcentaje de ventas de Smartphones a nivel mundial
Ilustración 18.Evolución ventas de Smartphones clasificados por sistema operativo (Wikipedia, 2015).
Gartner: Ventas de Smartphone a nivel mundial (% de Smartphones 2012 – 2014)
Windows Phone
Other Smartphones
83.1%
3.0%
0.4%
100.0% / 66.
0%
2013
1.9%
15.6%
78.4%
3.2%
0.9%
100.0% / 57.
6%
2012
5.1%
19.1%
66.2%
2.5%
0.5%
100.0% / 38.
4.2%
47
Bada
Android
12.7%
Symbian
0.8%
RIM (BlackBerry)
2014
Q3
Año
Windows Mobile
iOS
Total
Smartphone
s
2.3%
(%
smarthphon
es / % de
todos los
dispositivos
móviles)
8%
Tabla 15 – Unidades de Smartphones vendidos en los años 2012,2013 y 2014 clasificados por sistema operativo (GFK, 2015).
Como se puede observar Android es el sistema operativo móvil más usado en el
mundo con una cuota superior al 80%, esto debido a su código fuente libre que
permite a diversas empresas ensambladoras de dispositivos móviles ajustar, calibrar
y modificar dichos fuentes para sacar mayor provecho al hardware de sus
dispositivos.
Android está basado en el kernel de Linux, con una máquina virtual java propia
(Dalvik) la cual permite interpretar a bytecode los programas escritos bajo lenguaje
JAVA.
iOS, el sistema operativo de Apple para su gama de dispositivos móviles (iPhone,
iPad, iPod) es una variación del Mac OS X el cual es simple y optimo, considerada
por muchos como la combinación casi perfecta entre hardware y software.
Android y iOS juntos conforman el 96% del mercado, por lo que en lo posterior se
considerará únicamente estas dos plataformas en el presente documento
ii.
Componentes incorporados en los móviles actuales.
Los dispositivos móviles en la actualidad incorporan gran cantidad de componentes
(sensores) de hardware, cámaras, giroscopios, sensores de luz, GPS, Glonass por
citar algunos, capaces de ser transportados en la palma de la mano.
Para el objetivo del presente documento se consideran los componentes de
posicionamiento global (GPS y Glonass), tanto los equipos con iOS como los
dispositivos con Android cuentan con chips A-GPS incorporados, que a diferencia
del tradicional GPS obtienen la información de la ubicación de una manera más
rápida gracias a la asistencia de un servidor de asistencia en línea.
48
El desarrollo del A-GPS fue acelerado por requerimiento de los servicios E911 de los
estados unidos de américa el cual requiere de la posición de un dispositivo móvil en
caso de una llamada de emergencia.
La red GPS9 compuesta por 30 satélites situados a una órbita terrestre de 20.000km,
la red GPS es propiedad del gobierno de los EEUU, el GPS tradicional presenta
dificultades para obtener la posición precisa en ambientes de baja señal o lugares
muy cerrados sin visión de cielo abierto (Wikipedia, 2014).
Un A-GPS hace uso de los sistemas GPS y con ayuda de los servidores de asistencia,
puede obtener la ubicación GPS de una manera rápida, los modos de acceso a la
información provista por el servidor de asistencia es online y offline.
Modo online.- Acceden a los datos en tiempo real, por lo que es necesario una
conexión de datos activa proveniente de la red celular GSM, haciendo el
posicionamiento más rápido y preciso.
Modo offline.- Acceden a los datos previamente descargados de una red GPRS, WiFi
o similar, estos datos pueden ser usados por varios días hasta que la misma se vuelve
obsoleta y se necesite realizar una actualización de los mismos.
9
Sistema de posicionamiento global GPS (US Cost Guard, Navigation Center, 1996).
49
Ilustración 19 A-GPS. Diagrama de funcionamiento (Windows Central, 2009).
Glonass es el sistema de posicionamiento global ruso, puede ser usado
independientemente o en conjunción con el GPS o A-GPS tradicional permitiendo
una precisión de localización a 2 metros a la redonda10.
Ilustración 20.Orbitas de satélites en la tierra, Glonass (izquierda) y GPS (derecha) (Barbian, 2014).
10
Simulación de satélite GPS y Glonass circundantes a la órbita terrestre (Youtube, 2012)
50
Ilustración 21.Triangulación asistida por GPS y Glonass (Glonass.it, s.f.).
Los dispositivos móviles en la actualidad trabajan con los dos sistemas por defecto
(Stackoverflow, 2014), lo cual permite una mayor precisión y rapidez al momento de
solicitar una ubicación desde un dispositivo móvil aún en condiciones difíciles como
montañas o rascacielos.
iii.
Frameworks de desarrollo de aplicaciones móviles.
Existen dos tipos de frameworks para el desarrollo de aplicaciones web, uno se basa
en el soporte nativo y el otro en aplicaciones hibridas.
Como se analizó previamente las dos plataformas predominantes en el mercado son
Android y iOS.
Frameworks nativos
Android Studio, es toda una suite para desarrollar aplicaciones nativas en código
java interpretables por la máquina virtual Dalvik, cuenta con api’s para el manejo y
administración de los componentes internos del dispositivo móvil. Al ser de código
libre y estar basado en lenguaje Java la suite provee desarrollar una aplicación móvil
en casi cualquier sistema operativo de escritorio como Linux, Windows y/o Mac Os
con un coste relativamente bajo.
Ilustración 22.Android Studio (Android Developer, 2015).
XCode es el entorno de desarrollo de los dispositivos Apple como el iPad, su
lenguaje de desarrollo principal es objetive-C aunque puede compilar código escrito
en C, C++, Java, Apple Script, XCode es distribuido gratuitamente con los sistemas
51
operativos Mac Os X el cual integra el framework Cocoa lo cual convierte a XCode
en una suite de uso limitado a sistemas operativos Mac Os X.
Ilustración 23.IDE XCode (Apple, Inc., 2015).
Frameworks híbridos
Uno de los objetivos de los frameworks híbridos es permitir el desarrollo de
aplicaciones multiplataforma, existe una gran variedad de frameworks para
aplicaciones híbridas, a continuación se listan un grupo de ellas tomando en
consideración su popularidad y reseñas de uso.
jQuery Mobile, es un framework basado en HTML5, optimizado para dispositivos
móviles con pantallas táctiles. Es un framework de fácil usabilidad y bien
documentado, una de las ventajas de jQuery es que está basado en jQuery y jQuery
UI con código ligero, robusto y gratuito (jQuery mobile, 2015).
Sencha Touch es un framework para móviles basado en HTML5, con este
framework se puede construir aplicaciones multiplataforma, requiere de un servidor
local ejecutándose. Puede ser descargado gratuitamente pero si su uso es comercial
debe pagarse una licencia (Sencha, 2015).
52
PhoneGap es un programa gratuito de Adobe, similar a apache Córdova, permite
crear aplicaciones multiplataforma con HTML, CSS y JavaScript. Al ser un producto
de Adobe puede usarse programas de diseño de páginas web como Dreamweaver
para facilitar el proceso de desarrollo de la interfaz (PhoneGap, 2015).
PhoneGap Build Esta herramienta permite el empaquetado de los fuentes escritos en
HTML, CSS y JavaScript en la nube. Al ser un servicio provisto por Adobe requiere
un licenciamiento para su uso que inicia por $9.99 al mes (Adobe, 2013).
Appcelerator (Titanium IDE) Un framework de desarrollo basado en HTML5 y
JavaScript que permite interactuar con los componentes de un dispositivo móvil a
través de Api’s propias para generar aplicaciones multiplataforma (Appcelerator,
2015).
CAPÍTULO 4
Infraestructura tecnológica
Este capítulo se hará hincapié en los detalles técnicos necesarios y las herramientas a
usarse para el desarrollo de la herramienta prototipo que realice el cálculo de las
rutas óptimas.
a. Bases de datos alfanuméricas
Una base de datos son conjuntos de datos almacenados ordenadamente para su uso
futuro, la administración y manejo de estas bases de datos se realiza a través de un
sistema de gestión de base de datos SGBD.
Para el presente tema de tesis se consideraron algunas alternativas de SGBD
disponibles en el mercado PostgreSQL, Oracle, MySQL y MS SQL Server entre las
más populares con capacidad de soportar un sistema en ambiente de producción.
MS SQL
PostgreSQL
Oracle
MySQL
Server
2008
Sistema
Soporte para
Soporte para
53
Soporte para
Soporte
Operativo
Windows,
Windows,
Windows,
para
Linux, Mac,
Linux, Unix.
Linux, Unix,
Windows.
Unix y todas
Mac y sus
sus
variaciones.
variaciones.
Open Source
Licencia anual
Licenciamiento
Open Source
propietaria con
BSD sin costo
costo según el
de licencia.
número de
núcleos de
procesamiento.
para uso
estándar,
licencia de
Licencia
pago con
propietaria
coste anual
anual
para
ambientes
comerciales.
Soporte datos
espaciales
SI
SI
Costos
estimados por
$0
licencia
SI
SI
Dual-Core
Desde
Dual-Core
$40000
€1740.00
$25000
Quad-Core
hasta
Quad-Core
$160000
€8688.00
$50000
Tabla 16 – Comparativa SGBD11.
Como sistema gestor de base de datos alfanuméricos se ha considerado a
PostgreSQL sobre sus competidores al ser una herramienta robusta, escalable, de
costo accesible, multiplataforma de fácil instalación e implementación.
b. Bases de datos geográficas
Una geodatabase es una base de datos o estructura de archivos usados principalmente
para almacenar, consultar y manipular datos espaciales. Las geodatabases almacenan
geometrías, el sistema de referencia espacial, atributos y reglas conductuales para
los datos. Varios tipos de conjuntos de datos geográficos pueden ser almacenados en
una geodatabase incluyendo los feature class (colección de características
11
Comparativas entre SGBD con extensiones geográficas (Boston Geographic Information Systems,
s.f.)
54
geográficas con el mismo tipo de geometría como puntos, línea, polígono, etc.; los
mismos atributos y la misma referencia espacial), tablas de atributos, conjuntos de
datos raster (modelo datos de representación geográfica compuesto por una o
múltiples bandas RGB y contiene un atributo de valor y localización en
coordenadas), conjunto de datos de redes y topologías entre otras. (ESRI, 2015).
En la siguiente tabla comparativa se aprecian algunos aspectos sobre las extensiones
geográficas de los diversos SGBD.
MS SQL
PostGIS
Oracle
Spatial
Server
MySQL Spatial
2008
geometry /
geography
Soporte para
Windows,
Sistema
Linux, Mac,
Operativo
Unix y todas
sus
Soporte para
Windows,
Linux, Unix.
Soporte para
Windows, Linux,
Unix, Mac y sus
variaciones.
Soporte
para
Windows.
variaciones.
Open Source
Licenciamiento
GPL sin costo
de licencia.
Licencia
anual
propietaria.
Incluido en el
Incluido en
SGBD
el SGBD
SQL Server
Extensión para PostGIS
manipulación
Geometry/
de datos
PostGIS
geográficos
Geography
2008 R2
Oracle
Locator/
MySQL Spatial
Oracle Spatial
geometry/
SQL Server
2008 R2
geography
Soporte SIG
QGIS (Open
ArcGis
QGIS
Source),
(Comercial),
(Open
ArcGis
QGIS (Open
Desktop
Source – se
ArcGis
(Comercial),
requiere
Desktop
55
GDAL/OGR
Source),
GDAL/OGR
GDAL/OGR
(Open Source)
para
(Comercial)
compilar)
Funciones
para datos
espaciales
Cerca de 300
funciones que
pueden ser
personalizadas
Alrededor de
70 funciones
soportadas
Pocas funciones
Alrededor
espaciales
de 70
soportadas 20
funciones
aproximadamente soportadas
Costos
estimados por
$0
$4000
$0
$0
SI
SI
NO
En progreso
licencia
Manipulación
de
características
espaciales
mayor a 100
Mb
Tabla 17 – Comparativa extensiones geográficas12.
Como se puede apreciar, Oracle Spatial y PostGIS son claramente las extensiones
geográficas más maduras y con mejor soporte para procesamiento geográfico, para el
presente documento se tomará en cuenta a la base de datos PostgreSQL con su
módulo para manejo de coordenadas espaciales PostGIS que cuenta con la
certificación OGC así se garantiza la interoperabilidad con otros sistemas que hagan
uso de características geográficas.
12
Comparativa extensiones geográficas (Boston Geographic Information Systems, s.f.)
56
Ilustración 24.Infraestructura de base de datos y extensión geográfica seleccionada para el sistema.
c. Frameworks o librerías para el desarrollo de aplicaciones SIG
En el capítulo anterior se realizó una investigación sobre las librerías SIG que existen
en el mercado, al analizar estos frameworks y librerías se puede dilucidar que se
requiere el uso de la librería OpenLayers al ser la librería SIG más popular y
ampliamente utilizada por los frameworks anteriores, escalable e interoperable con el
estándar HTML y HTML5.
El framework designado para desarrollar la visualización en el cliente web para
escritorio es Heron-mc, al ser un cliente web JavaScript facilita la creación de
aplicaciones de mapeo geográfico web que puede ser personalizable con el toolkit
GeoExt y el framework Ext JS, Heron-mc aprovecha todos estos componente para
ensamblar rápidamente aplicaciones visualmente enriquecidas.
Ilustración 25.Infraestructura de la capa de presentación seleccionada para el sistema.
d. Algoritmo para encontrar la ruta más corta entre dos puntos
El problema de la ruta más corta puede resolverse con métodos de programación
lineal, al ser un problema de optimización se realiza una combinatoria cuyo objetivo
es encontrar las rutas más cortas o de menor coste.
Algoritmo de Dijkstra13:
Sea
(
la distancia más corta del nodo fuente 1 hasta el nodo , y se define como
) como la longitud del arco (
). Entonces el algoritmo define la etiqueta de
un nodo inmediato posterior como:
13
Algoritmos de ruta más corta (TAHA, 2004, pág. 225)
57
[
]
La etiqueta del nodo de inicio es [
[
]
], que indica que el nodo no tiene predecesor.
Las etiquetas de nodos en el algoritmo de Dijkstra son de dos clases: temporales y
permanentes. Una etiqueta temporal se modifica si se puede encontrar una ruta más
corta a un nodo. Cuando se ve que no se pueden encontrar rutas mejores, cambia el
estado de la etiqueta temporal a permanente.
Paso 0.
Etiquetar el nodo fuente (nodo 1) con la etiqueta permanente [
]. Igualar
.
Paso .
a) Calcular las etiquetas temporales [
] para cada nodo al que pueda
llegarse desde el nodo , siempre y cuando no tenga etiqueta permanente. Si
el nodo ya está etiquetado con [
sustituir [
] por [
] por otro nodo , y si
,
].
b) Si todos los nodos tienen etiquetas permanentes, detenerse. En caso contrario,
seleccionar la etiqueta [
] que tenga la distancia más corta (
) entre
todas las etiquetas temporales (los empates se rompen de forma arbitraria).
Hacer que
y repetir el paso .
La representación vial es un claro ejemplo de una red (grafo dirigido y ponderado)
que puede ser resuelta con el algoritmo de Dijkstra
Al tener una red vial existen muchos aspectos que considerar como el costo que
puede ser definido en función de la distancia de la vía, tipo de vía, hora del día, carga
vehicular, direccionalidad de vías, etc., para el cálculo de la ruta óptima con el
algoritmo de Dijkstra en el presente documento se considera el uso de dos variables,
la longitud como coste y el sentido de vías (costo inverso).
58
Ilustración 26. Ejemplo topología de red vial.
Oracle Spatial14 cuenta con un motor para consultas de ruteo que incorpora el
algoritmo de Dijkstra para el cálculo de rutas óptimas en una red, PostGIS incorpora
soporte nativo para el cálculo de rutas óptimas con la librería llamada pgRouting15
que incorpora múltiples funcionalidades para la manipulación de redes.
pgRouting hace uso de la representación de matriz de adyacencias para determinar
las rutas óptimas considerando que las mismas tiene direccionalidad (una vía, doble
sentido).
e. Librerías para desarrollo de aplicaciones móviles
También en el capítulo anterior se recopiló las librerías SIG móvil que existen en el
mercado, al analizar estos frameworks y librerías se ha decido usar, al igual que en la
interfaz web de escritorio, la librería OpenLayers al ser la librería SIG más popular y
ampliamente utilizada por los frameworks móviles descritos anteriormente, escalable
e interoperable con el estándar HTML y HTML5.
El framework designado para desarrollar la visualización en el cliente web móvil
jQuery mobile, al ser un cliente web JavaScript facilita la creación de aplicaciones de
mapeo geográfico móvil, puede ser personalizable con JavaScript o jQuery puro
aprovechando así estos componentes para ensamblar rápidamente aplicaciones
visualmente enriquecidas.
14
15
Motor de consultas Oracle Routing Engine (Oracle, s.f.)
Librería pgRouting (pgRouting, s.f.)
59
CAPÍTULO 5
Diseño, desarrollo y pruebas del sistema prototipo
a. Objetivos generales y específicos
Objetivo general:
El objetivo general del presente capítulo es describir el comportamiento del sistema
prototipo para el cálculo de las rutas óptimas.
Objetivos específicos:

Definir el diseño del sistema, modelo de base de datos, casos de uso

Definir las pantallas de formularios para el sistema.

Describir el funcionamiento de la aplicación web de escritorio y web móvil
prototipo.
b. Diseño del sistema.
El sistema está basado en la arquitectura de “n” capas, el cual está distribuido de la
siguiente forma:

Una capa de datos, conformada por la base de datos geográfica
PostgreSQL/PostGIS/pgRouting.

Una capa de lógica del negocio, conformado por el servidor de mapas
Geoserver y el servidor de aplicaciones Jboss (Wildfly)

Una capa de presentación, compuesta por dos visores geográficos Heron-mc
para web desktop y jQuery mobile para web móvil.
60
Ilustración 27. Diseño arquitectura del sistema.
Las comunicaciones entre los diferentes clientes del sistema y la aplicación es
provista por los servicios RESTful y WebSockets para permitir transferencias de
información en tiempo real.
i.
Diagrama entidad relación.
La siguiente ilustración muestra las tablas usadas en el sistema, se consideraron
tablas geográficas con el prefijo “geo_” y tablas alfanuméricas sin prefijo inicial
para poder diferenciarlas entre sí a su vez permitiendo una mejor mantenibilidad del
sistema en el caso de requerir una actualización de los datos geográficos con los más
actuales.
61
Ilustración 28. Modelo de base de datos geográfica.
62
ii.
Diagramas de Casos de Uso
Ilustración 29. Diagrama de casos de uso.
iii.
Formularios
Para el desarrollo de la aplicación se consideró la información básica necesaria para
registrar una llamada de emergencia y georeferenciarla.
El prototipo web de escritorio incorpora un formulario dispuesto en el panel lateral
derecho que contiene los campos:
Nombre: campo de texto en el cual se registra el nombre de la persona que requiere
la atención pre hospitalaria (en caso de poseer dicha información durante la llamada),
Género: selector de opción única (radio button) entre masculino y femenino,
Descripción del evento: cuadro de texto para el registro del relato de la llamada de
emergencia,
Observaciones: cuadro de texto para registrar cualquier acotación por parte del
personal de monitoreo,
63
Latitud: campo de texto de solo lectura en el que se visualiza el valor de la latitud
después de seleccionar un punto en el mapa,
Longitud: campo de texto de solo lectura en el que se visualiza el valor de la longitud
después de seleccionar un punto en el mapa
Enviar unidad ambulatoria: selector (checkbox) que muestra un panel inferior con la
información de las ambulancias disponibles en el sistema.
Ilustración 30.Formulario para el registro de emergencias.
iv.
Prototipo de interfaz. (Móvil y WEB)
El sistema está comprendido por dos interfaces, web de escritorio que consta de un
mapa en un panel central y dos paneles laterales, a la derecha el panel de registro de
emergencias y a la izquierda el panel con el selector de capas de interés registradas
en la base de datos.
64
Ilustración 31.Prototipo de interfaz web para el registro de emergencias.
La segunda interfaz móvil consta de un mapa en pantalla completa y dos botones en
la parte inferior del mismo, estos botones tienen la funcionalidad de ubicar la
posición actual del dispositivo y la selección de la capa temática de interés ya sea la
vista de solo calles o la vista mixta entre satélite y calles
Ilustración 32.Prototipo de interfaz móvil (pantalla inicial).
65
Ilustración 33.Prototipo de interfaz móvil (pantalla de capas temáticas).
c. Pruebas
En el ámbito de la informática existen diferentes tipos de pruebas para verificar la
calidad de una aplicación de software, para el presente documento se registran las
pruebas realizadas al sistema prototipo.
i.
Rendimiento
Al concebirse ambas interfaces como aplicaciones web, se consideraron cuatro
criterios para las pruebas de rendimiento de la aplicación tales como hardware,
software, tiempo de carga y navegabilidad.
Prototipo Web:
Hardware y software usado para la prueba
Hardware
Procesador: Intel DualCore 1.8Ghz
RAM: 2GB
Monitor: 17 pulgadas
Periféricos: teclado y mouse
Software
SO: Windows 7 32bits
Navegador: Google Chrome, Mozilla Firefox
Red
Conexión de banda ancha 2mbps/500kbps velocidad
asimétrica
66
Resultados de la prueba
Tiempo de carga
primera visita (sin
caché
de
37.11s
navegación previa)
Tiempo de carga re
- visita (con caché
de
navegación
2.263s
previa)
Tamaño
primera
visita (sin caché de 4.913Kb
navegación previa)
Tamaño re - visita
(con
caché
de 95Kb
navegación previa)
Fácil e Intuitiva (consta de una sola pantalla en la cual se
Navegabilidad
puede realizar todas las acciones necesarias de un visor
geográfico)
Prueba
y
estadísticas
http://www.webpagetest.org/result/150509_S0_QVS/
provistas en la web
Tabla 18 – Pruebas de rendimiento prototipo web.
Estadísticas de peticiones y bytes consumidos durante la primera carga de la
aplicación web de escritorio
67
Ilustración 34.Estadística de peticiones y bytes de carga durante la primera carga (prototipo web).
Estadísticas de peticiones y bytes consumidos durante la re - visita de la
aplicación web de escritorio
Ilustración 35.Estadística de peticiones y bytes de carga durante la re - visita (prototipo web).
68
Prototipo Móvil:
Hardware y software usado para la prueba
Alcatel One Touch con dispositivo GPS incorporado.
iPad MD370E/A con dispositivo GPS incorporado.
Hardware
Samsung Galaxy tab 3 con dispositivo GPS/GLONASS incorporado.
Huawei Ideos U8150 con conexión 3G y dispositivo GPS incorporado.
Nokia Lumia E520 con conexión 3G y dispositivo GPS incorporado.
Alcatel One Touch SO:Android 4.3, navegador: Chrome.
iPad MD370E/A SO:iOS8.2 (12d508) navegador: Safari, Chrome.
Software
Samsung Galaxy tab 3 SO: Android 4.4.2.
Huawei Ideos U8150 SO: Android 2.2, navegador: Nativo.
Nokia Lumia E520 SO: Windows Phone, navegador: Internet
Explorer.
Alcatel One Touch con conexión 4G (CNT).
iPad MD370E/A con conexión 3G HSPA+ (Movistar).
Samsung Galaxy tab 3 con conexión 3G HSPA+ (CNT).
Red
Huawei Ideos U8150 con conexión 3G (CNT).
Nokia Lumia E520 con conexión 3G HSPA+ (Movistar).
Resultados de la prueba
Tiempo de
carga
primera
visita
caché
(sin 12.72s
de
navegación
previa)
Tiempo de
carga re visita (con
caché
de
2.241s
navegación
previa)
69
Tamaño
primera
visita
(sin
caché
de
1.054 Kb
navegación
previa)
Tamaño re
- visita (con
caché
de 9 Kb
navegación
previa)
Navegabili
Fácil e Intuitiva (consta de una sola pantalla en la cual se puede
dad
realizar todas las acciones necesarias de un visor geográfico móvil)
Prueba
y
estadísticas
http://www.webpagetest.org/result/150509_M9_54310cdf19191ca216
provistas
2ee80784969608/
en la web
Tabla 19 – Pruebas de rendimiento prototipo móvil.
Estadísticas de peticiones y bytes consumidos durante la primera carga de la
aplicación móvil
70
Ilustración 36.Estadística de peticiones y bytes de carga durante la primera carga (prototipo móvil).
Estadísticas de peticiones y bytes consumidos durante la re - visita de la
aplicación móvil
Ilustración 37.Estadística de peticiones y bytes de carga durante la re - visita (prototipo móvil).
ii.
Control.
Pruebas de compatibilidad
71
Se realizó la prueba de compatibilidad en equipos móviles heterogéneos con
diferentes sistemas operativos y navegadores, se observó que el sistema es escalable
y multiplataforma lo cual no liga al usuario a comprar un determinado dispositivo.
Pruebas de integración
La comunicación entre los diferentes prototipos web y móvil se realiza a través de:
Servicios web REST: los servicios web usados permiten la interoperabilidad del
sistema y de los diferentes “front end” pudiendo escalar el sistema a aplicaciones
nativas para cada sistema operativo sin alterar la lógica del sistema y,
WebSockets: en el sistema los WebSockets permiten la comunicación directa y en
tiempo real entre el prototipo web con cada uno de los clientes que usan el prototipo
móvil asignando un punto de destino para cada cliente, en caso de pérdida de
conexión por falta de cobertura móvil, el sistema intentará reconectar con el servidor.
Manual de usuario.
El presente documento pretende orientar a los usuarios sobre el funcionamiento del
visor geográfico y la aplicación móvil de OPTISESA, entre las principales
funcionalidades se tiene:
Visor geográfico

Administración de las unidades ambulatorias permitiendo el Registro de
emergencias y la asignación de eventos a las unidades

Visualización de mapas base que permiten la administración de la aplicación

Visualización de capas que ayuden a la localización de los distintos servicios
de salud del País.

Herramientas de ayuda del visor
Aplicación Móvil

Ingreso a la aplicación por medio de la placa y clave de la unidad ambulatoria

Administración de capas temáticas que permiten la visualización de los
mapas base, localización actual y ruta asignada

Luego que el administrador asigne el incidente, en la aplicación móvil se
presenta la ruta a seguir.
72
a. Visor Geográfico
Acceso al sistema:
El visor geográfico de OPTISESA se encuentra publicado en la web ingresando a
http://<host_o_IP>:<puerto>/optisesa_web/visor_optisesa/index.html
Ilustración 38. Pantalla de ingreso al sistema
Descripción general
Ilustración 39. Descripción general del visor
73
Sección 1: En la parte superior se tiene la presentación de logos relacionados al
sistema.
Sección 2: Gestión de capas, permite seleccionar las capas a visualizar. Estas pueden
ser capas base o los servicios de salud que se encuentran registrados actualmente en
el Ministerio de Salud.
Sección 3: Mapa, dependiendo de las selecciones realizadas en la sección 2 se
actualiza el mapa.
Sección 4: Botones de interacción con el mapa, permiten la navegación en el mapa
(sección 3)
Sección 5: Registro de emergencias, permite la asignación de incidentes a las
unidades ambulatorias registradas disponibles (autenticadas).
Gestión de capas (Sección 2)
Permite seleccionar las capas a visualizar, estas pueden ser Capas Base o servicios de
salud que se encuentran registrados actualmente en el Ministerio de Salud.
Capas Base.- Permite cambiar la capa base el mapa entre las opciones se tiene:
-
Vías : Mapa de OpenStreetMap
-
Aéreo: Bing Aerial
-
Hibrido: Bing Aerial + Labels
Ilustración 40. Capas base
Servicios de salud.- Capas que se pueden visualizar, en este caso son los servicios de
salud existentes en el Ecuador los cuales están registrados en el ministerio de salud.
Al seleccionar uno de ellos en el mapa se actualiza presentando las capas
seleccionadas.
74
Ilustración 41. Servicios de Salud
Botones de interacción (Sección 4)
Permiten la interacción con el mapa, dependiendo de la acción que se seleccione:
Mover mapa
Acercar zoom
Alejar zoom
: Permite movilizarse por el mapa con la ayuda del mouse.
: Permite acercar el mapa.
: Permite alejar el mapa
Zoom vista general
Zoom anterior
: Vuelve al mapa a su extención inicial.
: Regresa al zoom anteriormente elegido.
Zoom siguiente
: Va al zoom siguiente.
Medir distancia
: Permite medir la distancia entre los puntos seleccionados en el
mapa, en la parte inferior se despliega la distancia en kilómetros. Para salir de esta
opción en necesario dar doble clic.
75
Ilustración 42. Medir distancia.
Medir área
: Permite medir el área de un polígono seleccionando por lo menos
tres puntos. El área se muestra en la parte inferior.
Ilustración 43. Medir área
Punto de coordenadas
: permite obtener en una nueva ventana el punto de
coordenadas en proyección WGS 84 y Google Mercador
76
Ilustración 44. Punto de coordenadas.
Ingrese coordenadas para ir a un lugar del mapa
: Al ingresar las coordenadas
dependiendo de la proyección y presionando el botón “Ir!” se presenta en el mapa el
punto ingresado.
Ilustración 45. Ingrese coordenadas para ir a un lugar del mapa.
Búsqueda
: Permite realizar la búsqueda de los centros médicos por medio de las
opciones que se presentan en “Seleccione el elemento gráfico con el que desea
realizar la búsqueda” y posteriormente se despliega una tabla con la información
77
encontrada.
Ilustración 46. Resultado de búsqueda.
Información del elemento
: Luego de seleccionar un centro médico se despliega
una tabla detallando la información del elemento seleccionado.
Ilustración 47. Información de elemento.
Agregar mapas WMS
: Permite agregar capas por medio de servicios WMS,
luego de agregar las capas estas se podrán visualizar en las capas activas.
Ilustración 48. Agregar mapas WMS
Gestión de capas
: Oculta o muestra el panel de Gestión de capas.
78
Localización ubicación
: Permite buscar una
ubicación a partir de un nombre conocido de una calle y/o sector.
Registro de emergencias (Sección 5)
Permite la asignación de incidentes a las unidades ambulatorias registradas, por
medio de los siguientes pasos:
1. Seleccionar la opción Registro de emergencias
2. Ingresar los datos del formulario:
Nombre: Nombre de la persona que requiere la atención en el caso que
requiera la atención.
Género: Genero de la persona.
Descripción del evento: Detalle del evento sucedido.
Observaciones: Nota adicional relacionado del evento.
Longitud y Latitud: Se selecciona en el mapa el punto donde ocurrió el
evento.
Enviar Unidad ambulatoria: Se selecciona en el caso que sea necesaria la
asistencia de una unidad ambulatoria.
3. Seleccione la opción Guardar
4. En el caso que se seleccionó enviar unidad ambulatoria se presentara el
listado de unidades ambulatorias activas, seleccionar una de ellas.
5. Presionar la opción asignar.
Ilustración 49. Registro de emergencias
79
b. Aplicación Móvil
Acceso al sistema
La
aplicación
móvil
OPTISESA
se
encuentra
publicado
en
la
web
http://<host_o_IP>:<puerto>/optisesa_web/visor_optisesa/mobile.html
Es necesario que el dispositivo móvil soporte HTML5, un chip GPS incorporado y
una conexión activa de datos a internet.
Ingreso a la aplicación: se presenta el formulario de ingreso para lo cual se debe
digitar la placa de vehículo y la clave asignada.
Ilustración 50. Pantalla de ingreso aplicación móvil
Presentación del inicio, tiene dos opciones localización y capas temáticas
80
Ilustración 51. Pantalla de inicio aplicación móvil
Localización: presenta la ubicación actual, tomar en cuenta es necesario que se
encuentre activado el GPS del móvil.
Ilustración 52. Pantalla de localización aplicación móvil
81
Selección de capas temáticas: Permite el cambio de capas temáticas seleccionando
la capa a cambiar.
Ilustración 53. Selección de capas temáticas
Presentación de la ruta: Luego que el administrador asigna la ruta se presenta la
ruta en el aplicativo móvil, la cual se actualiza según el desplazamiento de la unidad
móvil.
82
Ilustración 54. Presentación de la ruta
Ilustración 55. Presentación de la ruta más corta
CAPÍTULO 6
Conclusiones y recomendaciones
Una vez concluido el diseño y desarrollo de la herramienta prototipo se tiene la
información suficiente para llegar a las siguientes conclusiones:
Conclusiones
83

El sistema es económicamente viable ya que no es necesario el uso de
dispositivos de última generación o muy costosos y el consumo de internet
móvil es alrededor de 50 MB al mes.

El sistema ayuda en la localización de un determinado lugar de ocurrencia de
un evento de emergencia, reduciendo la inasistencia de las unidades
ambulatorias solicitadas.

La aplicación móvil puede ser perfeccionada y/o migrada a una aplicación
nativa manteniendo la misma lógica del sistema.

Durante las pruebas de control se pudo evidenciar una reducción de los
tiempos de viaje durante el desplazamiento con las rutas designadas por la
aplicación respetando la direccionalidad de vías.
Recomendaciones:

Se recomienda el uso de la aplicación ya que puede ser personalizada con los
nuevos estudios del nivel de transito de la ciudad y/o con el uso de las
cámaras de vigilancia así se puede tener parámetros de costes de rutas
dinámicos en relación a las condiciones específicas u horas del día.

El uso de la aplicación permite mantener un control del uso de los activos y
gestión flotas de las unidades ambulatorias, teniendo como consecuencia la
planificación de los mantenimientos mecánicos de cada unidad.
84
CAPÍTULO 7
Bibliografía
(2013).
Adobe®
PhoneGap™
Build.
Obtenido
de
https://build.phonegap.com/
Android
Developer.
(2015).
Android
Studio.
Obtenido
de
http://developer.android.com/sdk/index.html
Appcelerator.
(2015).
Titanium
Mobile.
Obtenido
de
http://www.appcelerator.com/titanium/
Apple, Inc. (2015). XCode. Obtenido de https://developer.apple.com/xcode/ide/
BARBIAN, E. (12 de Junio de 2014). Você sabe o que é o GLONASS? Obtenido de
Tecnología: http://www.oficinadanet.com.br/post/10569-voce-sabe-o-que-eo-glonass
Boston Geographic Information Systems. (s.f.). Compare SQL Server 2008 R2,
Oracle 11G R2, PostgreSQL/PostGIS 1.5 Spatial Features. Obtenido de
http://www.bostongis.com/PrinterFriendly.aspx?content_name=sqlserver200
8r2_oracle11gr2_postgis15_compare
Boston Geographic Information Systems. (s.f.). Cross Compare SQL Server 2008
Spatial, PostgreSQL/PostGIS 1.3-1.4, MySQL 5-6. Obtenido de
http://www.bostongis.com/PrinterFriendly.aspx?content_name=sqlserver200
8_postgis_mysql_compare
Can I Use. (24 de Marzo de 2015). Can I Use. Obtenido de geolocation:
http://caniuse.com/#search=geolocation
CARRASCO, P., GONZÁLES, F., & MORENO, A. (2000). Atención
Prehospitalaria de Emergencia. Cruz Roja Ecuatoriana. Obtenido de
http://es.scribd.com/doc/48715614/01capitulo-01-Sistema-deEmergencias#scribd
CELI-MERO, M., SALDAÑA-SÁNCHEZ, G., & RODRÍGUEZ-PEÑAFIEL, J. (3
de Septiembre de 2013). Situación actual del Sistema de Servicios de
Emergencias Médicas de la ciudad de Guayaquil. MedPre. 2013. Obtenido de
http://www.medpre.med.ec/ojs/index.php/revistamedpre/article/download/78/
76
CERDA LORCA, J., & VALDIVIA C., G. (13 de Julio de 2007). John Snow, la
epidemia de cólera y el nacimiento de la epidemiología moderna.
Recuperado
el
25
de
Marzo
de
2015,
de
http://www.scielo.cl/pdf/rci/v24n4/art14.pdf
ciudadaniainformada. (2 de Marzo de 2009). ciudadaniainformada. Recuperado el 1
de Noviembre de 2014, de Ni las ambulancias vencen al tráfico:
http://www.ciudadaniainformada.com/noticias-ciudadania-ecuador0/noticiasciudadania-ecuador/browse/58/ir_a/ciudadania/article//quito-ni-lasambulancias-vencen-al-trafico.html
El Universo. (4 de Febrero de 2014). 14% de ambulancias pedidas no llega a sitio de
emergencia.
Obtenido
de
http://www.eluniverso.com/noticias/2014/02/04/nota/2135786/14ambulancias-pedidas-no-llega-sitio-emergencia
Adobe.
85
e-mergencia.com. (1 de Mayo de 2009). Método START de triage. Obtenido de
http://www.e-mergencia.com/foro/f165/metodo-start-triage11654/index9.html
ESRI. (24 de Marzo de 2015). GIS Dictionary. Obtenido de
http://support.esri.com/en/knowledgebase/GISDictionary/search
Estado de Nueva York. (Septiembre de 2014). Licencias ArcGis. Obtenido de
http://www.ogs.state.ny.us/purchase/prices/7600020751prices.pdf
Extra. (2012). ¡Hay 18 ambulancias públicas para toda la capital! Obtenido de La
Central Metropolitana de Ayuda Ciudadana (CMAC) se da modos para cubrir
la mayor cantidad de emergencias.
FlexLayers. (s.f.). FlexLayers. Obtenido de https://code.google.com/p/flexlayers/
Geomajas.
(15
de
Septiembre
de
2014).
Obtenido
de
http://www.geomajas.org/geomajas/about-geomajas
Geomoose. (2014). Obtenido de http://www.geomoose.org/
GeoTux. (3 de Enero de 2012). Comparación de clientes web de servicios web
geográficos
v.6.
Obtenido
de
http://geotux.tuxfamily.org/index.php/component/k2/item/291-comparacionclientes-web-v6
GFK. (17 de Febrero de 2015). GLOBAL SMARTPHONE SALES EXCEED 1.2B
UNITS
IN
2014.
Obtenido
de
PRESS
RELEASES
:
http://www.gfk.com/news-and-events/press-room/pressreleases/pages/global-smartphone-sales-exceed-1-2b-units-in-2014.aspx
GFK. (s.f.). GFK smartphone sales based on point-of-sale (POS). Obtenido de
http://www.gfk.com/news-and-events/press-room/pressreleases/pages/global-smartphone-sales-exceed-1-2b-units-in-2014.aspx
Glonass.it. (s.f.). GLObal NAvigation Satellite System. Obtenido de
http://www.glonass.it/glonass-vantaggi.aspx
GOPI, S. (2008). Advanced Surveying: Total Station, GIS and Remote Sensing
(Segunda Edición ed.). India: Pearson Education.
Heron-mc. (2011). Web Mapping Made Easy. Obtenido de http://heron-mc.org/
IDC, International Data Corporation. (14 de Agosto de 2014). Worldwide
Smartphone Shipments Edge Past 300 Million Units in the Second Quarter;
Android and iOS Devices Account for 96% of the Global Market, According
to
IDC.
Obtenido
de
http://www.idc.com/getdoc.jsp?containerId=prUS25037214
INEC. (2013). Ecuador en cifras. Obtenido de Tecnologías de la Información y
Comunicaciones
(TIC´S)
2013:
http://www.ecuadorencifras.gob.ec/documentos/webinec/Estadisticas_Sociales/TIC/Resultados_principales_140515.Tic.pdf
jQuery mobile. (2015). A Touch-Optimized Web Framework. Obtenido de
https://jquerymobile.com/
La Hora. (14 de Agosto de 2013). Reporte. Recuperado el 1 de Noviembre de 2014,
de Ambulancias aún no cumplen el tiempo óptimo de respuesta:
http://www.lahora.com.ec/index.php/noticias/show/1101548674/1/Ambulancias_a%C3%BAn_no_cumplen_el_tiempo_%C3%B3ptimo_de_re
86
spuesta.html#.U_J93uMwDA0http://www.lahora.com.ec/index.php/noticias/s
how/1101487320/-1/Se_necesitan_m%C3%A1s_ambulancias.html#.U3_Qo
La Hora. (s.f.). La Central Metropolitana de Atención Ciudadana (CMAC) no se da
abasto a todas las llamadas de emergencia que realizan los ciudadanos.
Obtenido
de
Cronología:
http://www.lahora.com.ec/index.php/movil/noticia/1101242891
Lcda. ESTRELLA SILVA, F. (Junio de 2005). TESIS. LINEAMIENTOS
GENERALES PARA IMPLEMENTAR UNA RED DE ATENCIÓN DE
EMERGENCIAS Y DESASTRES EN EL SECTOR DE LA SALUD, EN EL
CANTÓN
QUITO.
INSTITUTO
DE
ALTOS
ESTUDIOS
NACIONALES,Quito,
Pichincha,
Ecuador.
Obtenido
de
http://repositorio.iaen.edu.ec/bitstream/24000/335/1/IAEN-027-2005.pdf
Leaflet. (2014). An Open-Source JavaScript Library for Mobile-Friendly Interactive
Maps. Obtenido de http://leafletjs.com/
Maksim. (10 de Junio de 2013). Where does Android fragmentation hide? Obtenido
de
http://maksim.golivkin.eu/blog/2012/08/26/where-does-androidfragmentation-hide/
MapBender.org. (s.f.). Obtenido de http://mapbender3.org/en/what-is-mapbender3
MapFaces. (s.f.). A Library. Obtenido de http://mapfaces.codehaus.org/
Mapserver.
(s.f.).
Acerca
de
MpaServer.
Obtenido
de
http://mapserver.org/es/about.html
MapTools.org.
(s.f.).
ka-Map.
Obtenido
de
http://kamap.maptools.org/index.phtml?page=home.html
Ministerio de salud pública. (25 de Julio de 2013). 55 ambulancias fortalecen el
sistema de movilización de emergencia en salud. Obtenido de
http://www.salud.gob.ec/55-ambulancias-fortalecen-el-sistema-demovilizacion-de-emergencia-en-salud/
OCG. (16 de Noviembre de 2012). Web Map Service. Obtenido de
http://www.opengeospatial.org/standards/wms
OGC. (s.f.). Open Geo Spatial. Recuperado el 7 de Marzo de 2015, de
http://www.opengeospatial.org/resource/products/compliant
OGC, Open Geo Spatial . (s.f.). Web Feature Service. Obtenido de
http://www.opengeospatial.org/standards/wfs
OpenLayers. (2015). A high-performance, feature-packed library for all your
mapping needs. Obtenido de http://openlayers.org/
Oracle.
(24
de
Marzo
de
2015).
Price
List.
Obtenido
de
http://www.oracle.com/us/corporate/pricing/technology-price-list-070617.pdf
Oracle.
(s.f.).
Routing
Engine.
Obtenido
de
http://docs.oracle.com/cd/B28359_01/appdev.111/b28400/sdo_route_server.h
tm#SPATL350
Osegeo Live. (2014).
Web Map Service (WMS). Obtenido de
http://live.osgeo.org/es/standards/wms_overview.html
OSGeo Live. (2014). Web Feature Service (WFS). Obtenido de
http://live.osgeo.org/es/standards/wfs_overview.html
87
OSGeoLive.
(2014).
Web
Map
Service
(WMS).
Obtenido
de
http://live.osgeo.org/es/standards/wms_overview.html
PennState University. (s.f.). Evolution of Web Mapping Technology. Recuperado el 7
de
Febrero
de
2015,
de
https://www.eeducation.psu.edu/geog863/resources/l3_p3.html
pgRouting. (s.f.). pgRouting extends the PostGIS / PostgreSQL geospatial database
to provide geospatial routing functionality. Obtenido de http://pgrouting.org/
PhoneGap. (2015). PhoneGap is an open source framework for quickly building
cross-platform mobile apps using HTML5, Javascript and CSS. Obtenido de
http://phonegap.com/about/
RODRÍGUEZ H, C. E. (28 de Febrero de 2014). ATENCION PREHOSPITALARIA
DE URGENCIAS. Recuperado el 4 de Enero de 2015, de
http://www.aibarra.org/Guias/1-18.htm
Secretaria de Salud, Estados unidos mexicanos. (13 de Agosto de 2004).
MODIFICACION DE LA NORMA OFICIAL MEXICANA NOM-020-SSA21994,
PRESTACION
DE
SERVICIOS
DE.
Obtenido
de
http://www.salud.gob.mx/unidades/cdi/nom/m020ssa294.pdf
Secretaría Nacional de Administración Pública. (10 de Abril de 2008). Software
Libre.
Recuperado
el
24
de
Marzo
de
2015,
de
http://www.administracionpublica.gob.ec/software-libre/
Sencha. (2015). Sencha Touch Build Mobile Web Apps with HTML5. Obtenido de
https://www.sencha.com/products/touch/
Stackoverflow. (14 de Enero de 2014). Does iPhone/iPad use GPS and GLONASS in
the
same
time?
Can
I
manage
them?
Obtenido
de
http://stackoverflow.com/questions/21066296/does-iphone-ipad-use-gps-andglonass-in-the-same-time-can-i-manage-them
TAHA, H. (2004). Investigación de operaciones (Séptima ed.). México: Pearson
Educación.
Obtenido
de
https://books.google.com.ec/books?id=3oHztjMSuL8C&pg=PA224&lpg=PA
224&dq=taha+investigacion+de+operaciones+dijkstra&source=bl&ots=nMA
I950WHP&sig=6IqQePw8Pt21xCuvBVlPbWPRII4&hl=es419&sa=X&ei=QwocVdHFCsSIsQSxvIC4DA&ved=0CBwQ6AEwAA#v=o
nepage&q=taha%20investi
US Cost Guard, Navigation Center. (Septiembre de 1996). Obtenido de
http://www.navcen.uscg.gov/pubs/gps/gpsuser/gpsuser.pdf
USAID. (2009). Curso de Soporte Básico de Vida (CSBV). Obtenido de
https://scms.usaid.gov/sites/default/files/documents/1866/MR%20%20SBV.pdf
Wikipedia. (6 de Noviembre de 2005). Sistemas de información geográfica.
Recuperado
el
6
de
Febrero
de
2015,
de
http://es.wikipedia.org/wiki/Sistema_de_informaci%C3%B3n_geogr%C3%A
1fica#Historia_de_su_desarrollo
Wikipedia. (9 de Marzo de 2013). GML. Obtenido de Geography Markup Language:
http://es.wikipedia.org/wiki/Geography_Markup_Language
Wikipedia. (25 de Septiembre de 2014). GPS Asistido. Obtenido de
http://es.wikipedia.org/wiki/GPS_Asistido
88
Wikipedia. (23 de Agosto de 2014). KML. Obtenido de Keyhole Markup Language:
http://es.wikipedia.org/wiki/KML
Wikipedia. (10 de Febrero de 2015). Dispositivo móvil. Obtenido de
http://es.wikipedia.org/wiki/Dispositivo_m%C3%B3vil
Wikipedia. (26 de Febrero de 2015). Mapeo Web. Obtenido de
http://es.wikipedia.org/wiki/Mapeo_Web
Wikipedia. (26 de Marzo de 2015). Mobile operating system. Obtenido de
http://en.wikipedia.org/wiki/Mobile_operating_system
Wikipedia. (14 de Marzo de 2015). Sistema operativo móvil. Obtenido de
http://es.wikipedia.org/wiki/Sistema_operativo_m%C3%B3vil
Wikipedia. (26 de Febrero de 2015). Web Map Service. Obtenido de
http://es.wikipedia.org/wiki/Web_Map_Service
Windows Central. (3 de Enero de 2009). GPS vs. aGPS: A Quick Tutorial. Obtenido
de http://www.windowscentral.com/gps-vs-agps-quick-tutorial
Youtube (Productor), & Penn State, P. B. (Dirección). (2011). Historia de los
sistemas de información geográfica [Película]. Obtenido de
https://www.youtube.com/watch?v=RxBtYCUDgKA
Youtube (Productor). (2012). STMicroelectronics GPS + GLONASS Simulation
[Película]. Obtenido de https://www.youtube.com/watch?v=0FlXRzwaOvM
89
ANEXOS
90
UNIVERSIDAD CENTRAL DEL ECUADOR
FACULTAD DE INGENIERÍA, CIENCIAS FÍSICAS Y MATEMÁTICA
CARRERA DE INGENIERÍA INFORMÁTICA
DISEÑO Y DESARROLLO DE UNA HERRAMIENTA WEB GEOGRÁFICA
PROTOTIPO PARA APOYAR LA OPTIMIZACIÓN DE TIEMPOS DE
RESPUESTA A LOS SERVICIOS DE SALUD AMBULATORIOS DENTRO
DE LAS ÁREAS POBLADAS URBANAS DEL DISTRITO
METROPOLITANO DE QUITO –DMQ-.
MANUAL TÉCNICO
AUTOR:
JHONATHAN GUILLERMO VACA CABRERA
TUTOR:
ING. LUIS FELIPE BORJA BORJA
QUITO – ECUADOR
2015
91
Contenido
Introducción ............................................................................................................... 93
Diagrama de base de datos ......................................................................................... 93
Funciones para el cálculo de la ruta más corta ........................................................... 93
Función para el cálculo de la ruta más corta basado en el algoritmo de dijkstra ....... 93
Función para el cálculo las distancias más cortas a cada una de las unidades según la
ubicación del evento de emergencia. .......................................................................... 96
Función para el barrido de las unidades ambulatorias disponibles en el sistema según
su última posición conocida. ...................................................................................... 97
Endpoint WebSockets ................................................................................................ 98
EndPoint WebServices ............................................................................................. 102
92
Introducción
El presente documento pretende orientar a los usuarios administradores del sistema
sobre el funcionamiento del visor geográfico y la aplicación móvil de OPTISESA.
Diagrama de base de datos
Funciones para el cálculo de la ruta más corta
En el diagrama de base de datos, existe una tabla llamada geo_ways con la
representación topológica de la vialidad de Quito, para poder hacer los cálculos de
las rutas más cortas se realizaron las siguientes funciones SQL.
Función para el cálculo de la ruta más corta basado en el algoritmo de dijkstra
/**
93
* Función para el cálculo de la ruta más corta basado en el
algoritmo de dijkstra
* con direccionalidad de vías desde un punto (x1 y1) a un punto (x2
y2)
* georeferenciado
*
* Explicación detallada del objeto.
* @param in tbl
Campo tipo varchar para el ingreso del
nombre de la tabla con las vías.
* @param in x1
Latitud 1 del primer punto.
* @param in y1
Longitud 1 del primer punto.
* @param in x2
Latitud 2 del primer punto.
* @param in y2
Longitud 2 del primer punto.
* @param in sridTrans
Proyección de transformación para el
cálculo de la distancia (la unidad depende de la proyección ej srid:
32717 distancia en metros) de la columna geográfica de la tabla tbl
en la geodatabase.
* @return
Conjunto de registros
seq,gid,name,heading,distance,cost,geom.
* @param out seq
Número secuencial que determina cuales el
orden de las trazas de vía.
* @param out gid
Número secuencial del registro
(localización) en la tabla de vías.
* @param out name
Nombre conocido (cuando exista) de la
traza de vía ej: Av. Mariana de Jesús.
* @param out heading
Ángulo de giro entre trazas de vía.
* @param out distance
Valor de la distancia definida en la
unidad de proyección sridTrans.
* @param out cost
Valor del costo de tomar una
determinada traza.
* @param out geom
Polilínea de la traza de vía
calculada.
* @author Guillermo Vaca (modificación función inicialmente
obtenida en
http://workshop.pgrouting.org/chapters/wrapper.html#simplifiedinput-parameters-and-geometry-output)
* @version 1.0 20/Marzo/2015
*/
CREATE OR REPLACE FUNCTION pgr_AtoBoptimizado(
IN tbl varchar,
IN x1 double precision,
IN y1 double precision,
IN x2 double precision,
IN y2 double precision,
IN sridTrans integer,
OUT seq integer,
OUT gid integer,
OUT name text,
OUT heading double precision,
OUT distance double precision,
OUT cost double precision,
OUT geom geometry
)
RETURNS SETOF record AS
$BODY$
DECLARE
sqltext text;
rec
record;
source
integer;
target
integer;
94
point
integer;
BEGIN
-- Encontrar el nodo más cercano
EXECUTE 'SELECT id::integer FROM vertices_tmp
ORDER BY the_geom <->
ST_GeometryFromText(''POINT('
|| x1 || ' ' || y1 || ')'',4326) LIMIT 1' INTO
rec;
source := rec.id;
EXECUTE 'SELECT id::integer FROM vertices_tmp
ORDER BY the_geom <->
ST_GeometryFromText(''POINT('
|| x2 || ' ' || y2 || ')'',4326) LIMIT 1' INTO
rec;
target := rec.id;
-- Ruta más corta con el algoritmo de dijkstra(TODO: limit
extent by BBOX)
seq := 0;
sqltext := 'SELECT gid, the_geom, name, cost,
ST_Length(ST_Transform(the_geom,'|| sridTrans ||')) AS
distance,source, target,
ST_Reverse(the_geom) AS flip_geom FROM ' ||
'pgr_dijkstra(''SELECT gid as id,
source::int, target::int, '
|| 'length::double precision
AS cost,'
|| 'reverse_cost::double
precision AS reverse_cost FROM '
|| quote_ident(tbl) || ''',
'
|| source || ', ' || target
|| ' , true, true), '
|| quote_ident(tbl) || ' WHERE id2 =
gid ORDER BY seq';
-- Remember start point
point := source;
FOR rec IN EXECUTE sqltext
LOOP
-- Flip geometry (if required)
IF ( point != rec.source ) THEN
rec.the_geom := rec.flip_geom;
point := rec.source;
ELSE
point := rec.target;
END IF;
-- Calculate heading (simplified)
EXECUTE 'SELECT degrees( ST_Azimuth(
ST_StartPoint(''' || rec.the_geom::text ||
'''),
ST_EndPoint(''' || rec.the_geom::text ||
''') ) )'
INTO heading;
-- Return record
seq
:= seq + 1;
95
gid
:= rec.gid;
name
:= rec.name;
cost
:= rec.cost;
distance:= rec.distance;
geom
:= rec.the_geom;
RETURN NEXT;
END LOOP;
RETURN;
END;
$BODY$
LANGUAGE 'plpgsql' VOLATILE STRICT;
Función para el cálculo las distancias más cortas a cada una de las unidades
según la ubicación del evento de emergencia.
/**
* Función para el cálculo de la ruta más corta basado en el
algoritmo de dijkstra
* con direccionalidad de vías desde un punto (x1 y1) de la
emergencia a cada una de las ambulancias
*
* Explicación detallada del objeto.
* @param in x1
Latitud 1 del primer punto.
* @param in y1
Longitud 1 del primer punto.
* @return
Conjunto de registros
seq,gid,vertice,vert_geom,geom.
* @param out seq
Número secuencial que determina cuales el
orden de las trazas de vía.
* @param out gid
Número secuencial del registro
(localización) en la tabla de vías.
* @param out vertice. Campo con el id del vértice de vía
disponible en la tabla de vías.
* @param out vert_geom
Vertice de calle más cercano al punto
de ubicación de la ambulancia.
* @param out geom
Punto donde se ubica cada ambulancia.
* @author Guillermo Vaca (modificación función inicialmente
obtenida en
http://workshop.pgrouting.org/chapters/wrapper.html#simplifiedinput-parameters-and-geometry-output)
* @version 1.0 20/Marzo/2015
*/
CREATE OR REPLACE FUNCTION optisesa_distancia_rutas(IN x1 double
precision, IN y1 double precision, OUT seq integer, OUT gid integer,
OUT vertice integer, OUT vert_geom geometry, OUT geom geometry, OUT
distancia double precision)
RETURNS SETOF record AS
$BODY$
DECLARE
sqltext text;
rec
record;
vert
record;
dist double precision;
BEGIN
-- Consulta para obtener las unidades disponibles en el
sistema(TODO: limit extent by BBOX)
seq := 0;
sqltext := 'SELECT * FROM optisesa_unidades_disponibles()';
FOR rec IN EXECUTE sqltext
96
LOOP
--consulta para sumar la distancia de cada uno de los
dispositivos al evento de emergencia
EXECUTE 'select sum(distance)::double precision from
pgr_AtoBlistado(''geo_ways'','|| rec.vertice || ','|| x1 ||','|| y1
||',32717)'
INTO distancia;
-- Return record
seq
:= seq + 1;
gid
:= rec.gid;
vertice := rec.vertice;
vert_geom := rec.vert_geom;
geom := rec.geom;
RETURN NEXT;
END LOOP;
RETURN;
END;
$BODY$
LANGUAGE plpgsql VOLATILE STRICT
COST 100
ROWS 1000;
ALTER FUNCTION optisesa_distancia_rutas(double precision, double
precision)
OWNER TO "user";
Función para el barrido de las unidades ambulatorias disponibles en el sistema
según su última posición conocida.
CREATE OR REPLACE FUNCTION optisesa_unidades_disponibles(OUT seq
integer, OUT gid integer, OUT vertice integer, OUT vert_geom
geometry, OUT geom geometry)
RETURNS SETOF record AS
$BODY$
DECLARE
sqltext text;
rec
record;
vert
record;
BEGIN
-- Select para obtener la última ubicación conocida de
un dispositivo
seq := 0;
sqltext := 'SELECT * FROM (SELECT * FROM (SELECT
v1.*,u.disponible,u.asignado,u.ws_session FROM (SELECT *, time =
MAX(time) OVER (PARTITION BY serial_usr) AS particion FROM
geo_rastreo) v1 left join usuario u on v1.serial_usr=u.serial_usr
WHERE v1.particion = true) v1 WHERE particion = true) v2 where
disponible = true and asignado = false ORDER BY geom <->
ST_SetSRID(ST_MakePoint(-78.51154624322987, -0.21410415408716826
),4326)';
FOR rec IN EXECUTE sqltext LOOP
-- Ruta más corta con el algoritmo de dijkstra a cada
uno de los dispositivos activos(TODO: limit extent by BBOX)
EXECUTE 'SELECT id::integer,the_geom::geometry FROM
vertices_tmp
ORDER BY the_geom::geometry <->
ST_GeometryFromText(''POINT('
97
|| rec.longitud_x || ' ' || rec.latitud_y ||
')'',4326) LIMIT 1'
INTO vert;
-- Return record
seq
:= seq + 1;
gid
:= rec.serial_usr;
vertice := vert.id;
vert_geom:= vert.the_geom;
geom
:= rec.geom;
RETURN NEXT;
END LOOP;
RETURN;
END;
$BODY$
LANGUAGE plpgsql VOLATILE STRICT
COST 100
ROWS 1000;
ALTER FUNCTION optisesa_unidades_disponibles()
OWNER TO postgres;
Endpoint WebSockets
package ec.edu.uce.optisesa.websocket;
import
import
import
import
import
import
import
java.io.IOException;
java.sql.Connection;
java.sql.PreparedStatement;
java.sql.ResultSet;
java.util.Collections;
java.util.HashSet;
java.util.Set;
import
import
import
import
import
import
import
import
import
import
javax.naming.Context;
javax.naming.InitialContext;
javax.naming.NamingException;
javax.websocket.CloseReason;
javax.websocket.EncodeException;
javax.websocket.OnClose;
javax.websocket.OnMessage;
javax.websocket.OnOpen;
javax.websocket.Session;
javax.websocket.server.ServerEndpoint;
import org.json.JSONException;
import org.json.JSONObject;
import com.exco.jdbc.Conexion;
//Tag @ServerEndpoint define a esta clase para el manejo de la
aplicación (mensajes)
@ServerEndpoint("/wss_optisesa")
public class MovilWS {
// Propiedades para la conexión con la base de datos
String driver;
String connectString;
String database;
String user;
String password;
String port;
98
String url;
String schema;
// función para realizar la conexión con la base de datos
private Conexion obtenerDB(String dbNumber) {
try {
// Accesa a las variables de entorno configuradas
en el archivo
// web.xml
Context env = (Context) new InitialContext()
.lookup("java:comp/env");
// asigna las propiedades para conexión con la
base de datos
this.driver = (String) (env.lookup("rest.dbdriver"
+ dbNumber));
this.connectString = (String)
(env.lookup("rest.connectstring"
+ dbNumber));
this.database = (String)
(env.lookup("rest.database" + dbNumber));
this.user = (String) (env.lookup("rest.dbuser" +
dbNumber));
this.password = (String) (env.lookup("rest.dbpass"
+ dbNumber));
this.port = (String) (env.lookup("rest.dbport" +
dbNumber));
this.url = (String) (env.lookup("rest.dburl" +
dbNumber));
this.schema = (String) (env.lookup("rest.dbschema"
+ dbNumber));
} catch (NamingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
// establece la conexión con la base de datos
Conexion conexion = new Conexion(driver, connectString +
url + ":"
+ port + "/" + database, user, password);
// la función retorna la conexión con la base de datos
return conexion;
}
private static Set<Session> peers = Collections
.synchronizedSet(new HashSet<Session>());
// Función para el manejo de difusión de mensajes según el
criterio de
// consulta de la aplicación
@OnMessage
public void broadcast(String message, Session session) throws
IOException {
// System.out.println("broadcast: " + message);
try {
JSONObject jsonObject = new JSONObject(message);
switch (jsonObject.getString("accion")) {
case "conexion":
// ejecución de la acción ejecución al
conectar
eventoConexion(new
JSONObject(jsonObject.getString("usuario")),
true, session.getId());
99
break;
case "tracking":
// ejecución del evento tracking, actualiza
la posición actual
// del dispositivo en la BD
eventoTracking(
new
JSONObject(jsonObject.getString("posicion")),
new
JSONObject(jsonObject.getString("usuario")));
break;
case "asignar":
// ejecuta la asignación de ruta para un
dispositivo específico
eventoAsignarRuta(jsonObject.getLong("usuarioId"),
new JSONObject(jsonObject),
message);
break;
default:
break;
}
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
// Función para actualizar los dispositivos conectados y
asignando el id de
// sesión para el envío de mensajes personalizados
public void eventoConexion(JSONObject jsonObject, boolean
conexion,
String sessionId) {
try {
Connection con = obtenerDB("0").conectar();
String query = "UPDATE USUARIO SET DISPONIBLE = ?,
WS_SESSION = ? WHERE serial_usr = ?";
PreparedStatement p = null;
p = con.prepareStatement(query);
p.setBoolean(1, conexion);
p.setString(2, sessionId);
p.setLong(3, jsonObject.getLong("serial_usr"));
p.executeUpdate();
con.close();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
// Función para actualizar los dispositivos al perder la
conexión con el
// websocket
public void eventoDesconexion(String sessionId) {
try {
Connection con = obtenerDB("0").conectar();
String query = "UPDATE USUARIO SET DISPONIBLE =
FALSE, WS_SESSION = NULL WHERE WS_SESSION = ?";
100
PreparedStatement p = null;
p = con.prepareStatement(query);
p.setString(1, sessionId);
p.executeUpdate();
con.close();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public void eventoTracking(JSONObject posicion, JSONObject
usuario) {
try {
Connection con = obtenerDB("0").conectar();
String query = "INSERT INTO GEO_RASTREO
(serial_usr,longitud_x, latitud_y, time, geom, precision) values "
+
"(?,?,?,to_timestamp(?/1000),ST_SetSRID(ST_MakePoint(?,
?),4326),?);";
PreparedStatement p = null;
p = con.prepareStatement(query);
p.setLong(1, usuario.getLong("serial_usr"));
p.setString(2, posicion.getString("longitud"));
p.setString(3, posicion.getString("latitud"));
p.setLong(4, posicion.getLong("timestamp"));
p.setDouble(5, posicion.getDouble("longitud"));
p.setDouble(6, posicion.getDouble("latitud"));
p.setDouble(7, posicion.getDouble("precision"));
p.execute();
con.close();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
//Función para el evento de asignación de ruta a un usuario
especificado
public void eventoAsignarRuta(Long usuarioId, JSONObject
jsonObject,
String mensaje) {
try {
Connection con = obtenerDB("0").conectar();
String query = "Select ws_session from Usuario
where serial_usr=?";
PreparedStatement p = null;
p = con.prepareStatement(query);
p.setLong(1, usuarioId);
ResultSet rs = p.executeQuery();
while (rs.next()) {
enviarMensaje(rs.getString("ws_session"),
mensaje);
}
con.close();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
101
// Función para el envio del mensaje al dispositivo especifico
por su id
public void enviarMensaje(String id, String mensaje) throws
IOException,
EncodeException {
for (Session peer : peers) {
if (String.valueOf(peer.getId()).equals(id)) {
peer.getBasicRemote().sendObject(mensaje);
}
}
}
// Función para almacenar el websocket conectado
@OnOpen
public void myOnOpen(Session peer) {
System.out.println("WebSocket opened: " + peer.getId());
peers.add(peer);
}
// Función para almacenar el websocket conectado
@OnClose
public void myOnClose(CloseReason reason, Session peer) {
System.out.println("Closing a WebSocket due to "
+ reason.getReasonPhrase());
eventoDesconexion(peer.getId());
peers.remove(peer);
}
}
EndPoint WebServices
package ec.edu.uce.optisesa.rest;
import
import
import
import
import
java.io.ByteArrayInputStream;
java.io.InputStream;
java.sql.Connection;
java.sql.PreparedStatement;
java.sql.ResultSet;
import
import
import
import
import
import
import
import
import
import
import
import
import
javax.naming.Context;
javax.naming.InitialContext;
javax.naming.NamingException;
javax.ws.rs.FormParam;
javax.ws.rs.GET;
javax.ws.rs.POST;
javax.ws.rs.Path;
javax.ws.rs.PathParam;
javax.ws.rs.Produces;
javax.ws.rs.QueryParam;
javax.ws.rs.core.MediaType;
javax.ws.rs.core.Response;
javax.ws.rs.core.Response.ResponseBuilder;
import
import
import
import
org.json.JSONArray;
org.json.JSONException;
org.json.JSONObject;
org.postgresql.util.Base64;
102
import com.exco.jdbc.Conexion;
import com.exco.jsonxml.utils.ResultSetUtil;
//Tag @Path define la url del servicio REST
//Tag @Get define el tipo de petición HTTP
//Tag @Produces define el MIME type de retorno en el servicio REST
@Path("/ws_optisesa")
public class ServiciosGeoJson {
// Propiedades para la conexión con la base de datos
String driver;
String connectString;
String database;
String user;
String password;
String port;
String url;
String schema;
// función para realizar la conexión con la base de datos
private Conexion obtenerDB(String dbNumber) {
try {
// Accesa a las variables de entorno configuradas
en el archivo
// web.xml
Context env = (Context) new InitialContext()
.lookup("java:comp/env");
// asigna las propiedades para conexión con la
base de datos
this.driver = (String) (env.lookup("rest.dbdriver"
+ dbNumber));
this.connectString = (String)
(env.lookup("rest.connectstring"
+ dbNumber));
this.database = (String)
(env.lookup("rest.database" + dbNumber));
this.user = (String) (env.lookup("rest.dbuser" +
dbNumber));
this.password = (String) (env.lookup("rest.dbpass"
+ dbNumber));
this.port = (String) (env.lookup("rest.dbport" +
dbNumber));
this.url = (String) (env.lookup("rest.dburl" +
dbNumber));
this.schema = (String) (env.lookup("rest.dbschema"
+ dbNumber));
} catch (NamingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
// establece la conexión con la base de datos
Conexion conexion = new Conexion(driver, connectString +
url + ":"
+ port + "/" + database, user, password);
// la función retorna la conexión con la base de datos
return conexion;
}
// Función para construir un vector de objetos JSON con el
resultado de una
103
// consulta
private JSONArray obtenerJson(PreparedStatement p) throws
Exception {
ResultSet rs = p.executeQuery();
return ResultSetUtil.convertToJSON(rs);
}
// Función para construir un vector de objetos GeoJSON con el
resultado de
// una consulta
private JSONArray obtenerGeoJson(PreparedStatement p, int
srid)
throws Exception {
ResultSet rs = p.executeQuery();
return ResultSetUtil.convertToGeoJSON(rs, 0, srid);
}
// Función para el calculo del tiempo de respuesta, es usado
para medir el
// tiempo que tarda una solicitud en ser respondida
private void tiempoRespuesta(long startTime, long endTime) {
System.out.println(endTime - startTime);
}
// Función para retornar los objetos JSON solicitados en la
petición REST,
// en caso de existir una variable callback se retorna una
variable
// javascript. (Facilita el uso de Cross Domain en la app)
private String hasCallback(JSONArray json, String callback) {
if (callback != null)
return (callback + "(" + json.toString() + ");");
else
return json.toString();
}
// Método para probar si el servicio REST esta en
funcionamiento
@GET
@Produces(MediaType.TEXT_PLAIN)
public String sayPlainTextHello() {
return "REST OPTISESA";
}
// Método para verificar el acceso a la aplicación
// El tag @QueryParam lee las variables que provienen de la
petición HTTP
@GET
@Path("login")
@Produces({ "text/javascript", "application/x-json" })
public String login(@QueryParam("user") String user,
@QueryParam("pass") String pass,
@QueryParam("callback") String callback) {
JSONArray json = null;
JSONObject jo = new JSONObject();
long startTime = System.currentTimeMillis();
try {
// Realiza la conexión a la base de datos
Connection con = obtenerDB("0").conectar();
// Construye el query
104
String query = "SELECT serial_usr,apellido_usr,
nombre_usr, codigo_usr,disponible FROM usuario WHERE nombre_usr = ?
AND clave_usr = md5(?)";
// Crea la sentencia preparada
PreparedStatement p = null;
p = con.prepareStatement(query);
// asigna los parámetros a la consulta
p.setString(1, user);
p.setString(2, pass);
// retorna el objeto JSON
json = obtenerJson(p);
// cierra la conexión con la BD
con.close();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
if (json.length() > 0) {
json.getJSONObject(0).put("acceso", true);
} else {
jo.put("acceso", false);
json.put(jo);
}
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
tiempoRespuesta(startTime, System.currentTimeMillis());
return hasCallback(json, callback);
}
// Método para obtener el GeoJSON de la base de datos
correspondiente a la
// ruta más corta desde la ubicación actual (x1,y1) de una
unidad a la
// ubicación asignada (x2,y2).
// El parámetro srid se debe colocar 32717 para obtener las
distancias de
// las rutas en kilómetros.
@GET
@Path("ruta/{x1}/{y1}/{x2}/{y2}/{srid}")
@Produces({ "text/javascript", "application/x-json" })
public String ruta(@PathParam("x1") Double x1,
@PathParam("y1") Double y1,
@PathParam("x2") Double x2, @PathParam("y2")
Double y2,
@PathParam("srid") Integer srid,
@QueryParam("callback") String callback) {
JSONArray json = null;
long startTime = System.currentTimeMillis();
try {
// Realiza la conexión a la base de datos
Connection con = obtenerDB("0").conectar();
// Construye el query
String query = "SELECT
ST_AsGeoJSON(ST_Transform(geom,?)),name ,distance, heading, cost
FROM pgr_AtoBoptimizado(?, ?, ?, ?, ?, ?)";
PreparedStatement p = null;
105
p = con.prepareStatement(query);
p.setInt(1, srid);
p.setString(2, "geo_ways");
p.setDouble(3, x1);
p.setDouble(4, y1);
p.setDouble(5, x2);
p.setDouble(6, y2);
p.setInt(7, srid);
// retorna el objeto GeoJSON
json = obtenerGeoJson(p, srid);
con.close();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
tiempoRespuesta(startTime, System.currentTimeMillis());
return hasCallback(json, callback);
}
// Función que retorna el listado de unidades más cercanas al
punto de
// emergencia (x1,y1) ordenadas de mayor a menor distancia
@GET
@Path("unidades/{x1}/{y1}")
@Produces({ "text/javascript", "application/x-json" })
public String unidadesDisponibles(@PathParam("x1") Double x1,
@PathParam("y1") Double y1,
@QueryParam("callback") String callback) {
JSONArray json = null;
long startTime = System.currentTimeMillis();
try {
// Realiza la conexión a la base de datos
Connection con = obtenerDB("0").conectar();
// Construye el query
String query = "select v1.gid as
serial_usr,u.nombre_usr,u.codigo_usr,v1.distancia/1000 as
distancia_km from optisesa_distancia_rutas(?,?) v1 left join usuario
u on v1.gid=u.serial_usr order by distancia asc";
PreparedStatement p = null;
p = con.prepareStatement(query);
p.setDouble(1, x1);
p.setDouble(2, y1);
json = obtenerJson(p);
con.close();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
tiempoRespuesta(startTime, System.currentTimeMillis());
return hasCallback(json, callback);
}
// Función que retorna las capas configuradas en la base de
datos
@GET
@Path("layers/{sistema}")
@Produces({ "text/javascript", "application/x-json" })
public String obtenerCapas(@QueryParam("var") String var,
@QueryParam("callback") String callback,
@PathParam("sistema") String sistema) {
JSONArray json = null;
106
long startTime = System.currentTimeMillis();
try {
// Realiza la conexión a la base de datos
Connection con = obtenerDB("0").conectar();
// Construye el query
String query = "SELECT
cm.fromwmslayer,cms.label_ctms AS etiquetasubroot, cms.iconcls_ctms
AS iconsubroot, cmn.label_ctmn AS etiquetaroot, cmn.iconcls_ctmn AS
iconroot,
cm.displayinlayersw_ctm AS displayinlayer, cmn.type_ctmn
AS servicio, cms.subtype_ctms AS nodo, cm.iconcls_ctm AS icon,
cm.filtrocql_ctm AS cql,
cm.rulesld_ctm AS rule,
cm.maxresolution_ctm AS maxresol, cm.minresolution_ctm AS minresol,
cm.urlficha_ctm AS urlficha, cm.capabASe_ctm AS isbASelayer,
cm.label_ctm AS nombre, cm.url_ctm AS url, cm.layer_ctm AS
layer, cm.format_ctm AS format, cm.transparent_ctm AS transparent,
cm.alpha_ctm AS opacity,
cm.visible_ctm AS visibility,
cm.anio_ctm AS id, cm.idnamefields_ctm AS idnamefields,
cm.idfields_ctm AS idfields FROM catalogo_mapa AS cm LEFT JOIN
catalogo_mapa_nodo cmn ON cm.type_ctm = cmn.serial_ctmn LEFT JOIN
catalogo_mapa_subnodo cms ON cm.subtype_ctm = cms.serial_ctms WHERE
cm.mapachk_ctm=true and (cm.grupo_ctm = 0 or cm.grupo_ctm = ?) ORDER
BY cmn.orden_ctmn,cms.orden_ctms,cm.orden_ctm;";
PreparedStatement p = null;
p = con.prepareStatement(query);
p.setInt(1, new Integer(sistema));
json = obtenerJson(p);
con.close();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
tiempoRespuesta(startTime, System.currentTimeMillis());
if (callback != null && var == null)
return (callback + "(" + json.toString() + ");");
else if (var != null)
return (var + "=" + json.toString() + ";");
else
return json.toString();
}
// Función que permite la descarga de los data grid del visor
en los
// diferentes formatos geográficos
@POST
@Path("descarga")
@Produces(MediaType.TEXT_PLAIN)
public Response obtenerDescarga(@FormParam("filename") String
filename,
@FormParam("mime") String mime, @FormParam("data")
String data,
@FormParam("encoding") String encoding,
@FormParam("assign_srs") String assign_srs,
@FormParam("source_srs") String source_srs) {
long startTime = System.currentTimeMillis();
InputStream stream = new
ByteArrayInputStream(Base64.decode(data));
ResponseBuilder response = Response.ok(stream);
response.type(mime);
response.header("Content-Disposition", "attachment;
filename=\""
+ filename + "\"");
107
tiempoRespuesta(startTime, System.currentTimeMillis());
return response.build();
}
}
108
UNIVERSIDAD CENTRAL DEL ECUADOR
FACULTAD DE INGENIERÍA, CIENCIAS FÍSICAS Y MATEMÁTICA
CARRERA DE INGENIERÍA INFORMÁTICA
DISEÑO Y DESARROLLO DE UNA HERRAMIENTA WEB GEOGRÁFICA
PROTOTIPO PARA APOYAR LA OPTIMIZACIÓN DE TIEMPOS DE
RESPUESTA A LOS SERVICIOS DE SALUD AMBULATORIOS DENTRO
DE LAS ÁREAS POBLADAS URBANAS DEL DISTRITO
METROPOLITANO DE QUITO –DMQ-.
MANUAL DE INSTALACIÓN SOFTWARE UTILIZADO
AUTOR:
JHONATHAN GUILLERMO VACA CABRERA
TUTOR:
ING. LUIS FELIPE BORJA BORJA
QUITO – ECUADOR
2015
109
Contenido
Introducción ............................................................................................................. 111
Requerimientos mínimos: ........................................................................................ 111
Instalación de la base de datos Postgres y Postgis ................................................... 111
Instalación PostGIS y pgRouting ............................................................................. 113
Instalación Eclipse Luna. ......................................................................................... 121
Configuración Eclipse-JBoss ................................................................................... 122
Instalar Jboss-Tools ........................................................................................... 122
Agregar el server a Eclipse ............................................................................... 124
Iniciar el servidor .............................................................................................. 125
Script base de datos. ................................................................................................. 126
Crear Base de datos ........................................................................................... 126
Instalar la extensión de postgis y pgrouting ...................................................... 126
Cargar el backup....................................................................................................... 127
Instalación y configuración de Geoserver. ............................................................... 128
Editar tabla catalogo_mapa ...................................................................................... 129
Instalación del sistema. ............................................................................................ 130
Montar el archivo .ear y el archivo .ear.dodeploy............................................ 130
optisesa_web.war .............................................................................................. 130
optisesa_ws.war ................................................................................................ 132
110
Introducción
El presente documento pretende orientar a los usuarios técnicos sobre el software
necesario para el funcionamiento del visor geográfico y la aplicación móvil de
OPTISESA:
Requerimientos mínimos:
Hardware

Espacio mínimo de disco duro 10GB

Memoria mínima disponible 2GB

Procesador Dual Core
Software

Windows 7 o superior de 32 bits o 64 bits

Jboss Wildfly 8.2

Postgres 9.2

Postgis 2.x

Geoserver 2.4.3

Java SDK 7
Red (Internet)

Conexión de red a internet
DVD con los instaladores

Es necesario el DVD con los instaladores disponibles en la carpeta:
“5 Software usado en la aplicación”
Instalación de la base de datos Postgres y Postgis
Según el sistema operativo descargar la versión de PostgreSQL necesaria, en el caso
de este manual se hace uso del instalador para Windows de 32bits provisto en el CD:
1. Ejecutar el archivo postgresql-9.2.10-2-windows.exe
2. Se puede cambiar la ubicación o si está de acuerdo con la ubicación sugerida
por el instalador dejarla sin modificación y presionar siguiente.
111
3. Ingresar el password del super usuario y luego confirmarlo.
4.
Ingresar puerto o si está de acuerdo con el sugerido dejarla sin modificación
y presionar siguiente.
5. Seleccione el idioma o dejarlo por defecto y presionar siguiente.
6. Presionar el botón instalar para iniciar la instalación.
112
Instalación PostGIS y pgRouting
Una vez finalizada la instalación de PostgreSQL aparecerá una ventana para ejecutar
a “Stack Builder” al finaliza, marcamos la opción y esperamos a que se abra el
dialogo de Stack Builder.
En caso de que se haga la instalación a posterior, se debe ejecutar “Stack Builder”
desde el menú de inicio > todos los programas > PostgreSQL 9.2 > Application
Stack Builder
113
1. Una vez abierto el cuadro de diálogo de Stack Builder seleccionar el instancia
de PostgreSQL que se acaba de instalar en el equipo.
2. Desplegamos las sub opciones de la opción “Spatial Extensions”, seleccionar
la opción que diga PostGIS bundle para la versión (32/64bits) de la base de
datos, para este manual se considera la versión de 32 bits y presionar
siguiente.
3. Seleccionar el directorio donde se descargará el archivo del instalador de
PostGIS
4. Inmediatamente la descarga ha finalizado, presionar el botón siguiente y
aceptar los términos de licencia de PostGIS y pgRouting
114
5. Si fuese necesario se puede instalar una base de datos geográfica de prueba
durante la instalación, por último presionar siguiente y esperar a que culmine
la instalación.
6. Verificar que las extensiones necesarias se han instalado correctamente, tras
conectarse al servidor de base de datos en una consola SQL ejecutar la
siguiente consulta:
select * from pg_available_extensions where name like 'p%' order by name;
115
Configuraciones extras:
1. Ir al directorio de instalación de PostgreSQL, y abrir el archivo pg_hba.conf
X:\<directorio_PostgreSQL>\9.1\data\pg_hba.conf
2. Agregar el rango de direcciones a las cuales se va a permitir el acceso a la
base de datos (en caso de necesitar acceso desde otro host)
116
Instalación y configuración de Java JDK 7.
1. Descargar el JDK de java para la versión del sistema operativo usado, en el
caso de este manual se proporciona el instalador para Windows de 32bits.
2. Ejecutar el instalador, presionar siguiente
117
3. Esperar a que la instalación termine
4. Copiar a la ubicación donde se instaló el JDK de JAVA y configurar la
variable de entorno en Windows.
118
5. Abrir la ventana de diálogo de las propiedades del sistema, para ello ir al
icono Equipo > clic derecho > propiedades > Configuración avanzada del
sistema.
6. Seleccionar “Variable de entorno …”, en la sección variables del sistema
presionar el botón “nueva …”. Llenar el nombre de la variable con
119
JAVA_HOME y pegar la ubicación de la instalación del JDK de JAVA,
presione “Aceptar” para guardar la variable.
7. Buscar la variable “path” y editarla o crearla en el caso que no existiera,
aumentar al final la siguiente línea:
;%JAVA_HOME%\bin
Instalación y configuración de Jboss Wildfly.
1. Extraer el archivo tesis_wildfly-8.2.0.Final.zip en cualquier ubicación.
2. Una vez que se extrajo la carpeta wildfly-8.2.0.Final ingresar a la carpeta bin.
120
3. En dicha carpeta ejecutar (con la línea de comandos CMD) la siguiente línea:
Standalone.bat –b 0.0.0.0
4. Se debe verificar que la siguiente línea en la consola para saber que WildFly
se ha ejecutado sin problemas.
WildFly 8.2.0.Final "Tweek" started in 16246ms - Started
Instalación Eclipse Luna.
1. Copiar el contenido de la carpeta comprimida eclipse-java-luna-SR2win32.zip en cualquier ubicación.
2. Abrir la ubicación donde estaba la carpeta comprimida y ejecutar el programa
“eclipse.exe”.
121
3. Seleccionar una ubicación para el espacio de trabajo y esperar a que se abra el
programa.
Configuración Eclipse-JBoss
Instalar Jboss-Tools
Ir a opción ayuda y seleccionar “eclipse marketplace”
122
Escribir Jboss tolos, seleccionar la opción para el IDE de eclipse e instalarlo
123
Agregar el server a Eclipse
1. En la pantalla principal de Eclipse ir a la opción Window, escoger Show
View y seleccionar la opción Other.
2. Seleccione Server->JBoss Server View y hacer clic en OK
3. Sobre la vista de JBoss Server View haga clic derecho y seleccione new>Server
124
Iniciar el servidor
En la pestaña Servers seleccionamos el servidor agregado, damos clic derecho en
Start.
125
Script base de datos.
Crear Base de datos
Crear una nueva base de datos en el motor de Base de Datos postgresql.
Instalar la extensión postgis y pgrouting en la base de datos.
Instalar la extensión de postgis y pgrouting
Se abrirá la siguiente ventana
Escribir las siguientes líneas:
create extension postgis;
126
create extension pgrouting;
Verificar que la consulta se ejecute sin problemas
Cargar el backup
El backup ha sido generado de una versión postgreSQL 9.2.1 Seleccionar la base de
datos creada y click botón derecho y seleccionar la opción restore del pgAdmin.
127
Seleccionar el backup “optisesa_tesis.backup” que se encuentra en la carpeta
“backup base de datos”.
Esperar a que termine la restauración de la BD.
Instalación y configuración de Geoserver.
1. Abrir la carpeta standalone del servidor WildFly, copiar los archivos
geoserver.war y geoserver.war.dodeploy
X:\wildfly-8.2.0.Final\standalone\deployments
2. Una
vez
que
el
archivo
geoserver.war.dodeploy
ha
cambiado
geoserver.war.deployed abrir el navegador y verificar que se ha deployado
correctamente
ingresando
http://<hostname_o_ip_host>:8081/geoserver
128
a
la
url
Identificarse con las credenciales: Nombre de usuario “admin” y contraseña
“exco2014”.
3. Una vez logeado del panel lateral izquierdo seleccionar “almacenes de datos”
4. Seleccionar el nombre del almacén “AHISS” y “optisesa_tesis”. Editar los
parámetros de conexión con las credenciales de la base de datos de cada
almacén, activar la opción habilitado y guardar.
Editar tabla catalogo_mapa
Conectarse a la base de datos, abrir una consola SQL y ejecutar:
129
update catalogo_mapa set url_ctm =
'http://<host_ip>:<puerto>/geoserver/ahiss/wms' where url_ctm =
'http://186.101.170.100:8081/geoserver/ahiss/wms';
update catalogo_mapa set url_ctm =
'http://<host_ip>:<puerto>/geoserver/ahiss/wms' where url_ctm =
'http://186.101.170.100:8081/geoserver/optisesa_tesis/wms';
Instalación del sistema.
Montar el archivo .ear y el archivo .ear.dodeploy
Copiar el archivo optisesa_tesisEAR.ear en la carpeta deployments que se encuentra
en wildfly-8.2.0.Final\standalone\deployments
Abrir la carpeta optisesa_tesisEAR.ear, internamente se encuentran dos carpetas
optisesa_web.war y optisesa_ws.war.
optisesa_web.war
Modificar el archivo index.html que se encuentra en
D:\servidores\wildfly8.2.0.Final\standalone\deployments\optisesa_tesisEAR.ear\optisesa_web.war\visor_o
ptisesa
Modificar la siguiente línea con los valores del servidor de aplicaciones
<script type="text/javascript"
src="http://<host_o_ip_servidor>:<puerto>/optisesa_ws/rest/ws_optise
sa/layers/2?var=capasIniciales"></script>
130
Editar los archivos JavaScript app.js.
D:\servidores\wildfly8.2.0.Final\standalone\deployments\optisesa_tesisEAR.ear\optisesa_web.war\visor_o
ptisesa\js\optisesa
app.js -> cambiar las líneas siguientes con el valor de la IP correspondientes.
4
5
6
7
8
9
10
11
12
13
14
15
16
16
18
19
20
21
22
23
//url del servidor de aplicaciones
var urlServer= "http://186.101.170.100";
//url del servidor de mapas en internet
var urlServidorGeoServer= "http://186.101.170.100";
//proxy para acceso crossdomain en jsp
var urlProxy= "proxy.jsp?";//"proxy.php?url="; //
//url del servidor de mapas en internet
var urlGeoserver243= urlServidorGeoServer + ":8895/geoserver";
//url para la impresión de mapas
var urlMapfishPrint=urlServer+':8081/ahiss/print/pdf';
//url para los servicios rest
var urlServerRest =
urlServer+":8081/optisesa_ws/rest/ws_optisesa/";
//url para los servicios rest de descarga
var serviceUrl=urlServerRest+'descarga';
//url para los websockets
var ipWS = "186.101.170.100";
//puerto websockets
var puertoWS = "8081";
//uri para los websockets
var
wsUri
=
"ws://"
+
ipWS
+
":"
+
puertoWS
+
"/optisesa_ws/wss_optisesa";
Editar los archivos JavaScript mobile-conf.js.
D:\servidores\wildfly8.2.0.Final\standalone\deployments\optisesa_tesisEAR.ear\optisesa_web.war\visor_o
ptisesa\js\optisesa\mobile
mobile-conf.js -> cambiar las líneas siguientes con el valor de la IP
correspondientes.
1
2
3
4
5
6
7
8
//ip servidor rest
var ipRest = "186.101.170.100";
//puerto servidor rest
var puertoRest = "8081";
//ip servidor websockets
var ipWS = "186.101.170.100";
//puerto servidor websockets
var puertoWS = "8081";
131
optisesa_ws.war
Modificar el archivo web.xml con un editor de texto. El archivo se encuentra en
optisesa_tesisEAR.ear\optisesa_ws.war\WEB-INF
Modificar los siguientes parámetros “env-entry-value” con los valores del servidor
de la base de datos
<env-entry>
<env-entry-name>rest.database0</env-entry-name>
<env-entry-type>java.lang.String</env-entry-type>
<env-entry-value>optisesa_tesis</env-entry-value>
</env-entry>
<env-entry>
<env-entry-name>rest.dbdriver0</env-entry-name>
<env-entry-type>java.lang.String</env-entry-type>
<env-entry-value>org.postgresql.Driver</env-entry-value>
</env-entry>
<env-entry>
<env-entry-name>rest.dbpass0</env-entry-name>
<env-entry-type>java.lang.String</env-entry-type>
<env-entry-value>user</env-entry-value>
</env-entry>
<env-entry>
<env-entry-name>rest.dbport0</env-entry-name>
<env-entry-type>java.lang.String</env-entry-type>
<env-entry-value>5432</env-entry-value>
</env-entry>
<env-entry>
<env-entry-name>rest.dburl0</env-entry-name>
<env-entry-type>java.lang.String</env-entry-type>
<env-entry-value>172.30.1.108</env-entry-value>
</env-entry>
<env-entry>
<env-entry-name>rest.dbuser0</env-entry-name>
<env-entry-type>java.lang.String</env-entry-type>
<env-entry-value>user</env-entry-value>
</env-entry>
Una
vez
finalizado
las
optisesa_tesisEAR.ear.dodeploy
modificaciones
a
la
copiar
carpeta
el
archivo
wildfly-
8.2.0.Final\standalone\deployments.
Cuando el archivo optisesa_tesisEAR.ear.dodeploy ha cambiado de extensión a
optisesa_tesisEAR.ear.deployed abrir el navegador e ingresar a la aplicación
como se especifica en el manual de usuario.
132
UNIVERSIDAD CENTRAL DEL ECUADOR
FACULTAD DE INGENIERÍA, CIENCIAS FÍSICAS Y MATEMÁTICA
CARRERA DE INGENIERÍA INFORMÁTICA
DISEÑO Y DESARROLLO DE UNA HERRAMIENTA WEB GEOGRÁFICA
PROTOTIPO PARA APOYAR LA OPTIMIZACIÓN DE TIEMPOS DE
RESPUESTA A LOS SERVICIOS DE SALUD AMBULATORIOS DENTRO
DE LAS ÁREAS POBLADAS URBANAS DEL DISTRITO
METROPOLITANO DE QUITO –DMQ-.
MANUAL DE EJECUCIÓN PROGRAMA FUENTE
AUTOR:
JHONATHAN GUILLERMO VACA CABRERA
TUTOR:
ING. LUIS FELIPE BORJA BORJA
QUITO – ECUADOR
2015
133
Contenido
Introducción ............................................................................................................. 135
Requerimientos mínimos: ........................................................................................ 135
Importar el proyecto ................................................................................................. 135
134
Introducción
El presente documento pretende orientar a los usuarios técnicos sobre el software
necesario para el funcionamiento del visor geográfico y la aplicación móvil de
OPTISESA:
Requerimientos mínimos:
Red (Internet)

Conexión de red a internet
DVD con los instaladores

Seguir los pasos del manual de instalación del software utilizado.

Es necesario el DVD con los instaladores disponibles en la carpeta:
“3 Software usado en la aplicación”
Importar el proyecto
En el panel izquierdo del IDE Eclipse, click derecho -> Import -> Import
Seleccionamos la opción existing projects into workspace
135
Seleccionar el programa fuente optisesa_tesisEAR, aceptar y finalizar la importación
136
Después de culminar con el paso anterior, modificar los archivos web.xml del
proyecto optisesa_ws y los archivos de configuración javascript de optisesa_web de
la misma manera como se expone en el manual de instalación del software utilizado
en el literal “Instalación del sistema”
Por último para ejecutar el código fuente en el servidor wildfly, ir a la vista de
servidores, clic derecho y seleccionar la opción “add and remove”.
137
Seleccionar el EAR optisesa_tesisEAR, importarlo y finalizar. Automaticamente
wildfly empezará a deployar el EAR.
138