Mostrando entradas con la etiqueta municipios. Mostrar todas las entradas
Mostrando entradas con la etiqueta municipios. Mostrar todas las entradas

lunes, 4 de mayo de 2020

Localización de municipios de España, Palencia y Burgos, con precisión


JAVA
Coordenadas en un mapa
Localización de municipios
Mapa de España
Mapas de Palencia y Burgos con precisión

En el anterior programa había realizado un localizador de municipios en un mapa.
El mapa era general de España, por lo que la precisión no era demasiado exacta.
En esta ocasión utilizo un mapa con una escala de 1 : 2.000.000 , lo que implica bastante más precisión.


Programa localizador de municipios de España.

Como aún no estaba contento con la precisión, me puse manos a la obra, y capture de Google Maps los mapas de Palencia y Burgos como práctica.
Es bastante tedioso el copiar muchas fotos de planos de Google Maps y juntarlas en una, pero me lo tomé como reto.
El motivo de usar las provincias de Palencia y Burgos es debido a que en una nací, y en la otra resido.


Programa localizador de municipios de Burgos.


Programa localizador de municipios de Palencia.

Los programas de la provincia son muy precisos al tener una gran exactitud  los mapas de Google.
El que quiera puede hacer su propio mapa, lo más difícil es digitalizar el mapa.


PROGRAMA conProyecto netBeans

PROGRAMA_EXE

Saludos.
Juan Galaz


Bibliografía.

https://www.google.es/maps

jueves, 30 de abril de 2020

JAVA - Coordenadas en un mapa Localización de municipios


JAVA
Coordenadas en un mapa
Localización de municipios

En esta ocasión junto los dos anteriores programas:
Coordenadas en un mapa. MAPA
Municipios de España. MUNICIPIOS
Teníamos una base de datos con todos los municipios españoles, en esta base de datos venían las coordenadas de latitud y longitud.
Con esa información de coordenadas, las transformamos en pixel de pantalla, donde dibujamos un cuadrado.

También tenemos que tener en cuenta que la tierra no es plana, y los mapas no son demasiado precisos, por lo cual la traslación de las coordenadas grados decimales a pixel de pantalla, no son lo exactas que deberían ser.
Si la escala del mapa es grande, el error será grande.

Debo pedir perdón a los de las islas Canarias, debido a que el programa debía de ser simple, no están implementadas las islas.
Los grados que proporciona el programa son decimales, son los más fáciles de entender, además son los que utiliza Google Maps.
Como la base de datos de municipios es antigua, los datos de habitantes no serán demasiado exactos.


Programa funcionando.



PROGRAMA conProyecto netBeans

PROGRAMA_EXE

Saludos.
Juan Galaz


domingo, 19 de abril de 2020

JAVA - Municipios de España


JAVA
Municipios de España

En mi intento de coger el gusto al Java, y mira que le pongo ganas, sigo con un anterior programa realizado para android,  androj.html .
Este programa es una especie de base de datos que busca los municipios de España.
El fichero con la base de datos de municipios se llama municipios0.txt que se incluye en el propio programa dentro de la carpeta de recursos internos llamada datos.
En esta carpeta interna  datos, incluyo también un icono de representación del programa, y un fondo para que quede más estético el programa.
Al no saber mucho de Java, y provenir de C o Basic, el manejo de ficheros se hace de lo mas lioso.
En Java necesitas abrir un descriptor de ficheros FileReader , y un BufferedReader . En C con openFile vale, se pensarán los diseñadores de Java que los sistemas operativos no tienen como mínimo dos buffer para que el acceso sea rápido, además de el de el propio disco.
También te obligan a comprobar con try que la operación no tuvo errores.
Otras de las sorpresas que tuve y que me llevo tiempo encontrar el error fue la función substring.
Esta función extrae un trozo de una cadena, en mi caso era xtmp=tmp.substring(0,25); , para que los campos largos me los acortara.
El problema era que unas veces me funcionaba y otras no. Estuve tiempo hasta que descubrí que no comprobaba el tamaño de la cadena de origen. Entonces para que sirven los String, si en cosas como esta no comprueban el tamaño.
Tuve que solucionarlo con: int z=tmp.length();         if(z>25) z=25;         xtmp=tmp.substring(0,z); .
Creo a mi parecer que en Java se complican demasiado utilizando para todo herencias y clases. Pero esto es lo que hay.
Pero dejémonos de quejas sobre Java y continuemos.

He realizado dos programas que hacen lo mismo.
El primero utiliza referencias para colocar los diferentes elementos gráficos en la ventana principal.
El segundo utiliza coordenadas absolutas para colocar los elementos gráficos. Esto es debido a que quería colocar un fondo en la aplicación para que quedara más estética. También  implica utilizar absolutelayout que debes incluir en el programa.
El botón de Maps solo funciona en Linux, debido a que abre el navegador firefox con la coordenadas, en Windows se podrá hacer, pero lo he dejado como tarea para otros.



Normal.
Con absolutelayout y fondo.

Está realizado en Debian9_32bits comprobado en Windows10_64bits , Windows7_32bits, WindowsXP y Debian10 64bits, .


PROGRAMA


Saludos.
Juan Galaz


jueves, 9 de junio de 2016

wxMunicipios wxwidgets

09/06/2016 - wxMunicipios
Había realizado un programa para buscar los municipios, en primer lugar lo había realizado para Android, luego lo hice en Gambas (vb linux) , y como hacia tiempo que no había realizado nada en wxwidgets, y antes de que se me olvidase, me puse manos a la obra.
Lo que me satisface más, es el poder compilar para las dos plataformas, Linux o Windows, con solo cambiar la directiva YesWindows 0 por #define YesWindows 1 en el fichero define.h  .

Programas de linux y windows

Windows
 


















Linux

miércoles, 25 de mayo de 2016

Municipios de España - Gambas

Página principal



Municipios de España
Gambas

xsetaseta@gmail.com


Había realizado una aplicación para android que buscaba municipios de España androj.html.
En gambas debía ser también sencillo  de hacer, y me puse manos a la obra.



Programa

Saludos.
Juan Galaz


jueves, 19 de mayo de 2016

ANDROID - Municipios de España - openRawResource


Android

ANDROID
Municipios de España
openRawResource

En esta aplicación para android realizo una especie de base de datos que busca los municipios de España.
No estoy muy orgulloso de esta aplicación pero hace su función de enseñar como se utiliza datos insertados en la propia aplicación.
Estos datos de municipios se colocan en el directorio /res/raw ,y solo son de lectura. El fichero con la base de datos de municipios se llama municipios0.txt , debemos tener en cuenta que a la hora de utilizar los recursos internos, la extensión no se utiliza.
La base de datos la he pasado a mayúsculas y quitado los acentos. Lo he hecho debido a que la búsqueda es secuencial y lenta, además de que normalmente en los dispositivos android es lento añadir acentos y cambiar de minúsculas a mayúsculas.

Vamos a intentar explicar  este pequeño trozo de código de la función Fbuscar.
Lo primero es coger el texto del municipio a buscar y cambiarlo a mayúsculas .
  miclave=Mclave.getText().toString();       
  miclave=miclave.toUpperCase();
  Mclave.setText(miclave);  
Utilizamos try para manejar los error de abrir ficheros.
Abrimos el fichero y utilizamos un buffer para aumentar la velocidad de acceso al fichero.
  ISentrada=getResources().openRawResource(R.raw.municipios0);
   BFentrada=new BufferedReader(new InputStreamReader(ISentrada));
Leemos una por una todas las líneas del fichero.
Troceamos cada línea separando por el carácter ":" .
Si la segunda cadena que ha salido del troceo contiene la cadena a buscar miclave , se para la busqueda y se muestra.
    while ((Sentrada=BFentrada.readLine()) != null)
      {
      String SentradaT[]= Sentrada.split(":");
      if(SentradaT[2].contains(miclave)) {Mostrar(); break;}
      }
public void Fbuscar(View view)
    {        
        miclave=Mclave.getText().toString();       
        miclave=miclave.toUpperCase();
        Mclave.setText(miclave);     
        Contar();    
       
        try
        {
            if(ISentrada != null)    ISentrada.close();
            ISentrada=getResources().openRawResource(R.raw.municipios0);
            BFentrada=new BufferedReader(new InputStreamReader(ISentrada));
           
            while ((Sentrada=BFentrada.readLine()) != null)
            {
            String SentradaT[]= Sentrada.split(":");
            if(SentradaT[2].contains(miclave))         {Mostrar(); break;}
            }
           
        }
        catch (IOException e)
        {
            Log.e("Municipios->",e.getMessage(),e);
        }       
    }


Me hubiera gustado no tener que abrir y cerrar el fichero para volver a la posición inicial, pero no he encontrado la función seek(0) para recursos internos, no se si existe o no. Esto hace al programa poco eficiente, pero funciona bien :( .


PROGRAMA

Saludos
Juan Galaz


Bibliografía:
http://android.okhelp.cz/java_android_code.php?s=openRawResource
http://www.programmershare.com/1333689/

ANDROID 4: DESARROLLO DE APLICACIONES (En papel)
ISBN 9788441531970
WEI MENG LEE , ANAYA MULTIMEDIA, 2012

EL GRAN LIBRO DE ANDROID (3ª ED.) (En papel)
ISBN 9788426719768
JESUS TOMAS GIRONES , S.A. MARCOMBO, 2013