Vous êtes sur la page 1sur 96

Aplicaci´on de geo-localizaci´on Forns IGP iOS / Android

Ra´ul S´anchez Delgado

11 de junio de 2012

´

Indice

1. Introducci´on

6

1.1. Objetivos

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

7

1.2. Motivaciones personales

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

8

2. Estado del Arte

 

9

2.1. Geolocalizaci´on

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

9

2.1.1. M´etodos de georreferenciaci´on en dispositivos m´oviles

.

.

.

.

.

.

.

.

10

2.1.2. T´ecnicas de geolocalizaci´on en redes de telefon´ıa m´ovil .

.

.

.

.

.

.

.

14

2.1.3. Herramientas de geolocalizaci´on .

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

19

2.1.4. Aplicaciones con geolocalizaci´on

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

21

2.2. Representaci´on de mapas

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

24

2.2.1. Proyecci´on de mapas .

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

25

2.2.2. Sistema de Informaci´on Geogr´afica (SIG)

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

28

2.2.3. APIs de mapas

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

31

2.3. iOS Vs Android

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

32

2.3.1. Lenguajes

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

34

2.3.2. Herramientas de desarrollo

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

35

2.3.3. Plataformas de distribuci´on

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

37

3. Dise˜no de la aplicaci´on

 

38

3.1. Requisitos funcionales

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

38

3.2. Requisitos no funcionales

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

39

3.3. Diagrama de estados

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

40

3.3.1. Inicio de la aplicaci´on

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

40

3.3.2. Esquema general de la aplicaci´on

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

42

3.3.3. Mostrar y telefonear a un horno de la lista .

.

.

.

.

.

.

.

.

.

.

.

.

.

.

44

3.4. Diagramas de secuencia

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

46

 

2

3.4.1. Inicio de la aplicaci´on

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

48

3.4.2. Mostrar Horno Seleccionado .

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

50

3.4.3. Telefonear al Horno

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

51

3.4.4. Mostrar Hornos Distancia

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

53

3.4.5. Mostrar Ruta

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

54

4. Implementaci´on

56

4.1. Implementaci´on en iOS

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

56

4.1.1. Librer´ıas del sistema

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

57

4.1.2. Interfaz

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

60

4.1.3. Capa de gesti´on

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

62

4.1.4. Capa de datos

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

68

4.2. Implementaci´on en Android

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

69

4.2.1. Librer´ıas del sistema

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

70

4.2.2. Interfaz

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

71

4.2.3. Capa de gesti´on

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

72

4.2.4. Capa de localizaci´on

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

78

4.2.5. Capa de datos

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

80

4.3. Diferencias entre iOS y Android .

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

81

4.3.1. Lenguaje de programaci´on .

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

82

4.3.2. Desarrollo de la interfaz

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

82

4.3.3. Localizaci´on

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

83

4.3.4. Uso de Mapas .

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

84

4.3.5. Valoraciones

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

85

4.4. Aspecto final de las pantallas

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

85

5. Planificaci´on y Costes

 

89

6. Conclusiones y trabajo futuro

 

92

 

3

6.1. Conclusiones

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

92

6.2. Valoraciones personales

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

92

6.3. Trabajo futuro

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

93

7. Referencias

95

7.1. Geolocalizaci´on

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

95

7.2. Representaci´on de Mapas

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

96

7.3. iOS vs Android

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

96

7.4. Implementaci´on

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

96

 

4

Agradecimientos

Llegados a este punto son muchas las personas que seguro merecen mi agradecimiento durante todos estos a˜nos de carrera, pero en esta ocasi´on procurar´e centrarme en los que han ayudado a ponerles fin con este proyecto.

En primer lugar, como no, a mi tutor de proyecto. Gracias Jordi por pensar que ser´ıa capaz de llevarlo a cabo y por todo el asesoramiento y recursos que me has facilitado.

Gracias tambi´en a David Gas´o, Ciro Alonso y Rosa Garc´ıa, mis responsables directos en la empresa para la que trabajo. Gracias por toda la confianza que me hab´eis mostrado desde que empec´e a trabajar con vosotros, gracias por vuestra comprensi´on con respecto al rumbo que decid´ı tomar y por facilit´armelo todo en forma de excedencia.

Y por ultimo´ gracias a toda mi familia por apoyarme y aguantarme habitualmente y sobre todo estos ultimos´ meses, pues posiblemente me habr´e mostrado m´as agitado de lo habitual.

5

Cap´ıtulo 1

1.

Introducci´on

Los avances tecnol´ogicos que los tel´efonos m´oviles han experimentado en el ultimo´ lustro han permitido que el usuario tenga al alcance de la mano todo lo que puede necesitar en su d´ıa a d´ıa. La limitada potencia de c´alculo o el reducido tama˜no de la memoria que estos dis- positivos ten´ıan anta˜no ha dejado de ser un problema para los desarrolladores que adem´as han visto como la interfaz t´actil, el acceso a internet o la geolocalizaci´on les abr´ıan un nuevo abanico de posibilidades a la hora de desarrollar aplicaciones m´as utiles´ y accesibles para todo el mundo.

Quiz´as algunas de las aplicaciones que m´as hayan proliferado sean aquellas que permi- ten al usuario ubicarse en tiempo real en un mapa y encontrar lugares de inter´es, ya sean tur´ısticos, de ocio o cualquier tipo de establecimiento. Y no es de extra˜nar que sea as´ı, ya que este tipo de aplicaciones no s´olo son utiles´ para el usuario, sino tambi´en para las empresas que gracias a ellas pueden indicar a sus clientes la manera de llegar a su tienda m´as cercana. Es una manera sencilla de publicitarse y fidelizar clientes a muy bajo coste. Con esa idea en mente nace este proyecto, cuyo objetivo principal es desarrollar una apli- caci´on que muestre nuestra posici´on geogr´afica en tiempo real y disponga de un cat´alogo de establecimientos de manera que el usuario pueda navegar por ´el y elegir a cu´al desea ir; o simplemente encontrar la manera de llegar al m´as cercano. Estos establecimientos son tiendas donde se puede adquirir pan con Indicaci´on Geogr´afica Protegida (IGP) ”Pa de Pag´es Catal`a” 1 .

Teniendo esto en cuenta se decidi´o utilizar los dispositivos m´oviles como plataforma pa- ra esta aplicaci´on. Su tama˜no permite al usuario moverse con ´el y el GPS o el acceso a

1 De ahora en adelante nos referiremos a ellos como ”hornos”

6

la red de telefon´ıa m´ovil permite obtener la posici´on geogr´afica de manera m´as precisa. Los modelos escogidos han sido aquellos que funcionan sobre los sistemas operativos iOS y Android, ya que son los que gozan de mayor implantaci´on en el mercado, proporcionan facilidad para acceder a su SDK y una extensa base de conocimientos para ayudar al desa- rrollador. Adem´as las compa˜n´ıas que est´an detr´as de estos sistemas operativos (Apple y Google respectivamente) disponen de plataformas de distribuci´on de aplicaciones amplia- mente aceptadas por sus usuarios (AppStore y GooglePlay, respectivamente).

1.1.

Objetivos

Los objetivos para llevar a cabo este proyecto podemos desglosarlos de la siguiente manera:

Investigaci´on previa En primer lugar habr´a que hacer un peque˜no estudio sobre las diferentes tecnolog´ıas que permiten En primer lugar habr´a que hacer un peque˜no estudio sobre las diferentes tecnolog´ıas que permiten la localizaci´on geogr´afica y determinar cual o cuales son las m´as ade- cuadas para esta aplicaci´on. Posteriormente y dado que son dos lenguajes de programaci´on desconocidos para m´ı, ser´a necesario estudiar tanto el entorno de desarrollo como los propios lenguajes.

Dise˜no preliminar de la aplicaci´on Habr´a que determinar las acciones que podr´a realizar el usuario en la aplicaci´on y hacer Habr´a que determinar las acciones que podr´a realizar el usuario en la aplicaci´on y hacer un primer dise˜no de la estructura de ´esta.

Estudio de particularidades Una vez instalados los SDKs, asimilados los conceptos b´asicos de los lenguajes y con la Una vez instalados los SDKs, asimilados los conceptos b´asicos de los lenguajes y con la idea general de lo que necesitar´a la aplicaci´on, ser´a necesario investigar las diferentes herramientas o APIs que tenemos disponibles para llevar a cabo las tareas m´as complejas, como son la inclusi´on de mapas y la geolocalizaci´on en ambos sistemas operativos.

Desarrollo de la aplicaci´ona cabo las tareas m´as complejas, como son la inclusi´on de mapas y la geolocalizaci´on en

7

Se desarrollar´an dos versiones de la aplicaci´on, una para dispositivos Android y otra para iPhone.

una para dispositivos Android y otra para iPhone. Despliegue final Finalmente las versiones definitivas de

Despliegue final Finalmente las versiones definitivas de la aplicaci´on se pondr´an a disposici´on del p´ubli- co en las plataformas de distribuci´on de Google y Apple.

1.2. Motivaciones personales

A nivel personal, la principal motivaci´on que encontr´e para realizar este proyecto fue el deseo de iniciarme en el desarrollo para dispositivos m´oviles. Llevo cuatro a˜nos ejerciendo como programador en entornos .Net y entend´ıa que era el momento de probar cosas nue- vas. En este sentido, me pareci´o que la programaci´on para iOS y Android era una buena elecci´on puesto que son dos plataformas en continuo crecimiento y permiten hacer llegar tus aplicaciones a un amplio mercado de manera r´apida y directa. Adem´as este proyecto me daba la oportunidad de trabajar con mapas y geolocalizaci´on, dos conceptos clave en el desarrollo de aplicaciones m´oviles.

8

Capitulo 2

2. Estado del Arte

En este cap´ıtulo introduciremos las diferentes tecnolog´ıas que se han utilizado en este pro- yecto, como son las t´ecnicas de geolocalizaci´on o los sistemas de representaci´on de mapas. En general se procurar´a no entrar en demasiado detalle y mostrar una visi´on lo m´as cercana posible al ´ambito de este proyecto.

2.1.

Geolocalizaci´on

Entendemos por geolocalizaci´on al conjunto de t´ecnicas que permiten determinar la posi- ci´on geogr´afica de un elemento (un ordenador, un tel´efono m´ovil o cualquier dispositivo capaz de ser detectado) en el mundo real y hacer uso de esa informaci´on. Esta tecnolog´ıa requiere de la perfecta sincronizaci´on entre hardware y software, es necesario un dispositivo con GPS o conexi´on a internet y un software que permita hacer uso de ellos en esta direcci´on.

En los ultimos´ a˜nos los smartphone se han tornado el dispositivo ideal para la geoloca- lizaci´on gracias al hardware que incorporan y a que sus fabricantes han dotado sus sistemas operativos de las herramientas necesarias para que los desarrolladores hagan uso de la geo- localizaci´on con facilidad y puedan centrarse en explorar sus m´ultiples utilidades. No es de extra˜nar pues la gran cantidad de aplicaciones que hay disponibles en tel´efonos m´oviles que hacen uso de esta tecnolog´ıa. Entre ellas podemos diferenciar tres usos comunes:

Georreferenciaci´on: Es el proceso mediante el que se localiza un objeto, lugar o persona en el Es el proceso mediante el que se localiza un objeto, lugar o persona en el espacio f´ısico para posteriormente representarlo en un sistema de coor- denadas o mapa. Un ejemplo habitual es la representaci´on de tu posici´on en el mapa de tu ciudad y actualizarla a medida que te desplazas.

Geocodificaci´on: Es el proceso de obtenci´on de coordenadas geogr´aficas a partir de otro tipo de datos Es el proceso de obtenci´on de coordenadas geogr´aficas a partir de otro tipo de datos geogr´aficos, como la direcci´on o el c´odigo postal. Al proceso

9

contrario, la obtenci´on de direcciones postales a partir de coordenadas se le denomina Geocodificaci´on Inversa. El ejemplo claro lo vemos en la aplicaci´on Google Maps, que muestra en un mapa el punto donde quieres despu´es de haber indicado la direcci´on postal.

Geoetiquetado: Es el proceso mediante el cual se a˜nade informaci´on geogr´afica en forma de metadatos a Es el proceso mediante el cual se a˜nade informaci´on geogr´afica en forma de metadatos a otro tipo de contenido. Usualmente es un paso posterior a la georreferenciaci´on. Un ejemplo de geoetiquetado ser´ıa incluir en una fotograf´ıa las coordenadas del lugar donde fue tomada.

Ya que el proceso de georreferenciaci´on es quiz´as el m´as importante de todos, y dado que juega un papel importante en la mayor´ıa de las aplicaciones de geolocalizaci´on, es habitual ver como se usan ambos t´erminos indistintamente [1, 2, 3, 4, 5].

2.1.1. M´etodos de georreferenciaci´on en dispositivos m´oviles

Un mismo dispositivo m´ovil dispone de diferentes v´ıas para determinar su posici´on, siendo algunas mucho m´as precisas que otras. Sin embargo en ocasiones al dispositivo no le ser´a po- sible utilizar la t´ecnica m´as precisa y deber´a recurrir al m´etodo que tenga disponible. Esta disponibilidad la marca el medio al que est´a conectado el dispositivo, y en funci´on de este medio podemos dividir las t´ecnicas de georreferenciaci´on en tres grupos:

Redes Wi-Fi Este m´etodo se basa en el uso de enormes bases de datos que contienen la Este m´etodo se basa en el uso de enormes bases de datos que contienen la informaci´on

y situaci´on de gran cantidad de redes Wi-Fi. El m´etodo consiste en enviar la direcci´on MAC del router Wi-FI y el SSID (nombre la red) y contrastarlo con la base de datos

que devolver´a la posici´on geogr´afica de la red. De esta forma es posible determinar con una precisi´on de entre 30 y 100 metros la ubicaci´on de cualquier dispositivo conectado

a una red inal´ambrica.

Google, por ejemplo, es propietaria de una de estas bases de datos y la utiliza en su sistema de mapas Google Maps. Para crear la base de datos enviaron veh´ıculos a

10

recorrer las ciudades que registraban las redes Wi-Fi que encontraban a su paso. Hoy d´ıa son los propios tel´efonos m´oviles de los usuarios los que completan estas bases de datos enviando su ubicaci´on [1, 9].

estas bases de datos enviando su ubicaci´on [1 , 9]. Redes de telefon´ıa m´ovil: Hay un

Redes de telefon´ıa m´ovil:

Hay un gran n´umero de t´ecnicas de georreferenciaci´on que permiten obtener la posici´on de un dispositivo que est´e conectado a una red de telefon´ıa m´ovil y su precisi´on oscila entre los 50 y los 500 metros. Mientras que en el siguiente apartado veremos las m´as relevantes, en ´este nos limitaremos a clasificarlas en tres grandes grupos:

Basadas en la red Estas t´ecnicas utilizan la infraestructura del operador de telefon´ıa m´ovil para determinar la ubicaci´on del terminal. La principal ventaja es que no son t´ecnicas intrusivas y no requieren que el dispositivo disponga de hardware o software es- pec´ıfico. La precisi´on de estas t´ecnicas var´ıa no s´olo en funci´on de la t´ecnica en s´ı, sino tambi´en en funci´on de la infraestructura del operador. De estas t´ecnicas destacamos la CGI (Cell Global Identity ), CGI-TA, que combina las t´ecnicas Ti- ming Advance junto con CGI, TDOA (Time Difference Of Arrival ), AoA (Angle of Arrival ) y A-GPS (Assisted Global Positioning System)

Basadas en el terminal Son t´ecnicas que requieren dotar al terminal de un receptor de se˜nales y de apli- caciones espec´ıficas que realicen las tareas necesarias para determinar la posici´on geogr´afica, por ello estas t´ecnicas dependen en gran medida del fabricante del dispositivo. La principal ventaja de estas t´ecnicas sobre las anteriores radica en que no son t´ecnicas tan dependientes de la infraestructura del proveedor de ser- vicios. Entre las m´as conocidas, encontramos E-OTD (Enhanced Observed Time Difference) y variaciones de CGI y TDOA.

H´ıbridas

11

Combinan las t´ecnicas basadas en la red y las basadas en el terminal para con- seguir mayor precisi´on, pero heredan los inconvenientes de ambas.

mayor precisi´on, pero heredan los inconvenientes de ambas. GPS GPS son las siglas de Global Positioning

GPS GPS son las siglas de Global Positioning System. Es un sistema de localizaci´on por sat´elites que permite determinar la posici´on de un dispositivo en cualquier lugar del globo terrestre con una precisi´on de entre 1 y 15 metros; en el 95 % esta precisi´on es de 3 metros. El sistema est´a formado por 27 sat´elites (24 operativos y 3 de repuesto) cuya funci´on es emitir se˜nales con informaci´on sobre el tiempo de emisi´on y su posici´on para que los receptores GPS las interpreten y utilicen en el c´alculo de su situaci´on geogr´afica. Este c´alculo se basa en el concepto de trilateraci´on, que es un principio geom´etrico que permite conocer la ubicaci´on de un punto conociendo su distancia a otros puntos ya conocidos, en este caso los sat´elites.

a otros puntos ya conocidos, en este caso los sat´elites. Figura 1: Trilateraci´on Para calcular la

Figura 1: Trilateraci´on

Para calcular la distancia entre el dispositivo y los sat´elites se mide el retraso que marca el tiempo de la se˜nal emitida por ´estos. Una vez tenemos el retraso y conocien-

12

do que la se˜nal ha viajado a la velocidad de la luz, podemos determinar la distancia a la que se encuentra el sat´elite. Para que este proceso funcione es necesario recibir la se˜nal de al menos otros dos sat´elites. Con tres sat´elites ubicados podemos hacer una esfera alrededor de cada uno de ellos, con el sat´elite como centro, y obtendremos tres esferas que se cortaran en dos puntos, uno de ellos es despreciable puesto que no se encuentra en la superficie de la tierra y el otro ser´a el que indique donde se encuentra el receptor GPS.

No obstante, debido a que la se˜nal no viaja realmente a la velocidad de la luz (por retrasos en la ionosfera y estratosfera y otro tipo de obst´aculos), hay errores que se ven reflejados en la precisi´on del resultad y para compensarlos es necesario involucrar m´as sat´elites y calcular sus distancias. Es por ello que el sistema GPS garantiza que las ´orbitas de los sat´elites permiten que desde cualquier punto de la tierra sean visibles simult´aneamente no menos de cinco sat´elites.

visibles simult´aneamente no menos de cinco sat´elites. Figura 2: Funcionamiento GPS Hoy d´ıa hay un considerable

Figura 2: Funcionamiento GPS

Hoy d´ıa hay un considerable n´umero de tel´efonos m´oviles que disponen de receptor

13

GPS y es la primera opci´on que utilizan las aplicaciones de geolocalizaci´on cuando se prioriza la precisi´on, pero es requisito indispensable que el dispositivo se encuentre en cielo abierto y despejado, de lo contrario no puede recibir la se˜nal de los sat´elites. Otro de sus inconvenientes es que es un sistema considerablemente lento. El resultado puede tardar en obtenerse en torno a unos 20 - 45 segundos [1, 7, 10].

2.1.2. T´ecnicas de geolocalizaci´on en redes de telefon´ıa m´ovil

A

continuaci´on describiremos brevemente algunas de las t´ecnicas de georreferenciaci´on que

es

posible efectuar sobre dispositivos conectados a redes de telefon´ıa m´ovil.

Cell Global Identity (CGI) Para entender el funcionamiento de esta t´ecnica es necesario comprender primero como est´an dise˜nadas las redes de telefon´ıa m´ovil. A estas redes tambi´en se las conoce como redes celulares ya que est´an formadas por un conjunto de c´elulas que emiten a un determinada distancia las unas de las otras. Cuando un tel´efono m´ovil quiere realizar una llamada loca- liza las se˜nales de las antenas de estas c´elulas y se conecta a la que recibe con m´as fuerza. Este tipo de red est´a dise˜nado a modo de panal, de manera que cada c´elula est´a rodeada de otras seis, formando hex´agonos, y cada una de las antenas emite en una frecuencia diferente, por lo que tenemos siete frecuencias por hex´agono (seis en las antenas de los v´ertices y una en el centro).

14

Figura 3: Redes celulares Teniendo esto claro, es f´acil entender el funcionamiento de esta t´ecnica,

Figura 3: Redes celulares

Teniendo esto claro, es f´acil entender el funcionamiento de esta t´ecnica, ya que unicamente´ consiste en determinar a que antena del hex´agono est´a conectado el terminal, que ser´a la que tenga m´as cercana puesto que es cuya se˜nal recibe con m´as fuerza. As´ı pues sabremos que el terminal est´a situado en el radio de alcance de esta antena.

Esta t´ecnica tiene la ventaja de que no necesita ning´un tipo de modificaci´on en el dispositivo m´ovil (es una t´ecnica basada en la red), pero la precisi´on del resultado est´a ´ıntimamente ligada a la densidad de antenas que tenga el operador de telefon´ıa m´ovil en la zona en la que nos encontremos. En ciudades, donde el n´umero de antenas es mayor, obtenemos mejores resultados que en zonas rurales, donde el margen de error puede llegar a ser kilom´etrico [7, 8].

Cell Global Identity + Timing Advance (CGI-TA) Es una mejora de la t´ecnica anterior haciendo uso del Timing Advance. Timing Advance es un t´ecnica que permite calcular (con baja precisi´on) la distancia entre una antena y el dispositivo m´ovil. Para ello se miden los retardos en la propagaci´on de la se˜nal y, asumiendo que viaja a un velocidad cercana a la de la luz, es posible determinar la distancia.

15

Figura 4: Timing Advance Esta t´ecnica esta directamente vinculada a la cobertura de la c´elula,

Figura 4: Timing Advance

Esta t´ecnica esta directamente vinculada a la cobertura de la c´elula, por lo que en entornos rurales el margen de error puede llegar a ser tan alto como el de la t´ecnica CGI simple pero en ciudad puede alcanzar una precisi´on de hasta 10 metros [8].

Time Difference of Arrival (TDOA) Esta t´ecnica consiste en medir los tiempos que tarda una misma se˜nal en llegar desde el terminal m´ovil a un conjunto de antenas y ver la diferencia. A partir de ah´ı podemos cal- cular la distancia a la que se encuentra de cada antena y averiguar su ubicaci´on exacta gracias a la trilateraci´on, al igual que ocurre en el calculo de posici´on mediante GPS pero esta vez en un plano bidimensional. Cabe destacar que el c´alculo de la ubicaci´on en funci´on de los par´ametros de tiempo obtenidos los lleva a cabo el operador de la red, el terminal no interviene en ning´un momento, por lo que esta t´ecnica, al igual que CGI, es posible llevarla a cabo en cualquier tel´efono m´ovil [7, 8].

16

Figura 5: Trilateraci´on aplicada en TDOA Angle of Arrival (AOA) Es una t´ecnica que mide

Figura 5: Trilateraci´on aplicada en TDOA

Angle of Arrival (AOA) Es una t´ecnica que mide el ´angulo con el que inciden sobre un conjunto de antenas las se˜nales que emite el dispositivo m´ovil. Para calcular estos ´angulos es necesario utilizar la t´ecnica TDOA, y una vez se obtenien podemos calcular la posici´on geogr´afica por triangulaci´on.

calcular la posici´on geogr´afica por triangulaci´on. Figura 6: Angle of Arrival Esta es una t´ecnica costosa

Figura 6: Angle of Arrival

Esta es una t´ecnica costosa ya que requiere de un determinado tipo de antena y que pierde eficacia en entornos urbanos, donde los edificios interrumpen las se˜nales [7, 8].

Enhanced Obeserved Time Difference (E-OTD) Esta t´ecnica se basa en el mismo principio que TDOA: a partir de la diferencia de tiem- pos en las se˜nales establece la posici´on del terminal m´ovil. La gran diferencia es que en

17

este caso quien lleva a cabo el c´alculo a partir de los par´ametros obtenidos es el propio dispositivo. Ello significa que para poder hacer uso de este m´etodo se requieren terminales convenientemente adaptados.

m´etodo se requieren terminales convenientemente adaptados. Figura 7: Esquema E-OTD La precisi´on de esta t´ecnica

Figura 7: Esquema E-OTD

La precisi´on de esta t´ecnica fluct´ua entre lo 50 y los 100 metros [8].

Assisted Global Positioning System (A-GPS) Es una t´ecnica h´ıbrida que mezcla las t´ecnicas de geolocacilaci´on por redes m´oviles con el sistema GPS. Para ello el operador de la red distribuye cada 200-400 kil´ometros de cober- tura bajo estaciones base unos dispositivos de asistencia GPS que unicamente´ podr´an usar aquellos terminales dotados de un receptor GPS. Estos terminales se podr´an conectar con los dispositivos mediante una se˜nal wireless o de telefon´ıa y as´ı combinar el uso del GPS con algunas de las t´ecnicas vistas anteriormente. De esta manera se salvan los problemas que ten´ıa el GPS para posicionar en espacios cerrados o con condiciones climatol´ogicas adversas y se mejoran los tiempos de obtenci´on del resultado, que pasan a ser de 1-8 segundos. Tam- bi´en tiene un modo de funcionamiento off-line, que consiste en descargase de los dispositivos distribuidos un fichero con los datos de los sat´elites y hacer uso de ´el cuando junto con los resultados que d´e el GPS cuando se solicite el geoposicionamiento [7, 8, 11].

18

2.1.3.

Herramientas de geolocalizaci´on

Location API for J2ME (JSR 179) Location API for J2ME es una conjunto de APIs gen´ericas para dispositivos m´oviles que permite obtener todo tipo de informaci´on relacionada con la ubicaci´on del terminal que utiliza el servicio. Fue desarrollada bajo el ´ambito del Java Community Process (JSP) en el a˜no 2003 con el nombre de JSR 179, siendo Nokia el principal desarrollador y encargado de su mantenimiento.

Es posible utilizarla mediante el paquete Javax.microedition.location pero requiere del fra- mework Connected Device Configuration (CDC) o del Connected Limited Device Configura- tion (CLDC) pero no en su primera versi´on (1.0), ya que ´esta no soporta n´umeros de coma flotante y la API los necesita para representar las coordenadas. Esta API puede usarse como librer´ıa en cualquier aplicaci´on, ya sea de c´odigo abierto o cerrado, ya que se encuentra bajo licencia GNU Lesser General Public License (LGPL).

El objetivo principal que se ten´ıa con esta API era proporcionar una herramienta de geolo- caclizaci´on al mayor n´umero de dispositivos posible, sin importar sus caracter´ısticas, por lo que se program´o con la capacidad de hacer uso de un gran n´umero de t´ecnicas de georrefe- renciaci´on. Sin embargo s´ı que ser´an las caracter´ısticas del dispositivo las que determinen que t´ecnica puede utilizarse en ultima´ instancia y la precisi´on en el resultado ser´a resultado directo de esto. Haciendo uso de los m´etodos de localizaci´on a trav´es de redes m´oviles, obtendremos mediciones con un margen de error de entre 50 y 500 metros (puede que m´as en zonas rurales), mientras que si el dispositivo tiene receptor GPS el precisi´on se ver´a in- crementada hasta los 4 - 40 metros.

Esta API funciona tanto en espacios abiertos como cerrados y permite obtener latitud, longitud, velocidad, altura e incluso la orientaci´on del dispositivo (siempre que ´este dispon- ga de br´ujula). Tiene la capacidad de asignar nombres y valores textuales (como direcciones

19

postales) a las posiciones obtenidas y almacenarlas como marcadores. Otra de sus carac- ter´ısticas es que permite elegir entre velocidad y precisi´on a la hora de obtener un resultado, siempre y cuando las caracter´ısticas del dispositivo den la posibilidad de usar m´as de una t´ecnica de geolocalizaci´on [12, 13].

Android Location Services Es una API desarrollada por Google que podemos descargar gratuitamente junto con el en- torno de desarrollo para Android y que encontramos dentro del paquete Android.Location. Al igual que la API anterior, permite conocer todos los par´ametros necesarios para determi- nar una posici´on (latitud, longitud, altura, velocidad y direcci´on) y la actualiza en tiempo real. Adem´as tiene la opci´on de consultar la ultima´ ubicaci´on obtenida, por si en un mo- mento dado no tenemos la posibilidad de calcularla de nuevo. Otra de sus prestaciones es la posibilidad de suscribirse a un intent o evento que lanzar´a cualquier aplicaci´on que elijamos al llegar a una ubicaci´on previamente marcada.

Como es com´un en estas APIs, permite utilizar las t´ecnicas de geoposicionamiento mediante redes Wi-Fi locales, redes de telefon´ıa m´ovil y GPS (siempre que el terminal est´e prepara- do). La principal ventaja de esta API es que al ser de Google est´a pensada para funcionar con su API de mapas Google Maps y su integraci´on es muy sencilla [14].

Core Location Este paquete ha sido desarrollado por Apple y s´olo es posible obtenerlo con su SDK y uti- lizarlo en aplicaciones que funcionen sobre el sistema operativo iOS. Funciona empleando las t´ecnicas de geolocalizaci´on en redes Wi-Fi, m´oviles o GPS que hemos visto y permite elegir entre dos servicios diferentes a la hora solicitar la posici´on del terminal [15].

a la hora solicitar la posici´on del terminal [15]. Standard location service Es un servicio configurable

Standard location service Es un servicio configurable para un uso general y que soportan todas las versiones de iOS. Permite solicitar la posici´on del terminal en un momento determinado pero no

20

subscribirse para ser avisado en caso de cambios en esa posici´on. Adem´as tiene un

alto consumo energ´etico y es conveniente utilizarlo con mesura para ahorrar bater´ıa.

conveniente utilizarlo con mesura para ahorrar bater´ıa. Significant-change location service Es un servicio de bajo

Significant-change location service

Es un servicio de bajo coste energ´etico que adem´as permite recibir alertas sobre los

cambios de posici´on del terminal, incluso si la aplicaci´on se encuentra en estado suspen-

´

dido o apagada. Estas alertas tambi´en informan del cruce entre fronteras. Unicamente

est´a disponible en iOS 4.0 y posteriores.

2.1.4. Aplicaciones con geolocalizaci´on

Actualmente son muchas las aplicaciones que hacen uso de la ubicaci´on del usuario en uno

u otro sentido. A continuaci´on vamos a ver alguna de ellas:

Br´ujula para iPhone

Esta aplicaci´on viene por defecto en todos los

tel´efonos iPhone. Haciendo gala del minimalismo

con el que Apple dota a todos sus productos, la

aplicaci´on consta de una unica´ pantalla que na-

da m´as mostrarse ya indica la ubicaci´on en for-

ma de coordenadas geogr´aficas (grados, minutos

y segundos), como podemos ver en la figura 8.

Adem´as, como su nombre indica, hace las veces de

br´ujula indicando el norte (podemos elegir entre

el norte real y el norte magn´etico) y hacia donde

est´a orientado el dispositivo. Finalmente nos da la

opci´on de llamar a una aplicaci´on de mapas y mos-

trarnos el punto geogr´aficos donde estamos ubica-

dos.

21

llamar a una aplicaci´on de mapas y mos- trarnos el punto geogr´aficos donde estamos ubica- dos.

Figura 8: Br´ujula

Star Walk Star Walk es una aplicaci´on pensada para los aficionados a la astronom´ıa. Se hace valer de la ubicaci´on geogr´afica para mostrar el cielo tal y como lo estamos viendo en la realidad y lo va actualizando en tiempo real.

viendo en la realidad y lo va actualizando en tiempo real. Figura 9: Star Walk Adem´as

Figura 9: Star Walk

Adem´as utiliza la el calculo de la orientaci´on del dispositivo para poder usarlo como si de un cristal transparente se tratase, de forma que si lo ponemos delante de nuestros ojos y miramos al cielo, veremos indicados en la pantalla nombre de todos los objetos celestes

hacia los que estamos mirando. Es una aplicaci´on

disponible para dispositivos con sistema operativo iOS.

(estrellas, planetas, cat´alogo Messier

)

TomTom TomTom es una aplicaci´on para dispositivos iOS que hace las veces de sistema GPS de carretera. Utiliza la ubicaci´on del usuario para mostrarla en un mapa de carretera y guiar- le durante el trayecto mediante voz. Tambi´en calcula la velocidad a la que se desplaza el veh´ıculo e indica los lugares de inter´es a los que se va acercando (estaciones de servicio,

22

radares, accidentes

en carretera, solo soporta la t´ecnica de geoposicionamiento por GPS, por lo que es obligado

que los dispositivos que ejecuten a aplicaci´on tengan un receptor de se˜nal GPS.

). Sin embargo debido a la alta precisi´on que requiere la conducci´on

Around Me Esta aplicaci´on, disponible tanto para dispositi- vos Android como iOS, utiliza nuestra ubicaci´on geogr´afica para indicarnos los lugares de nuestro inter´es que tenemos pr´oximos. El usuario en pri- mer lugar indica que lugares le interesa encontrar

y la aplicaci´on le muestra una lista con los resul- tados que ha obtenido, mostrando en primer lugar

los m´as cercanos e indicando la distancia hasta ellos

y c´omo llegar. Entre los lugares que podemos bus-

car tenemos disponibles bancos, gasolineras, hospi- tales, bares, cines y muchos m´as. Si lo deseamos Around Me tambi´en puede mostrarnos un mapa con nuestra ubicaci´on y la de los lugares selecciona- dos.

con nuestra ubicaci´on y la de los lugares selecciona- dos. Figura 10: Around Me Aplicaciones de

Figura 10: Around Me

Aplicaciones de Mapas Tanto Android como iOS vienen instalados por defecto con una aplicaci´on de mapas, que aunque son diferentes ambas tienen caracter´ısticas muy parecidas puesto que las dos funcio- nan con la API de mapas Google Maps. Estas aplicaciones nos muestran nuestra posici´on

en un mapa y se˜nalizan todo lo que tenemos alrededor: el nombre de las calles, los portales,

Tambi´en permiten escribir una direcci´on postal

estaciones de metro, paradas de autob´us

23

para que la aplicaci´on la localice y nos la muestre en el mapa con un marcador. Podemos ver las diferentes rutas que tenemos para llegar all´ı desde nuestra ubicaci´on actual o desde otro punto que le indiquemos. A medida que nos movemos vemos como nuestra posici´on en el mapa se desplaza de la misma forma y podemos pedir que nos muestre la direcci´on hacia la que estamos mirando.

que nos muestre la direcci´on hacia la que estamos mirando. Figura 11: Mapas para iOS 2.2.

Figura 11: Mapas para iOS

2.2. Representaci´on de mapas

Cuando tratamos de representar una superficie esf´erica sobre un plano nos encontramos con el problema de que es imposible hacerlo sin deformarlo o distorsionarlo de alguna manera, as´ı que las distancias en determinados puntos no se ajustaran a las reales. Esto hace que fijar un sistema de coordenadas en ese plano sea una tarea complicada. Adem´as si lo que queremos representar es la corteza terrestre nos encontramos con que la superficie de la

24

Tierra (al igual que la el resto de cuerpos celestes) no es perfectamente esf´erica, m´as bien es un esferoide ligeramente aplanado por los polos y con multitud de irregularidades en su

manera posible de representar sin ning´un tipo de imprecisi´on

la superficie de nuestro planeta es utilizar una esfera de verdad (como un globo terr´aqueo), pero no es c´omodo trabajar con este tipo de formas en una pantalla, es por ello que para representar mapas digitales se utilizan otros m´etodos [16, 17].

superficie. As´ı pues la unica´

2.2.1. Proyecci´on de mapas

Una proyecci´on es un m´etodo matem´atico que permite representar un cuerpo esf´erico, o cualquier cuerpo tridimensional, en un plano bidimensional. Existen varios tipos de pro- yecciones y todas y cada una de ellas deforman alg´un aspecto del objeto original, ya sea la forma, el ´area, la distancia o la direcci´on. Sin embargo seg´un cual sea nuestro prop´osito algunas deformaciones son aceptables, por lo que podemos escoger el tipo de proyecci´on que m´as se ajusta a nuestras necesidades.

La forma t´ıpica de clasificar los tipos de proyecciones de mapas es seg´un la forma del objeto sobre el que se proyectar´a la esfera terrestre, dando lugar a tres grandes grupos:

cil´ındricas, c´onicas y planas

Proyecciones cil´ındricas Se basan en proyectar la superf´ıcie de la Tierra en un cilindro. Este cilindro puede ser tangente a la esfera terrestre en una l´ınea seleccionada o bien secante y cortarla por dos l´ıneas. Una vez se proyecte la esfera sobre la superficie del cilindro los puntos donde la ´este es tangente o secante ser´an los que menos distorsi´on tengan. Una caracter´ıstica interesante de estas proyecciones es que si el cilindro es tangente o secante por los paralelos terrestres, obtendremos mapa con todos los paralelos y meridianos rectos y paralelos entre s´ı.

25

Figura 12: Proyecci´on cil´ındrica tangente y secante Entre las proyecciones cil´ındricas m´as famosas se encuentra

Figura 12: Proyecci´on cil´ındrica tangente y secante

Entre las proyecciones cil´ındricas m´as famosas se encuentra la proyecci´on Mercator, adop-

tada por ejemplo en aplicaciones de mapas como Google Maps. Su uso est´a muy extendido

en la navegaci´on y, al ser tangente por el Ecuador, es com´un verla en los pa´ıses cercanos a

´este. Como contrapartida pierde precisi´on a medida que nos acercamos a los polos, dando

la falsa impresi´on de que Groenlandia y la antigua Uni´on Sovi´etica son m´as extensas que

´

Sudam´erica y Africa.

Otras proyecciones cil´ındricas o pseudocil´ındricas muy conocidas son la Mollweide, que

dibuja la tierra dentro de un ´ovalo, o la discontinua de Goode, que representa como si fue-

sen gajos, de forma que aunque consigue mucha precisi´on es muy dif´ıcil de leer.

Proyecciones c´onicas

En este tipo de proyecci´on la superficie de la tierra se proyecta sobre un cono imaginario.

Este cono puede ser tangente a alguno de los paralelos terrestres o secante en dos de ellos,

tal y como podemos apreciar en la figura 13.

26

Figura 13: Proyecci´on c´onica tangente y secante Este tipo de proyecci´on no presenta deformidades all´ı

Figura 13: Proyecci´on c´onica tangente y secante

Este tipo de proyecci´on no presenta deformidades all´ı donde el cono es tangente o secante, por lo que es recomendable para regiones poco extensas de latitudes medias, pero presenta grandes deformaciones regiones mayores. Como representantes de esta categor´ıa tenemos la proyecci´on Lambert, utilizada a menudo en aeron´autica, y la proyecci´on Albers, que es secante por dos paralelos y aunque no conserva la escala y forma del original, consigue una distorsi´on m´ınima entre los dos paralelos secantes.

Proyecciones planas Tambi´en conocidas como proyecciones acimutales, en este tipo de proyecci´on es un plano bidimensional quien es tangente a la esfera terrestre por un punto o bien secante por toda una circunferencia. Tambi´en es posible que el plano sea totalmente exterior a la esfera, como en el caso de la proyecci´on ortogr´afica.

27

Figura 14: Proyecci´on planar tangente y secante Estas proyecciones tienen la particularidad de que apenas

Figura 14: Proyecci´on planar tangente y secante

Estas proyecciones tienen la particularidad de que apenas presentan deformidades en las zonas centrales del plano, pero s´ı en los extremos. Entre sus ejemplos, podemos destacar la ya mencionada proyecci´on ortogr´afica, que tiene la apariencia de una foto del planeta Tierra tomada por un astronauta, y la proyecci´on azimutal equidistante, que tiene como principal ventaja que todas las distancias y direcciones medidas desde el centro del mapa son verdaderas, es decir, que si trazamos una circunferencia desde el centro, todos los puntos de ese circulo ser´an equidistantes respecto al origen [16, 17].

2.2.2. Sistema de Informaci´on Geogr´afica (SIG)

Un Sistema de Informaci´on Geogr´afica es un sistema de mapas digitalizados cuyo fin es capturar, almacenar, manipular, analizar y desplegar la informaci´on geogr´afica almacena- da para poder ejecutar cualquier tipo de operaci´on relacionada con mapas de una manera sencilla para el usuario. Entre las operaciones m´as comunes se encuentra la b´usqueda de direcciones, el trazado de rutas, c´alculo de distancias, etc.

Podemos pensar en un SIG como si de una base de datos se tratase, una base de datos donde se almacena todo tipo de informaci´on geogr´afica cuyo identificador es un objeto gr´afico representado en mapa en unas determinadas coordenadas. De esta manera se˜nalan-

28

do este objeto en el mapa podemos obtener todos los datos asociados a ´el que hay en la base de datos y viceversa, si introducimos alguno de estos datos como criterio de b´usqueda podemos ser trasladados a su posici´on en el mapa.

Los SIG funcionan agrupando su informaci´on por capas que se sit´uan la una sobre la otra y compartiendo un mismo sistema de coordenadas. Tal y como vemos en la figura 15, una capa puede tener la informaci´on fluvial, otra los mapas de carteras, otra los nombres de los lugares de inter´es, etc. De esta manera es posible acceder a la informaci´on deseada de una manera m´as directa y podemos discriminar los datos que no deseamos ver.

directa y podemos discriminar los datos que no deseamos ver. Figura 15: Sistema de capas Representaci´on

Figura 15: Sistema de capas

Representaci´on de los datos El leitmotiv de todo SIG es poder representar en una pantalla la realidad y sus objetos. Estos objetos podemos dividirlos de dos grupos: discretos y continuos. Entendemos por objetos discretos aquellos cuyos l´ımites est´an bien delimitados, como puede ser un edificio o una carretera. En cambio los continuos son aquellos fen´omenos con l´ımites m´as imprecisos, como puede ser la lluvia ca´ıda, la contaminaci´on o la temperatura en una zona determinada. Para ambos objetos tenemos una forma de almacenar datos: vectorial para los discretos y raster para los cont´ınuos.

objetos tenemos una forma de almacenar datos: vectorial para los discretos y raster para los cont´ınuos.

Raster

29

El tipo de datos raster se centra m´as en las propiedades del espacio que en la precisi´on de las localizaciones. Consiste en dividir el espacio en celdas regulares, a modo de malla, y asignarles un valor. Es el mismo funcionamiento que una imagen, donde a cada pixel se le asigna un color y la uni´on de todos acaba definiendo la imagen en su totalidad. De hecho una forma de almacenar datos raster es como si de imagen

o tambi´en puden almacenarse en grandes

se tratarse, con formatos TIFF, JPEG ficheros binarios llamados BLOB.

con formatos TIFF, JPEG ficheros binarios llamados BLOB. Vectorial Los datos vectoriales se utilizan cuando se

Vectorial Los datos vectoriales se utilizan cuando se quiere dar prioridad a la precisi´on de los elementos geogr´aficos en el espacio. Por ello, a fin de mantener sus caracter´ısticas geom´etricas y delimitarlos adecuadamente se definen mediante vectores. Utilizan tres tipos de figuras para modelar los elementos geogr´aficos: el punto, la l´ınea y el pol´ıgono. El punto se utiliza para representar los elementos del mundo real que pueden ser definidos mediante un punto concreto, como puede ser el pico de una monta˜na u otros puntos de inter´es. A escalas peque˜nas tambi´en sirven para representar poblaciones. La l´ınea se utiliza para medir todo aquello que se caracteriza por su longitud, como pueden

ser carreteras, r´ıos, caminos, v´ıas, ferrocarriles, fronteras, etc. Los datos representados por l´ıneas permiten medir distancias. Por ultimo´ el pol´ıgono sirve para representar elementos del mundo real que abarcan cierta extensi´on sobre la superficie terrestre:

lagos, provincias, ciudades, parques naturales

Permiten calcular el ´area que abarcan.

Renderizado Una vez tenemos los datos en la base de datos y tenemos claro como representarlos, lo unico´ que falta es la fase de renderizado. Esta fase es la encargada de reunir toda la informaci´on de la base de datos, unir las capas y generar la imagen final con la que trabajar´a el usuario. Hay servicios de mapas que unicamente´ centran su trabajo en esta fase: obtienen los datos de alguna otra fuente (por ejemplo OpenStreetMap) y se encargan de ofrecer al usuario un renderizado y unas funcionalidades espec´ıficas [18].

30

2.2.3.

APIs de mapas

En los ultimos´ tiempos la creciente demanda por las aplicaciones de geolocalizaci´on y mapas ha dado lugar una gran oferta de APIs disponibles entre las que poder elegir seg´un nuestras necesidades. Las funciones que ofrecen todas ellas son muy similares, en general encontramos geocodificaci´on, geocodificaci´on inversa, soporte para marcadores, c´alculo de distancias, lugares de inter´es, etc. A continuaci´on veremos un peque˜no listado con algunas de ellas:

OpenStreetMap: Es una base de datos geogr´aficos de libre uso cuya popularidad va en aumento. Desarrollada Es una base de datos geogr´aficos de libre uso cuya popularidad va en aumento. Desarrollada por la OpenStreetMap Foundation, permite a cualquier tipo de desarrollador, ya sea aficionado, aut´onomo o una empresa, usar sus mapas sin ning´un tipo de restricci´on. Su principal caracter´ıstica es que da acceso a la base de da- tos subyacente y no unicamente´ a los datos renderizados, por lo que los desarrolladores tienen much´ısima m´as libertad a la hora de crear sus aplicaciones [19].

Google Maps: Esta API desarrollada por Google es la API cuyo uso est´a m´as exten- dido. Su Esta API desarrollada por Google es la API cuyo uso est´a m´as exten- dido. Su versi´on m´ovil viene incluida en el paquete com.google.android.maps del SDK de Android. Aunque hasta hace relativamente poco su uso era gratuito, recientemente Google a˜nadi´o unos l´ımites para su uso: 25000 cargas de mapas diarias y 2500 cargas de mapas modificados. Si nuestra aplicaci´on sobrepasa ese l´ımite Google da la opci´on de pagar por la sobrecarga o adquirir una licencia premium. Es debido a este movi- miento que algunas empresas se est´an replanteando su uso (como Apple, que con la ultima´ versi´on de iPhoto ha cambiado Google Maps por OpenStreetMap) [20].

Bing Maps: Bing Maps es una API desarrollada por Microsoft con el objetivo de ser el sistema Bing Maps es una API desarrollada por Microsoft con el objetivo de ser el sistema principal de mapas en Windows Phone 7, aunque tambi´en disponen de SDK para hacer uso de ellos en Android e iOS. Es una API de acceso gratuito pero tiene diferentes planes de uso seg´un el tipo de usuario y muchas restricciones [21].

CloudMade: Esta API est´a disponible para varios sistemas operativos, entre ellos iOS y RIM BlackBerry, y Esta API est´a disponible para varios sistemas operativos, entre ellos iOS y RIM BlackBerry, y presenta como principal atractivo la posibilidad de customizar los

31

mapas. No tienen una base de datos geogr´aficos propia, sino que utilizan los mapas de OpenStreetMap. Es una API que obliga a tener publicidad en la aplicaci´on (de cuyas ganancias se benefician) o bien, para eliminarla, hacen pagar 0.30 d´olares por cada usuario que la descargue [22].

Nutiteq Map: Nutiteq Map API est´a pensada para plataformas java: Android, J2ME y RIM BlackBerry. Tiene como Nutiteq Map API est´a pensada para plataformas java: Android, J2ME y RIM BlackBerry. Tiene como base los mapas de OpenStreetMap pero tambi´en da la opci´on de usar otros mapas, como CloudMade o Binq. Para poder utilizarla debe comprarse una licencia que cuesta 2000 euros en su versi´on b´asica. Una vez pagada la licencia no hay cargos extra por n´umero de usuarios o cantidad de llamadas a la API

[23].

Map Kit Framework: Esta librer´ıa desarrollada por Apple funciona sobre los servi- cios de Google Maps y es Esta librer´ıa desarrollada por Apple funciona sobre los servi- cios de Google Maps y es la manera m´as simple que tienen los desarrolladores de introducir mapas en las aplicaciones para iOS. Se encuentra en el paquete Map- Kit.framework del SDK de iOS y se basa en el uso de la clase MKMapView, que adem´as de mostrar el mapa te da gran variedad de opciones interesantes, como por ejemplo visualizar en tiempo real la posici´on del dispositivo dentro del mapa sin ne- cesidad de c´odigo extra [15].

2.3. iOS Vs Android

En esta secci´on vamos a analizar los dos sistemas operativos para los que se ha decido rea- lizar la aplicaci´on.

Cuando hablamos de iOS y de Android estamos hablando de los dos sistemas operati- vos con m´as base de usuarios y aplicaciones de todo el panorama smartphones. Desde que fueron lanzados en 2007 y 2008 respectivamente, sus ventas no han hecho m´as que crecer en detrimento de sus competidores.

32

Figura 16: Gr´afico de ventas de dispositivos m´oviles seg´un su SO Como podemos apreciar en

Figura 16: Gr´afico de ventas de dispositivos m´oviles seg´un su SO

Como podemos apreciar en la figura 16 el crecimiento de Android ha sido mucho m´as pro- nunciado que el iOS. Esto se debe fundamentalmente que Android es un sistema operativo instalado en m´as de 200 dispositivos, mientras que iOS naci´o por y para iPhone, aunque m´as adelante su uso se ha portado al iPad, iPod Touch y Apple TV.

Las compa˜n´ıas que encontramos detr´as de ambos sistemas operativos son dos de las em- presas m´as poderosas en el mundo de la tecnolog´ıa. Lo son y lo eran antes de semejante ´exito con los smartphone. Hablamos de Apple en el caso de iOS y Google en el de Android. Que si bien coinciden en el ´exito, ambas tienen filosof´ıas muy diferentes. Google dise˜no An- droid para que fuera un sistema operativo abierto, quer´ıa que cualquier compa˜n´ıa pudiese instalarlo en su tel´efono m´ovil y se sintiese libre de modificarlo seg´un sus necesidades. Por contra Apple desarroll´o iOS pensando exclusivamente en su nuevo dispositivo, el iPhone, que estaba destinado a revolucionar el mundo de la telefon´ıa m´ovil. Y como viene siendo

33

tradicional con todos los productos Apple, cuya pol´ıtica consiste en crear un ecosistema propio, cerrado, basado en la eficiencia, el dise˜no y la facilidad de uso, su nuevo sistema operativo ser´ıa exclusivo y no podr´ıa ser modificado por nadie.

2.3.1.

Lenguajes

Los lenguajes de programaci´on con los que por defecto se trabaja en estos sistemas operati- vos siguen las filosof´ıas de las que habl´abamos antes. Por un lado Objective-C para iOS, que es un superconjunto de C creado a principios de los a˜nos ochenta y que Apple utiliza tanto en el desarrollo de iOS como en el de Mac OS X. Por el otro tenemos Java, que apareci´o a mediados de los noventa con la idea clara de ser un lenguaje multiplataforma, es decir, que un mismo programa pudiese ejecutarse en cualquier tipo de hardware. Como vemos esto casa perfectamente con la idea de Android de ser un SO operativo que pueda funcionar en cualquier dispositivo.

De cara al programador, aunque Java y Objective-C son dos lenguajes orientados a ob- jetos cuya sintaxis se inspira en C, no es en absoluto lo mismo trabajar con ellos. Para empezar la sintaxis, a´un teniendo la misma base, es mucho m´as legible en el caso de Java. Objective-C obliga a emplear largas l´ıneas de c´odigo con car´acteres que no son habituales en la mayor´ıa de lenguajes de programaci´on. Si el programador tiene experiencia previa, debido a la naturaleza multiplataforma de Java, es probable que alguna vez haya trabajado con ´el o al menos est´e familiarizado con sintaxis parecidas. Por contra si el programador no tiene experiencia previa en iOS o Mac OS X, Objective-C ser´a un completo desconocido para ´el y deber´a emplear tiempo en familiarizarse. Adem´as, como Java es un lenguaje muy conocido, resulta m´as sencillo encontrar documentaci´on extra o consultar dudas con otros programadores puesto que la comunidad Java es mayor y hay m´as bibliograf´ıa disponible.

Una de las diferencias fundamentales entre ambos lenguajes es que, mientras que Java se desarroll´o con la idea de resultar m´as sencillo de cara al programador ahorr´andole las tareas

34

de bajo nivel que ten´ıa C, Objective-C, al ser un superconjunto de ´este, las conserva todas. La m´as importante sin duda es el manejo de memoria. Mientras Java se olvida de punteros, de reservar memoria y liberar espacio, dejando todo el trabajo al recolector de basura de turno (el de Android en este caso), Objective-C, puesto que iOS no dispone de ´el, debe lidiar con ello. O deb´ıa, ya que la salida del reciente iOS 5 ha supuesto un gran cambio en este sentido. Sigue sin tener implementado un recolector de basura propiamente dicho, pero tiene un Automatic Reference Counting (ARC). Mientras un recolector de basura pierde recursos del hardware durante el proceso de liberar memoria, el ARC lo que hace es insertar la l´ogica de la gesti´on de memoria dentro del c´odigo durante el proceso de compilado. De esta manera logramos tener la eficiencia que da la gesti´on manual de memoria, sin perder tiempo pensando en ella ni la seguridad que da un recolector de basura, pero sin sacrificar rendimiento por el camino.

Como apunte final, hablando de rendimiento, en general podemos decir que la dupla iOS y Objective-C consigue mejores resultados que Android y Java. Esto de nuevo tiene que ver con sus filosof´ıas. Objective-C es un lenguaje cuyas aplicaciones se compilan directamente en c´odigo ejecutable para el procesador. Esto es posible porque Apple tiene una filosof´ıa cerrada y toda aplicaci´on se ejecutar´a unicamente´ en las CPU que ellos decidan ensamblar en sus dispositivos. Por otro lado, como Android es un SO abierto destinado a multitud de dispositivos diferentes con procesadores igual de diversos, y no es recomendable un sistema que obligue a compilar una aplicaci´on para cada tipo de procesador, decidieron dise˜nar una m´aquina virtual intermedia sobre la cual funcionar´ıan sus aplicaciones. Esto claro tiene un coste en cuanto a rendimiento [24, 25].

2.3.2. Herramientas de desarrollo

Tanto Apple como Google tienen a disposici´on de los futuros desarrolladores un completo SDK y toda la documentaci´on necesaria para configurarlos y empezar de cero. Ambos son accesibles de manera gratuita, pero en el caso de Apple hay una serie de consideraciones

35

que pueden hacer que esa afirmaci´on no sea del todo cierta. En primer lugar, Xcode, que es como se llama el IDE para desarrollar tanto para iOS como para Mac OS X, solo funciona en un ordenador Mac. As´ı pues, si no se dispone de uno, es necesario efectuar un desembolso inicial de al menos 699 euros para comprar uno. Si ya se dispone de un Mac, el siguiente paso es hacerse una cuenta de desarrollador. La versi´on gratuita de esta cuenta permite descargar el SDK y empezar a programar, pero no permite distribuir tus aplicaciones ni testearlas en dispositivos iOS f´ısicos, unicamente´ en el simulador que viene con el kit de desarrollo. La versi´on de pago no tiene estas restricciones y cuesta 99 d´olares al a˜no. Adem´as para poder trabajar con la ultima´ versi´on del SDK y desarrollar as´ı para la ultima´ versi´on de iOS, es necesario tener instalado en el Mac la ultima´ versi´on de Mac OS X. En caso contrario habr´a que comprarlo e instalarlo. Por ultimo´ tambi´en hay que tener en cuenta que para testear tus aplicaciones iOS es necesario disponer en un iPhone, iPad o un iPod Touch, que no son dispositivos baratos, en cambio en Android tienes una gran variedad de dispositivos donde para elegir.

En cuanto al IDE, programar para iOS unicamente´ es posible con Xcode. En cambio Google permite instalar el kit de desarrollo en tu IDE habitual, como por ejemplo Eclipse, NetBeans o IntelliJ IDEA. Adem´as el SDK de Android puede instalarse en Linux, Windows o Mac OS X.

Una vez se est´a listo para desarrollar, cabe decir que Xcode supera en eficiencia y ren- dimiento a cualquier IDE que escojamos para desarrollar en Android. Esto sin duda es debido de nuevo al ecosistema cerrado que envuelve a Apple. Xcode est´a pensado unica-´ mente para Mac OS X que est´a pensado unicamente´ para funcionar sobre un Mac. Esto permite aprovechar mejor el hardware de la m´aquina. La diferencia se vuelve m´as que no- toria cuando se quiere ejecutar tu aplicaci´on sobre el simulador: mientras que el de Android puede tardar cerca de dos minutos en arrancar, el de iOS es mucho m´as inmediato.

36

Finalmente, una vez tenemos la aplicaci´on lista, siempre es recomendable testearla en varios de los dispositivos sobre los que podr´a funcionar. En el caso de iOS esto se reduce a menos de una decena. En cambio en Android, al estar mucho m´as fragmentado, directamente es imposible hacerlo. Esto puede provocar que en alguno de los dispositivos el rendimiento no sea el esperado o que la interfaz gr´afica se vea desajustada en una pantalla de menor tama˜no que la utilizada durante el testeo.

2.3.3. Plataformas de distribuci´on

Apple y Google disponen de su propia plataforma de distribuci´on: App Store y Google Play respectivamente. Como ya se ha comentado, para poder subir aplicaciones a la App Sto- re debers tener una cuenta de desarrollador de Apple que cuesta 99 d´olares anuales. Para Google Play tambi´en se precisa un perfil de desarrollador y pagar una cuota de registro de 25 d´olares.

Los requisitos solicitados durante el proceso de subir aplicaciones es similar en ambas plataformas. Siempre se solicita adjuntar los iconos de la aplicaci´on en una resoluciones determinadas, indicar los idiomas que soporta la aplicaci´on, el nombre de la misma y una breve descripci´on, etc. La diferencia principal es el proceso de validaci´on por el que Apple hace pasar a todas las aplicaciones. Mientras que con Android puedes tener tu aplicaci´on disponible para descargar en cuesti´on de minutos, el proceso de Apple se puede hacer te- diosamente largo. El objetivo de ´este es comprobar que las aplicaciones cumplen una serie de requisitos de calidad y que no pondr´an en uso pr´acticas que comprometan la eficiencia y el buen funcionamiento de iOS [26, 27].

37

Capitulo 3

3. Dise˜no de la aplicaci´on

En este cap´ıtulo veremos la informaci´on relacionada con el an´alisis funcional y la especifica- ci´on de la aplicaci´on, es decir, las tareas m´as relacionadas con la arquitectura del software.

3.1. Requisitos funcionales

A continuaci´on describiremos las funcionalidades de la aplicaci´on desarrollada:

Mostrar en el mapa la posici´on geogr´afica del usuario La aplicaci´on deber´a mostrar en un mapa, siempre que disponga de alguna conexi´on de red, La aplicaci´on deber´a mostrar en un mapa, siempre que disponga de alguna conexi´on de red, la posici´on geogr´afica del usuario y actualizarla en tiempo real. El usuario podr´a manipular el mapa mediante zooms y desplazamientos y volver a centrarse en la posici´on del usuario apretando a un bot´on.

Ubicar en el mapa hornos cercanos La aplicaci´on deber´a mostrar en el mapa, nada m´as cargar la aplicaci´on, todos los hornos La aplicaci´on deber´a mostrar en el mapa, nada m´as cargar la aplicaci´on, todos los hornos que est´an pr´oximos al usuario en un radio de 2 kil´ometros.

Ubicar en el mapa hornos por distancia Existir´a una pantalla donde se podr´a seleccionar en cualquier momento una distancia no mayor de Existir´a una pantalla donde se podr´a seleccionar en cualquier momento una distancia no mayor de 100 kil´ometros y, al presionar un bot´on, se mostrar´an en el mapa todos los hornos que est´en a una distancia del usuario igual o menor a la seleccionada.

Mostrar ruta hasta el horno seleccionado El usuario podr´a seleccionar cualquiera de los hornos mostrados en el mapa y ver la El usuario podr´a seleccionar cualquiera de los hornos mostrados en el mapa y ver la ruta a seguir para llegar hasta a ´el. El punto de inicio de la ruta podr´a ser la ubicaci´on actual del usuario o una direcci´on postal introducida por ´el.

Mostrar lista de hornospunto de inicio de la ruta podr´a ser la ubicaci´on actual del usuario o una direcci´on

38

La aplicaci´on deber´a mostrar en una pantalla el listado de hornos organizado por provincias, comarcas y poblaciones.

Ubicar en el mapa un horno de la lista El usuario podr´a mostrar en el mapa cualquiera de los hornos de la lista de El usuario podr´a mostrar en el mapa cualquiera de los hornos de la lista de manera independiente.

Mostrar datos de inter´es de cualquier horno El usuario deber´a poder consultar en una misma pantalla todos los datos disponibles del horno El usuario deber´a poder consultar en una misma pantalla todos los datos disponibles del horno que seleccione.

Telefonear a cualquier horno de la listatodos los datos disponibles del horno que seleccione. El usuario deber´a poder telefonear al horno que

El usuario deber´a poder telefonear al horno que seleccione sin marcar su n´umero de

tel´efono, unicamente´

presionando un bot´on.

3.2. Requisitos no funcionales

Siguiendo el esquema del apartado anterior, en este punto detallaremos los requisitos no funcionales.

Versi´on del sistema operativo La aplicaci´on deber´a funcionar en todos los dispositivos Android que tengan instalada la versi´on 2.3.3 La aplicaci´on deber´a funcionar en todos los dispositivos Android que tengan instalada la versi´on 2.3.3 (o superior) del sistema operativo. En dispositivos iPhone, la aplicaci´on deber´a funcionar en todos aquellos que tengan la versi´on 5.0 de iOS, o superior.

Acceso a la aplicaci´on La aplicaci´on deber´a poder descargarse gratuitamente desde las plataformas de dis- tribuci´on oficiales de Google La aplicaci´on deber´a poder descargarse gratuitamente desde las plataformas de dis- tribuci´on oficiales de Google y Apple: Google Play y App Store respectivamente.

Idioma La aplicaci´on deber´a estar disponible al menos en catal´an. La aplicaci´on deber´a estar disponible al menos en catal´an.

Lenguaje de programaci´onGoogle Play y App Store respectivamente. Idioma La aplicaci´on deber´a estar disponible al menos en catal´an.

39

La aplicaci´on Android estar´a desarrollada en Java, mientras que la versi´on para iOS estar´a desarrollada en objective-C.

Tiempos de carga Con el fin de hacer que la aplicaci´on sea los m´as ´agil posible, se minimizar´an Con el fin de hacer que la aplicaci´on sea los m´as ´agil posible, se minimizar´an los tiempos de carga. Esto implica reducir sobre todo los accesos a la base de datos y al fichero pList que contiene la informaci´on de los hornos.

Aplicaci´on de mapas Para poder indicar las rutas, el dispositivo m´ovil deber´a tener instalada la aplicaci´on de mapas Para poder indicar las rutas, el dispositivo m´ovil deber´a tener instalada la aplicaci´on de mapas que viene por defecto en el sistema operativo.

Tarjeta SIM Para poder hacer uso de la funci´on de telefonear a los hornos, el dispositivo m´ovil Para poder hacer uso de la funci´on de telefonear a los hornos, el dispositivo m´ovil deber´a tener insertada una tarjeta SIM operativa.

3.3. Diagrama de estados

En este apartado vamos a mostrar una serie de diagramas de estado que se han hecho para detallar el comportamiento de las funcionalidades b´asicas, de las diferentes pantallas y la navegaci´on entre ellas.

3.3.1. Inicio de la aplicaci´on

A continuaci´on detallamos los procesos que la aplicaci´on lleva a cabo cuando empieza a ejecutarse.

40

Cargar BBDD Error [Si es la primera vez] [Si localización no disponible] Inicializar Pantalla Mapa
Cargar BBDD
Error