Verificar si un punto esta dentro de un poligono en postgis

Si Postgis no existiera esto seria un poco complicado,  ok.. la tarea es la siguiente en mi base de datos tengo unas cercas que no son mas que unos poligonos, y necesitaba saber si el punto que lanzaba desde un gps al sevidor  esta dentro de el poligono o fuera, Postgis nos da una funcion llamanda ST_CONTAINS  que nos permite ver si un punto esta dentro de un poligono, esta funcion recibe dos parametros que son del tipo GEOMETRY :

ST_CONTAINS(geometry, geometry)

el primer parametro es el poligono y el segundo es el punto. y listo ya sabemos si el punto esta dentro del poligono, ok ahora tengo un ejemplo el cual es una funcion que  solo verifica si el punto enviado esta dentro de una geocerca ya almacenada en la base de datos (ojo que es un ejemplo hardcode) ya ustedes lo pueden modificar de acuerdo  a lo que necesitan:


CREATE OR REPLACE FUNCTION in_polygon()
-- retorna un booleano true si esta dentro y false si esta fuera
RETURNS boolean AS
$$
DECLARE
--se declara una variable que almacenara el poligono que se sacara de la base de datos
v_geom geometry;
-- la variable de respuesta
v_result BOOLEAN ;
BEGIN
-- se saca el poligono de la tabla geofence
v_geom := (SELECT geo.geom from geofence as geo where id_geofence = 18);
--y se usa la funcion de postgis
v_result := (SELECT ST_Contains(v_geom, GeomFromText('POINT(-65.9667 -17.474)',4326)));
RETURN v_result;
END;
$$
LANGUAGE plpgsql VOLATILE

ya ustedes pueden aumentar parametros a la funcion , condiciones, ect.

espero que les sirva

Instalando Eclipse y Android SDK

Hace un tiempo que ando metido en esto de android..y decidí hacer una serie de post para quienes están iniciando en este maravilloso mundo.. Al empezar a desarrollar sobre cualquier tecnología siempre  es un poco complicado entender algunas cosas, pero gracias  a San Google y el internet todo resulta mas fácil, en internet existen muchos tutoriales de como instalar o configurar nuestro propio entorno de desarrollo para programar aplicaciones Android, y siempre  es mejor que sobre a que falte, por eso decidi realizar un tutorial  de como configurar nuestro entorno de desarrollo para Android.

Nota: el tutorial esta bajo  el sistema operativo Windows 7..pese que yo utilizo una mac  😉

MANOS A LA OBRA

1. – Primero que nada tenemos que tener instalado java en nuestra maquina. me salto este paso por que no es el motivo     principal del tutoria.. en internet existen muchos  tutoriales acerca del tema.

2.-   Descargarnos el IDE Eclipse, lo hacemos desde el siguiente link :  Eclipse.

3.- Descargamos el Android SDK del siguiente link: Android SDK.

4.- Ok, Ahora solo resta instalar y configurar nuestro entorno!!!

Para poder desarrollar en eclipse  es necesario instalarnos el plugin de android (Android ADT),En Eclipse tenemos que dirigirnos  a Help>Install New Software,  como se ve a continuación:

posteriormente se mostrara una ventana donde se agragano actualizan los plugnis instalados en eclipse,  en el cual se vera el botón con el nombre  “Add”, le damos click en el botón y se abrira una ventana donde se agrega la URL de donde se descargara el ADT como se ve  a continuación:

en el campo “Name”  podemos poner cualquier nombre..en mi caso puse un nombre que identifiqur al plugin “ADT – plugin”, en el campo “Location”  escribimos la url de donde se descargara el plugin, tenemos dos opciones:

Recomiendo la segunda URL para no tener problemas.

Después  de agregar la URL  se mostara la lista de plugins en el cual seleccionamos la primera opcion (Developer Tools),  la segunda opcion es el plugin de android para desarrollar aplicaciones escritas en C/C++.

luego aceptamos la licencia..y nos vamos a tomar un café mientras instala el plugin, nos pedira reiniciar eclipse lo reiniciamos y luego de reiniciarlo nos saldra uan ventana como se muestra a continuacion, donde nos pide la direccion de nuestro Android SDK.

Aca tenemos dos opciones, una es la primera la cual nos descargara el Android SDK, pero como nosotros nos descargamos el sdk de android lo que hacemos es descomprimir en cualquier directorio o instalar si te bajaste el .exe , seleccionar la segunda opcion “Use existing SDKs”, y le damos la ruta donde descomprimimos el Android SDK.

una ves ya instalado de manera correcta nuestro entorno en la barra superior veremos los dos botones que se muestran a continuación:

El icono de la izquierda(rojo) es el botón que nos abre el SDK Manager con el cual nos descargamos las apis de android, y el de la derecha (Azul) abre el Android Virtual Device Manager…. en el cual podemos crearnos dispositivos virtuales para probar nuestras aplicaciones.

Espero que les sirva este post…si lo usaron no se olviden comentar….

Instalando Postgis en Mac OS Lion

Hace unas semanas adquiri una nueva computadora, es una MacBook Pro, que se las recomiendo mucho a todos si es que trabajan con tecnologias libres mejor dicho con tecnologias que no son Windows (Java, PHP, Python, etc.), aunque ahora si se puede tener instalado Windows en una Mac, pero es un poco ridiculo adquirir una Mac y ponerle Windows, el caso es que me puse la tarea de instalarle todo lo que un developer necesita (Postgres), y como dice el titulo de este post quize instalar postgis en mac os, pero fue grande la sorpresa!!!…. descargue el instalador de postgres 9.1 para mac despues de instalarlo inicie la aplicacion Application Stack Builder seleccione postgis 1.5, pero despues de descargar el instalador este no se ejecutaba..como en algun momento vi que lo hacia bajo Windows 7.

Entonces despues de navegar, leer un monton de posts y articulos, encontre la solucion:

Primero que nada es un bug de Stack Builder el hecho de que no se instale, la soluion es sencilla: tenemos que ubicar donde es que stack builder descaro el instalador para hacer correr de manera manual por consola(Terminal) y con permisos de super usuario que si no, no se podra ver lo que esta dentro la carpeta “T” , en mi caso estaba en:

/var/folders/gz/jx9m7c211hjgzn51vv9zxjgm0000gm/T/

Ahi encontraran el .zip de postgis que es : edb_postgis_1_5_pg91.app.zip , una vez ubicado, la siguiente tarea es la de descomprimir con el comando:

unzip edb_postgis_1_5_pg91.app.zip
y esto descomprimira un .app postgis-pg91-1.5.3-1-osx.app el siguiente paso es ejecutar el instalador con el comando:
open postgis-pg91-1.5.3-1-osx.app/

ok, y listo tendremos instalado postgis 1.5 en Mac OS Lion.

Instalacion basica de Tomcat 6 en ubuntu server 10.10

Como parte de mi proyecto de grado necesitaba tener un servidor corriendo con apache tomcat,  puesto que mi proyecto se basa en una aplicacion web(ICEFaces +Gmaps4JSF y por ahi un servlet suelto ) y tambien movil..pero eso es harina de otro costal(despues posteo el uso de esas tecnologias )..el punto es que  necesitaba instalar apache tomcat y empeze mi travesia y he aqui el resultado:

nota: lo hice desde windows 7  haciendo uso de Putty para acceder al server 😉

primero necesitamos tener instalado jdk1.6 pero para verificar si lo tenemos simpplemente en la consola ponemos:

  • dpkg -–get-selections | grep sun-java

Si nos sale el mismo resultado andamos bien, si no fuera el caso simplemente ponemos en nuestra consola:

  • sudo apt-get install sun-java6-jdk

y con eso se instalara java, despues  para verificar si se instalo correctamente una vez mas ponemos en nuestra consola:  java –version

siendo este el resultado:

bueno una vez verificado esto solo nos resta instalar apache tomcat y escribimos esto en la consola:

  • sudo apt-get install tomcat6 tomcat6-admin tomcat6-common tomcat6-user tomcat6-docs tomcat6-examples

bueno despues de eso ya tendremos instalado  tomcat ahora solo resta modificar una cuantas cosas…..editar el archivo tomact-users.xml, por comodidad para no tener que estar escribiendo a cada momento “sudo” ,prefiero entrar como super usuario, para los que no conocen el comando ..es este ” sudo su” les pedira la contraseña y listo seremos superusuario..bueno entonces una vez  logeado como super usuario escribimos lo siguiente en la consola:

  • nano /etc/tomcat6/tomcat-users.xml

y tendremos en pantalla  el archivo tomact-users.xml

hecho esto buscamos lo siguiente:

como vemos esto esta comentado..tenemos que descomentar y cambiar de la siguinete manera:

obviamente  cambiamos el username y el password 😉

bueno despues para probar todo esto desde un navegador ponemos la siguiente direccion:

si estamos en la misma maquina: http://localhost:8080 y si no: http://ipdel server:8080

y deveria salir en el navegador lo siguiente:

para  verificar  los cambios que hicimos en el archivo /etc/tomcat6/tomcat-users.xml damos clik en ,manager webapp y nos deberia salir  un popup donde nos pida el username ,el password y posteriormente tendremos la vista del manager de tomcat

algunos comandos para tomcat :

  • Iniciar   tomcat :  sudo /etc/init.d/tomcat6 start
  • Detener  tomcat:     sudo /etc/init.d/tomcat6 stop
  • Reiniciar tomcat:     sudo /etc/init.d/tomcat6 restart
  • ver el estado  tomcat:     sudo /etc/init.d/tomcat6 status

y si quisieramos cambiar el puerto 8080 al puerto 80 solo editamos el archivo /etc/tomcat6/server.xml con el comando:

  • nano /etc/tomcat6/server.xml

y buscamos los siguiente:

Y cambiamos el 8080 por 80 y luego lo guardamos..y despues reiniciamos con el comando:   sudo /etc/init.d/tomcat6 restart

y listo ya tenemos instalado y configurado  tomcat en nuestro servidor, en este caso ubuntu server.. a mi me funciono de esta manera….Facil no? 😉


Obtener el IMEI con J2ME

Desde hace tiempo andaba buscando por la web la forma de obtener al IMEI de un movil atravez de J2ME y  despues de ver algunos lugares ( por no decir …….. perder el tiempo leyendo varios blogs que no tenian  una buena informacion ).
encontre una respuesta en esta pagina, ojo que esta en ingles..y para los que les da flojera traducir aqui le dejo una pequeña explicacion de esto:para nuestra mala suerte  no hay una forma  standar de conseguir el  imei, ademas no en todos los dispositivos es posible obtener el numero de imei  ,  es depende del fabricante  de dispositivo, veamos el codigo para  algunos dispositivos:

  • Siemens: System.getProperty(“com.siemens.IMEI”);
  • Samsung: System.getProperty(“com.samsung.imei”);
  • SonyEricsson: System.getProperty(“com.sonyericsson.imei”);
  • Motorola: System.getProperty(“IMEI”);    ó  System.getProperty(“com.motorola.IMEI”);
  • Nokia: System.getProperty(“com.nokia.mid.imei”)

yo tuve la oportunidad de probarlo en dos marcas:  nokia (5800) y  sonny ericsson(w760i) , todo salio bien 🙂 obtuve los respectivos IMEI’s

si alguien lo prueba con otras marcas comenten contando como les fue …

Empezando a compartir las experiencias

Hace unos dias me tope con un problema al momento de desarrollar una aplicacion movil para Blackberry (valga la aclaracion  que actualmente me estoy decicando a desarrollar aplicaciones para dispositivos moviles con j2me) y despues de navegar mucho por la web buscando la solucion a mi problema no encontre nada , asi que decidi leer muy bien la documentacion que esta en la pagina de blackberry encontre una buena solucion y bueno despues pense que muchas personas en el mundo tienen el mismo problema (talvez ), entonces pense: por que no compartir estas experiencias talvez a alguien le sea de mucha utilidad …asi que decidi crear este blog …espero que les sirva lo que  ire publicando  respecto a desarrollo movil, web y en fin todo lo relacionado  a  la informatica……….:-)