Documentos de Académico
Documentos de Profesional
Documentos de Cultura
d1307432190 PDF
d1307432190 PDF
2
3.6.3.3.1. Tabla Tipos de dispositivos ........................................................................... 27
3.6.3.3.2. Tabla Dispositivos ......................................................................................... 29
3.6.3.3.3. Tabla Historial ............................................................................................... 30
3.6.4. AJAX ........................................................................................................................ 32
3.6.4.1. Ventaja e Inconvenientes de AJAX .............................................................. 33
3.6.4.2. AJAX: Intercambio de Datos con JSON ...................................................... 34
3.6.4.3. Comparacin entre XML y JSON ................................................................ 34
3.7. Desarrollo ........................................................................................................................ 35
3.7.1. Archivo SIG.html..................................................................................................... 35
3.7.2. Archivo Sig_Ext.js ................................................................................................... 37
3.7.2.1. Diseo de los Paneles ...................................................................................... 38
3.7.2.2. Botones y Formularios ................................................................................... 42
3.7.3. Archivo MAPA.js ..................................................................................................... 45
3.7.3.1. Mapa ................................................................................................................ 46
3.7.3.2. Controles y Configuracin del Mapa............................................................ 46
3.7.3.3. Layers o Capas ............................................................................................... 50
3.7.3.3.1. Markers.......................................................................................................... 51
3.7.3.3.2. Historial ......................................................................................................... 52
3.7.4. Archivo Conectarse.php .......................................................................................... 53
3.7.5. Archivo Datos.php ................................................................................................... 54
3.7.6. Archivo TreeData.php ............................................................................................. 55
3.7.7. Simulacin de la Recepcin de Datos Va SMS ..................................................... 57
3.8. Evaluacin: Juego de Pruebas ...................................................................................... 57
3.8.1. Crear un Tipo de Dispositivo .................................................................................. 57
3.8.2. Modificar un Tipo de Dispositivo............................................................................ 60
3.8.3. Crear un Dispositivo ................................................................................................ 61
3.8.4. Simulacin Recepcin de Datos .............................................................................. 64
3.8.5. Visualizar Historial de un Dispositivo .................................................................... 65
3.8.6. Visualizar la ltima Posicin de un Dispositivo .................................................... 66
3.8.7. Visualizar el Recorrido de un Dispositivo .............................................................. 66
3.8.8. Eliminar Tipo de Dispositivo .................................................................................. 67
3.8.9. Eliminar Dispositivo ................................................................................................ 67
3.9. Recursos utilizados ......................................................................................................... 68
3.9.1. Requisitos hardware y software .............................................................................. 68
3
4. APORTACIONES DEL PROYECTO A LOS CONOCIMIENTOS DEL ALUMNO ... 69
5. APORTACIONES DE LOS ESTUDIOS REALIZADOS AL PROYECTO.................... 70
6. CONCLUSIONES Y LNEAS FUTURAS .......................................................................... 71
REFERENCIAS ............................................................................................................................. 73
4
1. DESCRIPCIN DE LA EMPRESA: AIDDEA LINUX, S.L:
Este proyecto se llevar a cabo para la empresa Aiddea Linux, S.L, representada por
Joaqun Lpez, y situada en: Cam de Valls, n 81-87, despacho 61, Reus.
Ofrece servicios tanto en el campo de la electrnica como de las TIC. Por la parte
electrnica, como ya hemos comentado, desarrolla diseos electrnicos a medida desde el
concepto inicial hasta la entrega de prototipos funcionales para integrar en el cliente final.
Por la parte TIC, Aiddea crea aplicaciones a medida del cliente, tanto sobre Windows
como sobre Linux.
- Automatizacin y robtica.
- Bases de datos.
- Gestin de inventarios.
- Gestin documental.
- Hardware informtico.
- Integracin de sistemas.
- Programario libre.
- Sistemas wireless.
- Software a medida.
Por ltimo comentar que tambin cuenta con un portal de venda on-line,
http://www.aidealo.com , de productos electrnicos.
5
2. UBICACIN DEL PROYECTANTE DENTRO DE AIDDEA
LINUX, S.L:
El acuerdo entre Aiddea Linux, S.L, y Marina Carrillo fue el de realizar un aplicativo web
para la gestin de dispositivos remotos. En concreto, un Sistema de Informacin
Geogrfica, es decir, un sistema que nos permitir tener localizados diferentes elementos,
en un mapa, podemos resumirlo en la palabra Geolocalizacin, trmino nuevo, y muy
presente actualmente debido al auge de este tipo de tecnologas, que hace referencia a
conocer la ubicacin geogrfica, de un dispositivo determinado.
Por otra parte, Aiddea Linux quiere que la aplicacin pueda ser utilizada en distintas
situaciones, por lo tanto se har de forma que se pueda adaptar a diferentes tipos de
elementos a localizar, aunque la idea actual se basa en tener localizados a un nmero
determinado de animales, se pretende adaptarla en un futuro a otro tipo de demandas.
Otro requisito deseado es que la interfaz debe ser minimalista e intuitiva, al usuario le debe
resultar fcil navegar por la pgina y acceder a las funcionalidades que quiera de forma
sencilla.
Para realizar el proyecto, durante los meses de trabajo hemos ido realizando reuniones, o
nos hemos puesto en contacto va correo electrnico, para ir acordando los requisitos de la
aplicacin, tales como: definir las funciones deseadas y necesarias para el proyecto,
comprobar y revisar el trabajo realizado, comentar dudas, y en resumen, ir definiendo
correctamente el diseo y desarrollo del aplicativo.
6
3. DESCRIPCIN DE LA TAREA REALIZADA:
Este apartado es la parte fundamental del proyecto. Constar de los siguientes apartados:
- Objetivos: Se trata de las metas globales del proyecto, es decir, hacer un esquema
de todo aquello que necesitamos estudiar previamente para realizar la aplicacin, y
todas las funciones y caractersticas que debe tener el caso prctico final.
7
3.1. Introduccin:
La Geolocalizacin es una de las manifestaciones ms populares del desarrollo actual de
las Tecnologas de la Informacin y las Comunicaciones (TIC), y que est experimentando
un auge relevante en los ltimos tiempos.
Hay diferentes formas de saber la ubicacin de un elemento fsico, pero ltimamente con la
evolucin de la telefona mvil, podemos ubicarnos en cualquier punto del mundo, ya sea
mediante receptores GPS, redes WI-FI inalmbricas, o las propias redes de telefona mvil,
a esto le aadimos el desarrollo de la banda ancha mvil que permite la conexin
permanente a internet de los llamados telfonos inteligentes (smartphones).
El uso prctico de este tipo de tecnologas es muy variado, desde el uso en redes sociales
como Facebook, como puede ser Facebook Places, aplicacin que te proporciona
informacin sobre restaurantes, tiendas, opiniones de los diferentes lugares, etc, hasta
utilidades como trazado de rutas, senderismo... Pero no slo estn ideadas para el ocio, en
el campo empresarial y profesional tambin tienen utilidades muy importantes, como por
ejemplo sistemas que utilizan algunas compaas de seguros para la localizacin de
vehculos robados o siniestrados, etc.
- Aplicativo Web: Ser el paso final, la web donde el usuario podr visualizar la
informacin deseada, y ver todos los dispositivos registrados. Ser la tarea principal
que se desarrollar en este proyecto.
1
GPS: Global Positioning System - Sistema de Posicionamiento Global
2
Localizacin GSM: es un servicio ofrecido por las empresas operadoras de telefona mvil que permite determinar, con
una cierta precisin, donde se encuentra fsicamente un terminal mvil determinado.
8
Figura 1. Esquema simplificado del funcionamiento del Sistema de Localizacin.
El proyecto tiene como finalidad principal el diseo y desarrollo de una aplicacin web, en
la cual se representa un mapa con la informacin espacial recibida de unos determinados
dispositivos (elementos mviles). Para poder adentrarnos en las caractersticas y
funcionamiento deseado, primero es conveniente hacer un estudio general de este tipo de
tecnologas, por lo tanto, a priori, tendremos una serie de objetivos iniciales, de carcter
ms terico, tales como:
9
Elegir un framework Javascript adecuado para la creacin del portal, en este caso
EXT JS.
Una vez situados en el tema, definiremos los objetivos bsicos del funcionamiento de la
aplicacin. Debido a que est ideada para poderla adaptar a diferentes situaciones
temticas, es decir, no sabemos qu tipos de elementos (por ejemplo: coches, animales,
etc) sern los que queramos posicionar, siempre hablaremos de dispositivos en general:
Estos seran los objetivos principales, tanto a nivel terico, como prctico. A continuacin,
en el apartado especificaciones se expondrn ms a fondo todas las caractersticas y
funciones que queremos que realice la aplicacin.
El proyecto trata de desarrollar una aplicacin Web capaz de gestionar y monitorizar una
serie de dispositivos wireless. En un principio la aplicacin est ideada para cualquier tipo
de dispositivo a localizar, ya que se pretende que pueda ser utilizada en distintas
situaciones, aunque como ejemplo e idea principal ser utilizada para localizar un nmero
determinado de animales en un terreno. Por lo tanto no habr un nmero elevado de
elementos, sobre unos 100 aproximadamente. Los dispositivos podrn ser agrupados en
clases, es decir, tipos de dispositivos.
10
tiene actualmente, observaciones), en esta pantalla tambin tendremos opciones
para modificarlos, eliminarlos o crear nuevos tipos.
- Pantalla con la lista de dispositivos, ser prcticamente igual a la explicada
para los tipos de dispositivo, en este caso tendremos id, tipo, icono, nombre, y
observaciones, de cada uno de ellos. Tambin tendremos los botones que nos
permitirn acceder a modificarlos, eliminarlos o crear nuevos, adems se
aadir el botn historial que nos mostrar las posiciones recibidas del
dispositivo seleccionado.
- Como ya hemos dicho la aplicacin nos debe facilitar las opciones para crear,
modificar y eliminar los tipos de dispositivos y dispositivos, se crearn y
modificarn mediante formularios que piden los datos necesarios y validan la
informacin introducida por el usuario. En el caso de eliminar, siempre se
pedir al usuario que confirme que desea eliminarlos, para asegurarnos que no
borre informacin accidentalmente.
La aplicacin est ideada para que la informacin de cada dispositivo se reciba mediante
SMS. Se tendr que tener en cuenta que se debe utilizar el protocolo/servicio ms simple
posible, ya que el encargado de enviar la informacin ser un dispositivo embedded, con
una capacidad de proceso limitada.
Se recibir un mensaje, va SMS, con al menos la posicin GPS, el resto de informacin se
podr obtener si ese nmero de telfono est dado de alta en la configuracin.
En el tema de recepcin de datos no nos adentraremos mucho, simplemente haremos una
pequea simulacin para poder utilizar las funciones de la aplicacin.
11
- Software: Los programas SIG proveen las herramientas y funcionalidades
necesarias para almacenar, analizar y mostrar informacin geogrfica, los
componentes principales son:
- Procedimientos: Para que un SIG tenga xito, este debe operar de acuerdo a un
plan bien diseado y estructurado y acorde a las reglas de la empresa, que son los
modelos de las actividades propias de cada organizacin.
- Equipo humano: Hay distintas formas de interactuar con este tipo de programas,
dependiendo del tipo de usuario:
12
Figura 2. Elementos principales de un SIG.
3.4.2. Cartografa:
Antes de adentrarnos ms en los sistemas GIS, explicaremos conceptos geogrficos
bsicos, tales como longitud, latitud, proyecciones, etc. Los cuales nos ayudaran a
comprender mejor su funcionamiento.
3.4.2.1. Definicin:
La cartografa es la ciencia que se encarga del estudio y de la elaboracin de los mapas
geogrficos y territoriales, entre otros. A grandes rasgos, se trata de implementar una
representacin de la Tierra sobre una superficie plana llamada mapa. De manera simple, un
mapa es la representacin del mundo real reducido a puntos, lneas y polgonos mediante el
uso de smbolos grficos.
Debido a que la Tierra tiene una forma esfrica, se debe utilizar un sistema de
proyecciones para poder representar una superficie esfrica en una superficie plana. El
problema es que en realidad no es exactamente esfrica, su forma es ms achatada en los
polos que en la zona ecuatorial.
Adems de representar los contornos, las superficies y los ngulos, se ocupa de representar
la informacin sobre el mapa. Estas representaciones, actualmente se estn realizando con
los sistemas SIG, en los que se puede georeferenciar (dotar de coordenadas geogrficas
(longitud, latitud), ubicar en el espacio).
13
calculan las coordenadas de cualquier punto, constituyen lo que se denomina sistema de
referencia.
El sistema de coordenadas geogrfico est alineado con los ejes de rotacin de la Tierra.
Define dos ngulos desde el centro de la Tierra: latitud y longitud (Ver Figura 3.), que
explicamos a continuacin:
- Latitud: Mide el ngulo entre cualquier punto y el ecuador. Las lneas de latitud se
llaman paralelos y son crculos paralelos al Ecuador en la superficie de la tierra.
- Longitud: Mide el ngulo a lo largo del ecuador desde cualquier punto de la tierra.
Se acepta que Greenwich, en Londres, es la longitud cero. Las lneas de longitud
son crculos mximos que pasan por los polos y se llaman meridianos.
3.4.2.3. Proyecciones:
Las proyecciones estudian las distintas formas de mostrar la superficie terrestre en un
plano. Un mapa, es una representacin en dos dimensiones, de un objeto tridimensional (la
Tierra), por lo tanto, cuando lo creamos, estamos perdiendo una dimensin, por este
motivo el plano obtenido no ser perfecto, habr una pequea distorsin.
Esto supone un problema ya que no hay forma de representar la esfera sobre una superficie
plana, sin que exista un error mnimo. Las proyecciones vienen a solventar este problema,
estudiando las distintas opciones para obtener la forma ms exacta posible en el mapa.
14
Proyeccin de Mercator:
Este tipo de proyeccin consiste en representar la superficie esfrica terrestre sobre una
superficie cilndrica, tangente al ecuador, que al desplegarse genera un mapa terrestre
plano.
Con otras palabras, diramos que se basa en el modelo ideal que trata a la Tierra como un
globo hinchable, el cual se introduce en un cilindro y empieza a inflarse ocupando el
volumen del cilindro e imprimiendo el mapa en su interior. Este cilindro cortado
longitudinalmente y ya desplegado sera el mapa (Ver Figura 4.).
Esta proyeccin presenta una buena aproximacin en su zona central, pero las zonas
superior e inferior correspondientes a norte y sur presentan grandes deformaciones.
Google Maps y Virtual Earth 2d, actualmente usan la proyeccin de Mercator. A pesar de
sus relativas distorsiones de escala, esta proyeccin est muy indicada para mapas
interactivos en que se hacen desplazamientos y acercamientos de regiones pequeas, donde
las formas se distorsionan relativamente poco.
15
Como ya hemos dicho la imagen queda como una rejilla de celdas, por lo tanto la posicin
de cada una viene implcita segn el orden que ocupa en la malla, el espacio no es continuo
sino que se divide en unidades discretas.
Para obtener una descripcin precisa de los objetos geogrficos contenidos en la base de
datos, el tamao del pxel ha de ser reducido (en funcin de la escala), lo que dotar a la
malla de una resolucin alta. Sin embargo, a mayor nmero de filas y columnas, ms
resolucin, pero tambin, mayor esfuerzo en el proceso de captura de la informacin y
mayor costo computacional a la hora de procesarla. Los datos raster se almacenan en
diferentes formatos, desde un archivo estndar basado en la estructura de TIFF, JPEG, etc.
a grandes objetos binarios.
- Punto o nodo: unidad bsica para representar entidades geogrficas que pueden
ser expresadas por un nico punto de referencia, en otras palabras, la simple
ubicacin.
- Lnea: a partir de dos puntos, como mnimo, formaremos las lneas. En este tipo
de elementos se puede medir la distancia.
16
Figura 5. A la izquierda modelo de datos raster, a la derecha modelo de datos vectorial.
En algunos casos se podrn utilizar los dos modelos para cubrir las necesidades completas
de la aplicacin.
Aunque no nos demos cuenta, en nuestro da a da estn presentes en muchos mbitos. Por
ejemplo, las mercaderas que consumimos habitualmente son transportadas a travs de
vehculos monitoreados por sistemas satelitales, con los SIG se puede hacer un
seguimiento de todas las unidades de transporte para obtener datos como la ruta por la que
17
van, clculos de distancia hasta al punto de destino, ubicacin, distancia recorrida otra
muestra de la utilidad de estos programas la encontramos en las compaas elctricas, las
cuales pueden gestionar toda su red de servicios a travs de ellos, en el caso de una avera
podrn ver fcilmente toda el rea afectada, ayudando as a la pronta solucin del
problema.
Muchas disciplinas se han beneficiado de las tecnologas SIG. Esto ha producido una
reduccin de costes y mejoras en componentes de hardware y software de sistemas.
Adems, esta tecnologa ha sido asimilada por multitud de universidades e instituciones. A
continuacin nombramos algunas de ellas:
18
A continuacin se muestran algunos ejemplos de SIG:
- Camino Jacobeo:
- Geoportalbcn:
19
- Ideclocal:
Dentro de las especificaciones definidas por el OGC destacamos dos por su importancia y
grado de implantacin en el mundo de los GIS: Web Map Service (WMS) y Web Feature
Service (WFS).
20
3.5.1. Web Map Service (WMS):
Los WFS pueden ser del tipo no transaccional o transaccional. La diferencia es que el
transaccional slo permite hacer consultas y recuperacin de elementos geogrficos, frente
al transaccional que permite adems la creacin, eliminacin y actualizacin de estos
elementos geogrficos del mapa.
A continuacin, con la Figura 11. y los conceptos Web Map Client y Web Map Server,
acabaremos de aclarar el significado de qu OpenLayers sea una librera del lado cliente.
Esto es llamado Client/Server Model y es, bsicamente, como trabajan la mayora de
aplicaciones web.
21
En el caso de las web map application, algn tipo de cliente (por ejemplo OpenLayers)
comunica con alguna clase de Web map server (por ejemplo un servidor WMS o Google
Maps).
- Web Map Client: Como ya hemos dicho, OpenLayers trabaja en el lado cliente.
Una de las principales tareas que el cliente realiza es conseguir imgenes de mapas
de un servidor. El cliente ir pidiendo al servidor de mapas aquello que quiere ver.
Cada vez que navega o hace zoom en el mapa, el cliente tiene que hacer nuevas
peticiones, ya que est solicitando cosas diferentes.
OpenLayers se encarga de manejar estas tareas a travs de Javascript asncrono
(AJAX5), llamadas a un servidor de mapas. OpenLayers une todas las imgenes que
recibe de forma que obtiene el mapa tal y como el usuario lo visualiza.
- Web Map Server: Este concepto ha sido explicado en el captulo anterior como un
estndar OGC, en este apartado lo veremos de una forma ms prctica. Un servidor
de mapas nos proporciona el propio mapa. Hay muchos servidores de este tipo, un
ejemplo son Google Maps, mapas de Yahoo, mapas OpenStreet, etc. El principio
bsico detrs de todos ellos es que permiten especificar el rea que queremos ver
(mediante el envo de una solicitud), una vez recibida la solicitud, el servidor se
encarga de enviar una respuesta que contiene la imagen. Con OpenLayers se
pueden utilizar diversos servidores incluso combinarlos.
22
informacin espacial a travs de las aplicaciones propias de los creadores o proveedores de
datos geogrficos.
En resumen, nos permite elaborar nuestros mapas haciendo uso de su propia base de
informacin cartogrfica o usar su estructura para hacer uso de otros servicios.
A diferencia de otras APIs, como por ejemplo Google Maps, se trata de un paquete creado
por una comunidad open source. Esto puede resultar til para aquellos que no quieren
mostrar el logo de Google, ya que debido a la licencia de Google Maps no est permitido
ocultarlo.
Actualmente, es importante tener en cuenta el aspecto de las pantallas de los sistemas que
desarrollamos, ya que los consumidores son la parte ms importante en nuestras
aplicaciones. ExtJS nos ayuda a mejorar la interaccin con el usuario, pues nos
proporciona componentes con funcionalidades avanzadas y de sencilla implementacin. Se
trata de que resulten fciles de usar e intuitivas.
Volviendo a qu es ExtJS podemos hablar de sus orgenes, fue construida como una
extensin de la librera Yahoo! User Interface (YUI), gracias a su buena estructura
6
BSD: (Berkeley Software Distribution). Es una licencia de software libre muy cercana al dominio pblico. La licencia
BSD permite el uso del cdigo fuente en software no libre.
23
actualmente puede interactuar como extensin para las bibliotecas jQuery y Prototype.
Desde la versin 1.1 puede ejecutarse tambin como una aplicacin independiente, ya que
adems cuenta con su propia librera la cual se llama Ext-base, es la que se ha utilizado en
este proyecto.
Otro punto a tener en cuenta son las licencias, tiene tres tipos:
24
- Por ltimo, comentar que otro punto fuerte que nos ha convencido para elegir
este framework es la existencia de GeoEXT, se trata de una herramienta
construida a partir de la robusta librera de OpenLayers y los ricos componentes
grficos de ExtJS. La cual tiene componentes destinados a aplicaciones SIG,
permitiendo crear potentes webs de mapas basadas en Javascript.
- Javascript no es tan rpido como quisiramos, sin embargo con los nuevos
navegadores es un factor que puede mejorar.
En resumen, podemos decir que las desventajas de velocidad y tamao son aspectos a tener
en cuenta pero que se contrarrestan con los beneficios que nos aporta. Ya que es muy
flexible y adems nos permite realizar de una manera muy rpida interfaces con un look
and feel muy profesional. Creando aplicaciones vistosas y sobre todo operacionales en el
ambiente web, y con un flujo de datos como si se tratar de una aplicacin de escritorio.
3.6.3.1. PHP:
PHP es un lenguaje de alto nivel embebido en pginas html que se ejecuta en el servidor,
por lo tanto no es necesario ser compilado, al contrario de otros lenguajes que son
ejecutados en el propio navegador.
25
La funcin principal que realizar PHP en el aplicativo web ser la de gestionar la
informacin de la base de datos que tenemos almacenada en el servidor. Otro punto fuerte
de PHP es que se trata de un lenguaje de programacin totalmente gratuito.
Cuando decimos que PHP es un lenguaje del lado del servidor significa que el usuario abre
la pgina html en su navegador y hace una peticin de interactuar. PHP instalado en dicho
servidor web interpreta o procesa el script, es decir, la peticin, y enva dicha respuesta al
usuario en forma de documento html. Esto es una breve explicacin del funcionamiento de
PHP que podemos ver grficamente en la Figura. 14.
3.6.3.2. MySQL:
Se trata de una base de datos que soporta el lenguaje SQL y la conexin de varios usuarios,
en general se utiliza para aplicaciones de tamao pequeo-medio como la que nos ocupa.
Como PHP es gratuito.
26
Est compuesto por comandos, clusulas, operadores y funciones de agregado. Estos
elementos se combinan en las instrucciones para crear, actualizar y manipular las bases de
datos.
Por ltimo, decir que es un lenguaje estndar por haberse visto consolidado por el Instituto
Americano de Normas (ANSI) y por la Organizacin de Estndares Internacional (ISO).
Para el uso y manejo de la base de datos MySQL, vamos a emplear una aplicacin muy
usual y extendida llamada phpMyAdmin.
3.6.3.2.2. phpMyAdmin:
PhpMyAdmin es una herramienta escrita en PHP con la intencin de manejar la
administracin de MySQL a travs de pginas web, utilizando Internet. Actualmente puede
crear y eliminar Bases de Datos, crear, eliminar y alterar tablas, borrar, editar y aadir
campos, ejecutar cualquier sentencia SQL, administrar claves en campos, administrar
privilegios, exportar datos en varios formatos y est disponible en 62 idiomas. Se
encuentra disponible bajo la licencia GPL.
En nuestra aplicacin utilizamos una base de datos, que est formada por tres tablas:
Tabla: t_disp
id TINYINT(3) 3
nomt CHAR(10) 10
icono CHAR(12) 12
maxdisp TINYINT(3) 3
numdisp TINYINT(3) 3
ob_tipo CHAR(30) 30
TOTAL: 61
Tabla 1. Tabla Tipos de Dispositivos, con sus campos correspondientes y el tamao de cada uno de ellos.
Esta tabla almacenar los tipos de dispositivos, es decir, podemos agrupar los
elementos a localizar en diferentes clases o grupos.
27
Tiene seis campos, a continuacin explicaremos cada uno de ellos:
No puede haber dos filas en una tabla que tengan la misma clave primaria .
Llegados a este punto parece ilgico haber elegido como tipo de datos
CHAR, la razn es que con CHAR accedemos ms rpido a la informacin
porque sabemos que todas las filas son de la misma longitud, a diferencia de
lo que pasa con VARCHAR que se tiene que ir mirando el byte que se ha
guardado de ms, para saber el tamao de cada fila.
28
de dispositivo, como mximo 255. Debido al tipo de variable que le hemos
asignado, como mximo sern 255, dependiendo del uso exacto que se le
quiera dar a la aplicacin podemos modificarlo y ponerle otra clase de dato,
que nos permita tener ms dispositivos. Por el momento, creemos que el uso
no ser a gran escala. La segunda numdisp nos informar de la cantidad
de dispositivos que tiene actualmente.
ob_tipo por ltimo tendremos un campo por si queremos hacer algn tipo
de observacin respecto a un grupo de elementos. Tendremos capacidad
para 30 caracteres.
Una vez definidos todos los campos, sabemos que una fila nos ocupar 61 bytes, teniendo
en cuenta que como mximo tendremos 256 tipos de dispositivos, la tabla t_disp tendr un
tamao mximo de: 15.616 bytes = 15,25 KB.
Tabla: disp
telfono INT(9) 9
idtipo TINYINT(3) 3
iconodisp CHAR(12) 12
nombre CHAR(10) 10
observaciones CHAR(30) 30
color CHAR(7) 7
TOTAL: 71
Tabla 2. Tabla de Dispositivos, con sus campos correspondientes y el tamao de cada uno de ellos.
En esta tabla se almacenarn los dispositivos o elementos a localizar. Est compuesta por:
29
idtipo es igual que el id que hemos definido en la tabla anterior, la
nica diferencia es que en este caso no es la clave primaria de la tabla. Hace
referencia al grupo de dispositivos al que pertenece el dispositivo. Se trata
de una clave fornea.
iconodisp se trata del nombre del archivo del icono que representar al
dispositivo remoto en la interfaz, es decir, en el mapa y en el rbol de
dispositivos. Ser una imagen propia del dispositivo e independiente a la del
grupo de dispositivos.
Esta vez, sabemos que una fila nos ocupar 71 bytes, teniendo en cuenta que como
mximo tendremos 255 dispositivos por tipo de dispositivo, y un mximo de 256 tipos, la
tabla disp tendr un tamao mximo de: 4.634.880 bytes = 4,42 MB aproximadamente.
Tabla: historial
telfono INT(9) 9
fecha DATE 3
hora TIME 3
latitud DECIMAL(8,5) 10
longitud DECIMAL(8,5) 10
TOTAL: 35
Tabla 3. Tabla del Historial de cada Dispositivo, con sus campos correspondientes y el tamao de cada uno
de ellos.
8
LineString: Ver captulo 3.7.3.3. Layers o capas.
30
En esta tabla tendremos la informacin recibida de todos los dispositivos, los campos que
la forman son:
La longitud total de cada fila de esta tabla ser de 35 bytes. En este caso es ms difcil
hacer un clculo aproximado de la medida ya que es muy variable, no sabemos
exactamente las posiciones que se van a recibir.
31
Figura 15. Relacin entre las bases de datos.
Por ltimo ver de forma prctica (Vase Figura 15.), el modelo de Base de datos
relacional comentado en el aparatado anterior. Ya que la tabla de dispositivos est
relacionada mediante el campo telfono con la tabla que guarda las posiciones, a la vez
con la tabla que contiene los tipos de dispositivos a travs del campo idtipo que es el
mismo valor que tenemos en la tabla t_disp dentro del campo id.
3.6.4. AJAX:
En este apartado se definirn y explicaran los trminos AJAX, y JSON. Tecnologas que
nos permitirn intercambiar informacin del servidor al cliente y a la inversa, valorando su
eficacia, sus ventajas e inconvenientes.
Como ya hemos dicho, se trata de una tecnologa asncrona, en el sentido de que los datos
adicionales se requieren al servidor y se cargan en segundo plano sin interferir con la
visualizacin ni el comportamiento de la pgina. JavaScript es el lenguaje con el cual se
efectan, normalmente, las funciones de llamada de Ajax.
32
Figura 16. Ajax en aplicaciones web.
- Ventajas:
Mayor velocidad, esto es debido a que no hay que retornar toda la pgina
nuevamente.
- Desventajas:
33
Se pierde el concepto de volver a la pgina anterior.
Ahora viene la pregunta clave, Por qu usar JSON si el estndar habitual es XML?, a
continuacin haremos un breve estudio sobre ambas tecnologas.
Una de las principales ventajas de usar JSON es que los datos ocupan mucho menos que
XML, ya que XML, aade bastante sobrecarga a los datos que queremos serializar.
<persona>
<nombre>Rodrigo</nombre>
<apellido>Corral</apellido>
<genero>varn</genero>
<edad>29</edad>
</persona>
{
"nombre" : "Rodrigo",
"apellido" : "Corral",
"genero" : "varn",
"edad" : 29
}
34
El problema principal en AJAX es mover datos entre el servidor y el cliente, este problema
se suele resolver usando XML. La mayora de las aplicaciones AJAX, en el cliente la
programacin la realizan casi siempre con JavaScript, como es el caso de nuestro proyecto.
Existen diversas posibilidades para leer XML desde JavaScript, pero todas ellas son
farragosas en mayor o menor medida y son bastante lentas y pesadas. JSON en esencia es
JavaScript perfectamente correcto, esto nos permite que simplemente podamos tener un
objeto JavaScript totalmente vlido. De modo que podamos acceder a los datos de una
manera orientada a objetos.
Cada vez hay ms soporte de JSON mediante el uso de paquetes escritos por terceras
partes. La lista de lenguajes soportados incluye C, C++, C#, Delphi, Java, JavaScript, Perl,
PHP, etc. En nuestro proyecto utilizamos PHP, en el prximo captulo, 3.7. Desarrollo, lo
veremos de forma prctica.
3.7. Desarrollo:
- Librera JavaScript de ExtJS: Para utilizar esta librera debemos descargarla, est
formada por:
35
3.- <script type="text/javascript" src="ExtJS/ext-
base.js"></script>
4.- <script type="text/javascript" src="ExtJS/ext-lang-
es.js"></script>
<script src="http://www.openlayers.org/dev/OpenLayers.js">
</script>
Cdigo 5. Llamada a la librera OpenLayers
- Librera GeoExt: Igual que hemos hecho con las libreras anteriores debemos hacer
con la de GeoExt para utilizar sus funciones. Por lo tanto nos descargaremos el
36
archivo correspondiente y lo llamaremos en el encabezado head de nuestro archivo
html.
<script type="text/javascript"
src="ExtJS/GeoExt.js"></script>
Cdigo 7. Llamada a la librera JavaScript de GeoExt.
Hemos creado dos archivos para conseguir una mejor organizacin del cdigo, a
continuacin explicaremos en profundidad cada uno de ellos. A rasgos generales,
podemos decir que mapa.js contiene la creacin del mapa y elementos que
visualizaremos en l, y ext.js contiene principalmente la interfaz de la aplicacin.
Por otra parte para la gestin de los datos tenemos el archivo conectarse.php,
Datos.php, TreeData.php.
A continuacin debemos proveer a Ext con una imagen para generar espacios (Ver Cdigo.
9), es importante, ya que algunas veces los componentes no se visualizarn correctamente
si no tenemos conexin a Internet, esto ocurre porque esta imagen gif est alojada fuera de
nuestro servidor.
Ext.BLANK_IMAGE_URL = 'resources/images/default/s.gif';
37
3.7.2.1. Diseo de los Paneles:
Vemos que nuestra aplicacin (Figura 17.) est dividida en tres partes o paneles bien
diferenciados, todos ellos estn dentro de uno especial que los engloba a todos, llamado
Viewport. La diferencia con otro tipo de paneles es que contiene todo el layout9 y adems
se adapta al rea visible de nuestro navegador, lo que queremos decir con esto es que si
cambiamos el tamao de la pantalla, se adaptan todos los paneles a la nueva medida.
Dentro de esta ventana tenemos un layout llamado border el cual contiene regin norte
(en la Figura 17. Nmero 1), centro (en la Figura 17. Nmero 2) y este (en la Figura 17.
Nmero 3).
9
Layout: En una ventana, la clase que decide cmo se reparten los botones (y dems controles) dentro de ella.
38
- Regin Centro (2) Mapa y paneles de dispositivos: En este caso tenemos un
tipo de panel diferente, xtype: tabpanel. En un mismo espacio podemos
tener tres secciones distintas, iremos de una a otra mediante las pestaas que
hay en la parte superior.
10
Ver apartado 3.6.2.2. Ventajas e Inconvenientes de ExtJS
39
array (root) que contiene toda la informacin, y los
diferentes campos (fields) que debe leer.
40
Figura 20. Panel de dispositivos clasificados por Tipos de Dispositivos. En los
recuadros rojos los nombres de los tipos de dispositivos.
- Regin Este (3) rbol de dispositivos: Por ltimo, la regin este est formada
por un panel que contiene un layout tipo accordion (Ver Figura. 21.).
Figura 21. Panel con Layout accordion. Cuando se haga clic en el signo + se desplegar el panel correspondiente.
Con este tipo de layout en el mismo espacio tendremos dos paneles, en concreto,
dos treepanel. Se trata del listado de los dispositivos con un checkbox para
seleccionar que dispositivo o dispositivos queremos visualizar en el mapa. Como
podemos ver en la Figura 21. Uno ser para ver la posicin de un elemento, es
decir, nos activar un Marker11 o varios, y el otro nos permitir ver la ruta que
ha hecho el dispositivo, nos mostrar las LineString12 correspondientes.
11
Ver apartado 3.7.3.3.1. Markers
12
Ver apartado 3.7.3.3.2. Historial
41
El cdigo que necesitamos para crear un rbol lo podemos dividir en tres partes
diferenciadas:
o Root Node: Cada rbol requiere un root node o nodo principal, del cual
descendern el resto de elementos. Para crearlo utilizamos:
Ext.tree.AsyncTreeNode. La razn por la que usamos AsyncTreeNode
en lugar del TreeNode bsico, que tambin existe, es porque estamos
esperando a ir cargando los nodos y esperando a que se carguen los
hijos des del servidor, rama por rama y no todos a la vez. A este
objeto le pasamos parmetros como el nombre, el icono, el checkbox,
etc.
Una vez creado el treepanel le aadimos una barra en la parte inferior la cual
tiene dos botones, uno que permite expandir todo el rbol y otro que hace la
funcin contraria.
42
Figura 23. Ventana aadir dispositivo.
A continuacin, explicaremos los principales tipos de campos que hemos utilizado en los
formularios, nuestros campos se crearan usando xtype, como ya hemos visto
anteriormente xtype es una referencia a un determinado componente Ext.
43
o Combo: (Ver Figura 24.) Se trata de un campo que despliega un men
permitindonos elegir una de las opciones. En nuestro caso nos aparece en el
formulario que aade dispositivos, para elegir a qu clase de dispositivos
pertenece.
Est formado por varios parmetros pero destacamos varios: mode: remote, que
indica que las opciones del men son cargadas de la base de datos, para ello le
indicamos store: storeT, explicado en el apartado anterior, es el mismo utilizado
para cargar la tabla de tipos de dispositivos.
Tambin le indicamos el estilo, para poder ver varios datos en cada opcin,
aunque el valor real del campo es el que se indica en el atributo valueField.
- FieldLabel: que nos indicar el string que aparecer en pantalla para indicarle al
usuario que datos debe introducir.
- Name: Es un parmetro muy importante, ya que se trata del nombre con el cual se
envan los datos, que contiene el campo, al servidor.
- readOnly: esta opcin nos resultar til en el caso modificar dispositivo o tipo
de dispositivo ya que el ID del elemento no se podr cambiar, por lo tanto con
este parmetro indicamos que slo se puede leer.
44
correspondientes, gracias a la clase Ext.QuickTips.init();, se trata de una clase
singleton13.
Dentro de la ventana tenemos tres botones que nos permiten enviar la informacin al
servidor (botn guardar), borrar todos los datos que hayamos introducido en el formulario
(botn Restablecer) y por ltimo, el botn Cancelar que hace que se cierre la ventana sin
guardar nada.
La siguiente opcin que tenemos en la Figura 22. es modificar dispositivo, funciona igual
que la explicada para aadir uno, la nica diferencia es que, antes de hacer clic debemos
indicar el elemento a modificar. De esta forma nos aparecer la misma ventana, pero con la
informacin correspondiente a la seleccin que hemos hecho previamente, cargada en los
campos. Una vez lo modificamos (teniendo en cuenta que el id no se puede cambiar)
tenemos las opciones Actualizar (enviamos la informacin al servidor para actualizar la
base de datos) o cancelar.
Por ltimo, tenemos la opcin eliminar, comentar que cuando indiquemos que queremos
eliminar un dispositivo, se preguntar al usuario si est seguro de realizar esa accin, para
comprobar que no ha sido por error. Debemos tener en cuenta que cuando se elimine un
tipo de dispositivo borrar todos sus componentes, es decir, todos los dispositivos que lo
forman y a su vez toda la informacin recibida de cada uno de ellos. Lo mismo pasa a la
hora de eliminar un dispositivo, tambin elimina las posiciones recibidas de este.
Adems del mapa y todos sus ajustes, tambin crearemos las tablas que contengan todos
los Markers y LineString, dependiendo de la informacin que tengamos en la base de datos
en ese momento, as como las funciones que se encargan de visualizarlos, ocultarlos,
eliminarlos, etc.
13
Clase singleton: Su intencin consiste en garantizar que una clase slo tenga una instancia y proporcionar un punto de
acceso global a ella.
45
3.7.3.1. Mapa:
Uno de los elementos principales de la aplicacin es el mapa. En este archivo hemos
creado una variable global llamada map:
En JavaScript, en cualquier momento podemos crear una variable poniendo delante de sta
la palabra var, esto significa que la hemos definido a nivel global, de esta forma podremos
acceder a ella desde cualquier lugar de nuestro cdigo.
Hemos creado el objeto map a partir de la clase OpenLayers.Map. Dicho de otra forma
se trata de una instancia de la clase Map de OpenLayers.
El objeto map es uno de los puntos esenciales de nuestra aplicacin, llamaremos a sus
funciones para hacer zoom, aadir capas, etc como veremos a continuacin.
El resto de cdigo que nos queda referente al mapa, lo podemos dividir en dos partes
bsicas:
var options = {
controls:
[new OpenLayers.Control.KeyboardDefaults(),
new OpenLayers.Control.NavToolbar({position:new
OpenLayers.Pixel(50,5)}),
new OpenLayers.Control.PanZoomBar(),
new OpenLayers.Control.MouseDefaults(),
new OpenLayers.Control.LayerSwitcher(),
new OpenLayers.Control.MousePosition({prefix:'Longitud
| Latitud: ', separator: ' | '})],
projection: new OpenLayers.Projection("EPSG:900913"),
displayProjection: new OpenLayers.Projection("EPSG:4326"),
units: "m",
maxResolution: 156543.0339,
maxExtent: new OpenLayers.Bounds(-20037508.34, -20037508.34,
20037508.34, 20037508.34)
};
Cdigo 11. Variable options.
46
La clase Control es la que nos permite interactuar con nuestro mapa. Tambin nos
permite visualizar informacin adicional, como pueden ser valores de escala, longitud,
latitud, etc. Se pueden aadir tantos controles como se quieran.
En las siguientes lneas explicaremos la funcionalidad de los que hemos credo conveniente
poner en nuestra aplicacin:
o PanZoomBar(): Esta funcin nos muestra los elementos que podemos ver en la
Figura. 26., en la parte superior tenemos las flechas que nos permiten
desplazarnos por el mapa. La barra vertical inferior es el zoom, aumentaremos o
reduciremos deslizando el selector de color azul que podemos ver en la imagen.
47
Figura 26. Control PanZoomBar().
48
Figura 28. Resultado Control MousePosition().
Una vez definidos todos los controles tenemos una serie de propiedades que definiremos a
continuacin, estas son debidas a la utilizacin de mapas con proyeccin Spherical
Mercator (por ejemplo Google Maps).
o Projection: Aqu establecemos la proyeccin del mapa que es ESPG14:900913,
es decir, la correspondiente a Spherical Mercator. Si queremos trabajar con
Longitud, Latitud, u otro tipo de proyeccin en otra capa tendremos que
transformar las coordenadas.
o DisplayProjection: Esta es una propiedad que es utilizada por los controles que
muestran informacin de las coordenadas, como puede ser MousePosition,
explicado anteriormente. Este control utiliza otro tipo de proyeccin distinta a la
de los mapas que nosotros hemos incluido (Google Maps y OpenStreetMap) los
cuales usan Spherical Mercator. Por lo tanto, con las propiedades projection y
displayProjection se transforma la proyeccin del mapa a la proyeccin del
display.
o Units: Esta propiedad indica que el mapa est en metros. Si no se indica nada,
por defecto est en grados. La proyeccin Spherical Mercator utiliza metros.
o MaxResolution: Esta propiedad especifica cul es la resolucin mxima del
mapa, en otras palabras, hasta qu punto se puede hacer zoom out es decir,
hasta qu punto se puede alejar la imagen.
En nuestro caso le hemos puesto el valor auto, de esta forma nos aseguramos
que se alejar el zoom al mximo posible.
o MaxExtent: Con esta propiedad le decimos a OpenLayers los lmites mximos
del mapa. Los cuatro nmeros representan el mnimo de x, el mnimo de y, el
mximo de x y el mximo de y.
49
3.7.3.3. Layers o Capas:
OpenLayers nos permite tener mltiples servidores diferentes que nos proporcionen
mapas. Para acceder a un web map server simplemente tenemos que crear el objeto layer y
aadirlo a nuestro mapa con OpenLayers.
Antes de explicar las capas que hemos utilizado, debemos definir exactamente que es una
capa y los diferentes tipos que hay.
Como si de una cebolla se tratara tendremos las diferentes capas una encima de otra, por lo
tanto deberemos tener en cuenta el orden en el cual las aadimos. Cada una puede tener sus
propiedades como por ejemplo la transparencia, la proyeccin, etc.
En nuestro aplicativo tenemos tres capas base, pudiendo elegir cual visualizamos en
cualquier momento mediante el control LayerSwitcher() explicado en el captulo anterior.
Adems de las capas bases tenemos dos vector layer, las cules nos permiten aadir varios
objetos geomtricos en nuestros mapas. Por lo tanto tendremos:
- Capas Base:
o Capa Google
o Capa Google Hybrid: Las capas Google y Google Hybrid se crean con la
misma clase Layers.Google, la diferencia la encontramos en los argumentos
que le pasamos a cada una de ellas.
A las dos les pasamos como primer parmetro el nombre que se visualizar en
el LayerSwitcher, pero en el caso de la capa Google Hybrid le aadimos el
argumento tipo, para que nos muestre el mapa hbrido:
50
type: google.maps.MapTypeId.HYBRID
Cdigo 12. Parmetro que le pasamos a OpenLayers.Layer.Google() para indicarle el tipo de capa que queremos.
new OpenLayers.Layer.OSM("OpenStreetMap");
- Vector Layers15:
3.7.3.3.1. Markers
51
Figura 30. Ejemplo de Marker situado en la posicin: Longitud: 2.35098, Latitud: 48.85667.
Con la clase LonLat nos referimos al punto deseado. Como se puede ver en el
Cdigo 14. Transformamos los datos de LonLat a la proyeccin de nuestro
mapa, con la funcin transform.
Para que el icono se site en la posicin correcta, debemos definir el tamao de
este, mediante el mtodo size, (Vase Cdigo 14.), adems tambin debemos
calcular el offset. De esta forma el icono se situar en la posicin indicada sin
desplazamientos errneos. Por lo tanto nuestra aplicacin tendr fiabilidad
respecto a los datos recibidos, otro tema es que el dispositivo que nos enve la
informacin no sea totalmente exacto, pero eso no lo podemos controlar desde
la aplicacin. Una vez tenemos los valores size, offset y la imagen para el
icono, crearemos el objeto icono.
Finalmente, crearemos el Marker pasndole dos argumentos, el punto donde
queremos situarlo (posicin lonlat que hemos transformado a la proyeccin de
nuestro mapa) y el icono (icono que hemos creado a partir de la imagen, la
medida y el offset).
3.7.3.3.2. Historial
52
Figura 31. LineString formada por tres puntos.
Por lo tanto lo primero que tenemos que hacer es una lista de puntos por cada
dispositivo, es decir, almacenar todas las posiciones recibidas en un array.
Cada posicin de esta tabla ser un objeto Geometry.Point (x, y), dnde x e y
sern longitud y latitud, respectivamente.
Como hemos podido ver Point es una subclase de Geometry, como veremos
ms adelante, LineString tambin.
La clase Geometry guarda informacin sobre un objeto geomtrico o
Feature, un feature es un objeto que pertenece a una capa vectorial.
Una vez tenemos la lista de puntos ya podemos crear el objeto LineString (new
OpenLayers.Geometry.LineString (pointList)) pasndole el array de puntos
como argumento.
Una vez tenemos creado el objeto geomtrico, ya podemos crear el feature
object para poder aadirlo a la capa vectorial, esto lo haremos a travs de la
clase Feature que es la que utiliza la clase Vector para mostrar los objetos en el
mapa. Lo crearemos de la siguiente forma: new OpenLayers.Feature.Vector
pasndole tres argumentos, el objeto LineString (puede ser otro tipo de
elemento geomtrico), y dos parmetros opcionales: atributos, en nuestro caso,
los hemos puesto como NULL y estilo para indicar el color, grueso, etc de la
lnea.
La funcin que incluye, la cual conecta con la base de datos, est formada por la
inicializacin de cuatro parmetros:
o Usuario: nombre del usuario con permisos para acceder. Mysql crea por defecto
al usuario root con todos los permisos posibles habilitados, podemos utilizar
este usuario como administrador o crear otro, en nuestro caso utilizaremos el
root, pero antes debemos asignarle una contrasea ya que lo crea sin ella.
53
o Password: contrasea del usuario.
La estructura principal del archivo Datos.php es un switch que se encarga de realizar una
funcin u otra dependiendo del parmetro recibido mediante POST. Con el mtodo POST
se realiza una transaccin mediante el protocolo HTTP. Se utiliza para aplicaciones que
modifican la base de datos de destino.
Se trata del punto intermedio entre la interfaz grfica y la base de datos, hemos utilizado el
lenguaje SQL, lenguaje PHP y el formato de intercambio de datos JSON.
A travs de las diferentes opciones del switch se realizan cuatro acciones bsicas:
54
elemento a modificar, del cual sabremos el id o telfono que nos habrn enviado
mediante POST.
En todos los casos que se hace una consulta SELECT es porque queremos
visualizar esa informacin en nuestra aplicacin. Por lo tanto para pasarla del
servidor al navegador se enva en formato JSON, con la funcin
json_encode(informacin que se quiera enviar).
- Se trata de los casos que nos permiten grabar datos en las tablas. Para grabar se
utiliza INSERT indicndole en que tabla se debe guardar y pasndole los
valores que queremos almacenar, sern los valores que haya introducido el
usuario en los formularios.
55
dispositivos, y retornar un array con las propiedades (checkbox, icono, nombre, id y leaf,
leaf indica que este nodo no podr tener subnodos) de los childnodes correspondientes al
parentnode.
El array obtenido se pasar a formato JSON mediante json_encode(). Para hacernos una
idea del resultado podemos ver el Cdigo 15. que muestra un ejemplo de lo que retorna la
funcin, y en la Figura 32. El resultado visual que conseguiramos en la aplicacin.
[{"checked":false,
"singleClickExpand":true,
"text":"Coches",
"id":"1",
"icon":"imag\/coche.gif",
"children":
[{"icon":"imag\/uno_coch.png",
"text":"Ferrari",
"id":"619202020",
"leaf":true
},{
"icon":"imag\/tres_coc.png",
"text":"Mercedes",
"id":"650808080",
"leaf":true
},{
"icon":"imag\/dos_coch.png",
"text":"Scenic",
"id":"615323435",
"leaf":true }]
}]
56
Figura 32. rbol que obtenemos a partir del Cdigo 3.
La idea es que el dispositivo envi al servidor un SMS con un formato predeterminado, tal
y como podemos ver en el Cdigo 16., se trata de una url que contiene toda la informacin,
permitiendo que se guarden las variables deseadas automticamente en la base de datos.
http://localhost/sms.php?telefono=619202020&fecha=2009-08-
22&hora=13:30&latitud=-1.98765&longitud=40.65478
57
(Ver Figura 33.)Vemos que simplemente pasando el ratn por encima del botn, se marca,
y adems nos aparece un mensaje informativo o tooltip. Le damos al botn y nos aparece
la ventana para rellenar el formulario (Ver Figura 34.).
Una vez le damos al botn guardar nos aparece un mensaje confirmando que se ha grabado
correctamente. (Ver Figura 35.) Adems vemos que aparece el nuevo tipo en el GridPanel
y en el rbol de dispositivos.
58
Confirmamos que se ha grabado en la base de datos (Ver Figura 36.):
Figura 38. El campo Nombre est configurado para 10 caracteres como mximo.
59
Figura 39. Como hemos introducido un ID repetido cuando le damos al botn guardar nos aparece un
mensaje de advertencia de que los datos no son correctos.
Figura 40. Se debe seleccionar un elemento de la tabla para indicar que queremos modificar.
60
Figura 41. Formulario que nos permite modificar un Tipo de dispositivo.
Figura 42. En la parte superior vemos los cambios que se han hecho en la aplicacin. En la parte inferior la
base de datos.
Rellenamos el formulario que nos aparece al hacer clic en Crear Nuevo Dispositivo (Ver
Figura 43.) y le damos al botn Guardar. Vemos que en el men desplegable donde
debemos indicar el Tipo de Dispositivo nos sale el que hemos creado previamente.
61
Figura 43. Formulario para crear Dispositivo.
Igual que en el caso de Crear Nuevo Tipo de Dispositivo, los campos tambin muestran
mensajes de advertencia si son incorrectos o si el Telfono introducido ya existe. De la
misma forma, cuando se graba correctamente, el sistema tambin nos avisa.
Figura 44. Vemos que el Dispositivo se ha grabado correctamente. Arriba aparece en la tabla de
dispositivos y en el rbol de la aplicacin, abajo se ve que ha quedado registrado en la base de datos.
62
Figura 45. El campo Num. Disp. Actuales se ha actualizado.
Figura 46. El campo nmero de dispositivos actuales tambin se ha actualizado en la base de datos.
Para ver que verdaderamente tienen utilidad las variables que indican el mximo nmero
de elementos que puede tener un Tipo de dispositivo y la que indica cuantos tenemos
actualmente, vamos a crear 2 dispositivos ms dentro de la categora Camiones. A
continuacin intentaremos crear un cuarto dispositivo. El resultado es el que podemos ver
en la Figura 47. no nos permite guardarlo ya que superamos el lmite.
Figura 47. Cuando intentamos guardar el cuarto dispositivo de la clase Camiones, no nos deja ya que
hemos superado el nmero mximo de dispositivos para esta clase.
63
Figura 48. Vemos que en el GridPanel los dispositivos se clasifican segn el Tipo, y que en el rbol se
visualizan correctamente.
64
Tenemos dos opciones: introducir la informacin mediante el formulario o introducirla
mediante la url con el formato mostrado en el Cdigo 17.
http://localhost/sms.php?telefono=600606060&fecha=2011-05-
15&hora=13:30&latitud=41.11866&longitud=1.24533
Figura 50. Vemos que la informacin introducida en la URL (parte superior de la imagen) es la que se ha
guardado en la tabla de la base de datos (parte inferior de la imagen).
65
3.8.6. Visualizar la ltima Posicin de un Dispositivo:
Marcaremos en el TreePanel Posicin aquellos dispositivos de los cuales queramos ver
su ltima posicin. Si el dispositivo no tiene informacin el checkbox no se activar. (Ver
Figura 52.)
Figura 52. Vemos como los dispositivos que estn marcados en el treepanel, se puede ver donde estn
situados en el mapa.
Figura 53. En esta imagen podemos ver el recorrido que ha hecho el dispositivo M1, el cual est
seleccionado en el rbol.
66
Cada vrtice de la lnea roja que vemos en la Figura 53. Es un punto desde donde se nos
ha enviado informacin.
Siempre que se seleccione la opcin eliminar se nos pedir que confirmemos que estamos
seguros que queremos hacer est accin (Ver Figura 54.).
Figura 54. Mensaje para confirmar que queremos eliminar el elemento seleccionado.
Una vez eliminado nos saldr un mensaje informando que se ha borrado. (Ver Figura 55.)
Figura 55. Mensaje que nos informa de que se ha borrado el tipo de dispositivo.
Si nos fijamos, se han actualizado la tabla de dispositivos y los TreePanels porque ya no aparece el
grupo Motos ni ninguno de sus elementos. Miramos la Base de datos y vemos que se ha borrado
toda la informacin referente a este tipo de dispositivo.
Igual que en el apartado anterior tambin nos pide confirmar la accin. Una vez borrado
tambin nos informar de que se ha borrado correctamente.
67
3.9. Recursos utilizados:
Para montar el servidor web hemos utilizado Xampp se trata de un paquete que incluye
Apache, PHP y MySql. El cual nos ofrece un pack de instalacin automtica que nos
permite alojar y servir nuestras pginas web desde nuestra mquina. Adems tambin
guardar las bases de datos necesarias. En concreto hemos utilizado la versin 1.7.3.
Por ltimo, hemos utilizado el editor de texto Crimson Editor para la codificacin de los
ficheros de la aplicacin.
Los usuarios que quieran hacer uso de la aplicacin deben tener como mnimo un
ordenador personal que disponga de navegador Web y conexin a Internet. Aunque la
aplicacin se ha probado en varios navegadores y su funcionamiento parece ser correcto, se
asegura que todas las funciones explicadas en este proyecto funcionan en Firefox 4, ya que
ha sido el ms utilizado durante la creacin de la aplicacin.
68
4. APORTACIONES DEL PROYECTO A LOS CONOCIMIENTOS DEL
ALUMNO:
Se trata de un tema que est en plena fase de explotacin, son utilizados tanto en la
administracin pblica, en reas como la gestin de recursos naturales, de patrimonio,
urbanismo, medio ambiente, trfico urbano, control de carreteras y sealizaciones, etc.
Adems de que existe una importante normativa europea que obliga a los estados
miembros a poner esta informacin accesible al ciudadano. Como en la empresa privada,
en temas como la planificacin de campaas de marketing, el seguimiento de la fuerza de
ventas, logstica, etc.
Actualmente, he alcanzado conocimientos para poder crear una aplicacin web con una
buena interfaz de usuario mediante JavaScript (en este caso ExtJS y GeoExt),
relacionndola con informacin almacenada en una base de datos (MySQL), con la
posibilidad de gestionar su informacin, ya sea guardando, borrando o actualizndola,
mediante AJAX y PHP. Conocimientos bsicos que se pueden poner en prctica en
cualquier tipo de aplicacin, en general aplicaciones RIA, y no nicamente a sistemas SIG.
69
5. APORTACIONES DE LOS ESTUDIOS REALIZADOS AL PROYECTO:
Todos estos conocimientos adquiridos en estas asignaturas fueron la base para empezar a
programar, Java y JavaScript son lenguajes distintos pero comparten sintaxis y algunas
estructuras. Por ejemplo, en el caso de OpenLayers, un aspecto en comn a Java es la
programacin orientada a objetos.
Por otra parte en la asignatura Xarxes i Serveis se llev a cabo la realizacin de una
aplicacin web en lenguaje PHP y HTML, la cual estaba formada por una base de datos
MySQL que se cre con la herramienta phpMyAdmin, y se almacenaba en el servidor
apache, tambin hicimos uso del paquete Xampp. Para acceder al servidor y a la
informacin, como ya hemos dicho, se hizo mediante PHP y lenguaje SQL. Por lo tanto,
antes de realizar este proyecto tena algunos conocimientos sobre estas tecnologas, y sobre
conceptos como lenguajes del lado cliente, lenguajes del lado del servidor, etc. Que
ayudan a comprender el funcionamiento general de este tipo de aplicaciones.
Por ltimo comentar que el apartado incluido en este proyecto sobre la representacin de la
informacin16, que habla sobre el modelo raster y el modelo vectorial est relacionado con
parte del temario visto en la optativa de Transmissi Multimdia en la cual se habla
sobre la representacin de imgenes.
16
Ver captulo 3.4.3. Representacin de la informacin
70
6. CONCLUSIONES Y LNEAS FUTURAS:
Conclusiones:
Llegados a este punto podemos decir que se han cumplido los objetivos del proyecto. La
idea bsica de este era la de realizar una aplicacin que permitiera situar dispositivos
remotos en un mapa.
A medida que hemos ido avanzando se han ido implementando las funciones deseadas, la
aplicacin permite registrar tipos de dispositivos y dispositivos, tambin incluye la opcin
de modificarlos o eliminarlos guardndose toda la informacin en la base de datos.
Se crean los objetos necesarios para representar los elementos en el mapa, los cuales se
sitan en la posicin correcta, dependiendo de la informacin recibida. El aplicativo
permite situar la ltima posicin del elemento o ver sus ltimos movimientos gracias al
objeto LineString.
- Si adems la aplicacin es utilizada por varios usuarios crear sesiones, para que
cada uno de los clientes tenga la opcin de eliminar, crear o modificar los
dispositivos sin afectar al resto de usuarios, esto supondra una modificacin i/o
ampliacin importante en la base de datos.
Estudiar ms a fondo y poner en prctica el sistema para recibir la informacin desde los
dispositivos remotos. Implementar un servicio de actualizacin de posiciones. Aunque
Aiddea Linux propuso que se recibieran las posiciones va SMS, considero que se podran
buscar alternativas ms viables como por ejemplo va internet.
Como dijimos en el apartado 2 del proyecto, Aiddea Linux quiere que la aplicacin se
pueda adaptar a distintas situaciones, por lo tanto, se podrn aadir ms funcionalidades
71
segn la finalidad. Tambin depende de cmo se comercialice la aplicacin.
Consideraremos dos opciones:
72
REFERENCIAS:
SIG:
[1] http://www.mapaeducativo.edu.ar/encontrar/?a=qsig [Definicin SIG] Abril 2011
[6]http://www.iea.es/_docum/SIG2.PDF?IEA=e1cdcf4caac2168d092b113e58c38c3b&IEA=bb087d0367fd4c516595ce17
d07b888e [Ejemplos SIG, normalizacin de la informacin] Abril 2011
[11] http://www.idee.es/resources/presentaciones/JIDEE06/ARTICULOS_JIDEE2006/articulo19.pdf
CARTOGRAFIA:
[12] http://enciclopedia.us.es/index.php/Sistema_de_coordenadas [Sistema de coordenadas] Abril 2011
OGC:
[16] http://www.opengeospatial.org/ogc [Pgina oficial OGC] Abril 2011
OPENLAYERS:
[20] Erik Hazzard, OpenLayers 2.10 Beginers Guide, Ed. Packt Publishing, 2011.
73
[22] http://dev.openlayers.org/releases/OpenLayers-2.10/doc/apidocs/files/OpenLayers-js.html [API OpenLayers] Abril
2011
EXT JS:
[28] Jos Lpez Quijado, Domine JavaScript, Ed. Ra-Ma, 2004.
[29] Frank W. Zammetti, Practical Ext JS Projects with Gears, Ed. Apress, 2009.
[30] Jesus D. Garcia, Jr. , Ext JS in Action, Ed. Meap Edition, 2009.
[31] Shea Frederick, Colin Ramsay, Steve Cutter Blades, Learning Ext JS, Ed. Packt Publishing, 2008.
74
[50] http://es.wikipedia.org/wiki/XML [Definicin XML] Mayo 2011
75