Documento Técnico

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 10

DOCUMENTO TECNICO

1. Libraries usadas.

Las libraries son un paquete de clases hechos por la corporacion JAVA que sirven para facilitar el
manejo del software, además de la inplementacion y creacion de programas. JDk es un paquete
que contiene estos elementos y permite el desarrollo de un programa, ya que estas clases que
se ejecutan y utilizan ya fueron creadas para simplificar las tareas del usuario. Las librerías que
utilizamos comúnmente se les denominan biblioteca estándar de java.

Las librerías que fueron usadas para este proyecto son las siguientes:

a. ava.awt.event.ActionEvent y java.awt.event.ActionListener: Proporciona las interfaces y las


clases para ejecutar diferentes tipos de eventos activados por los componentes de AWT.

ActionEven: Activa un evento de tipo bonton.

ActionEven: Activa en evento del botón para que al ser pulsado se ingrese a una determinada
accion.

b. java.io.File: Provee para la entrada y salida del sistema a través de los datos enviándonos al
sistema de archivos.

c. java.io.IOException: Este es similar al anterior, pero crea una excepción cuando existen
elementos ingresados por el usuario que no son correctos.

d. java.util.ArrayList: Contiene el marco colecciones, clases antiguas de colección, modelo de


evento, fecha y hora de las instalaciones y la internacionalización (una cadena tokenizer, un
generador de números aleatorios, y una matriz de bits).

e. java.util.logging.Level: Contiene el marco colecciones, clases antiguas de colección, modelo


de evento, fecha y hora de las instalaciones (una cadena tokenizer, un generador de números
aleatorios, y una matriz de bits).

f. java.util.logging.Logger: Proporciona las clases y las interfaces de las instalaciones de la


plataforma Java ™ 2 tala centrales.

g. javax.swing.: Proporciona un conjunto de componentes que permite el trabajo de todas las


plataformas

h. javax.swing.filechooser.FileNameExtensionFilter y import javax.swing.WindowConstants:


Contiene clases e interfaces utilizadas por el componente JFileChooser.

UNIVERSIDAD DISTRITAL FRANCISCO JOSE DE CALDAS 1


Los siguientes proporciona la asignación de las API de GEOTOOLS para el lenguaje de
programación Java ™.

i. org.geotools.data.FileDataStore:

j. org.geotools.data.FileDataStoreFinder;

k. org.geotools.data.simple.SimpleFeatureSource;

l. org.geotools.map.DefaultMapContext;

m. org.geotools.map.MapContext

n. org.geotools.swing.JMapFrame

2. Funcionamiento de la clase principal para Geotools

a. Se declara la clase principal Geotools, siendo esta la base del programa.

public class Geotools{

b. Se declaran los arreglos los cuales son conjunto de objetos de la misma clase.

El primero de ellos contera los objetos pertenecientes a las capas existentes debido a que el array
es un objeto nos permite almacenar elementos dinámicos podemos darle la dimensión de
deseemos, posterior mente se declarara la clase arraylist en la cual especificamos el tipo de datos
que contendrá.

static String Array[] = new String[5];//arreglos para el numero de shp que tenemos

static ArrayList<String> nombresCapas = new ArrayList();

c. Almacena la información de contexto sobre una pantalla de mapa.

private static MapContext map;

d. Este metodo sirve para adicionar por medio del JFrame un ventana en la cual se
introducirán botones, en nuestro caso JMapFrame servirá para contener mapas que
podrán ser cargados por el usuario.

private static JMapFrame mapFrame;

e. Se declara la variable publica llamada AcercaDe en a que podremos ingresar a las


descripción del programa y los Nombres de los autores.

UNIVERSIDAD DISTRITAL FRANCISCO JOSE DE CALDAS 2


static public AcercaDe acercaDe;

f. Se declara el método main a partir del atributo public static, donde void nos está
indicando que no retorna ningún valor y String args definirá los argunetos que recibe este
método, dentro del main se ejecutara la parte principal y mas significativa del código.

public static void main(String[] args) throws IOException

g. Se gerena un Array que se llamara nombresCapas y a continuación se declaran los


objetos de escucha Listener los cuales pertenecen a los botones exportar, eliminar,
adicionar consultar , ayuda y salir.

ArrayList nombresCapas = new ArrayList();

ListenerExportacion listExport = new ListenerExportacion();

ListenerEliminar listEliminar = new ListenerEliminar();

ListenerAdicionar listAdicionar = new ListenerAdicionar();

ListenerConsultar listConsultar = new ListenerConsultar();

ListenerAyuda listAyuda = new ListenerAyuda();

ListenerSalir listSalir = new ListenerSalir();

h. Se crea la barra de menú por medio del componente JMenuBar

JMenuBar menuBar;

i. Este componente se crea para poder acceder a la barra de menú al complemento archivo
permitiendo así un acceso más fácil y organizado.

JMenu menuArchivo, menuAyuda;

j. El J menuItem funciona para que al ser pulsado genere un evento el cual abre una
ventana y pide los datos de dicho evento, este elemento es muy útil para acceder a las
acciones del programa de una forma rápida desde la venta inicial del programa.

JMenuItem adicionarItem, borrarTodasItem, exportarItem, acercaDeItem, salirItem;//

k. Se crea la barra de menú

menuBar = new JMenuBar();

UNIVERSIDAD DISTRITAL FRANCISCO JOSE DE CALDAS 3


l. Se construyen los menus que se presenta en la barra de herramientas y que el usuario
podrá utilizar para acceder a las opciones del programa.

menuArchivo = new JMenu("Archivo");

menuAyuda = new JMenu("Ayuda");

menuBar.add(menuArchivo);

menuBar.add(menuAyuda);

m. En este paso se crean los ítems que se van a usar para el menú y se asocian al evento de
escucha (Listener)

adicionarItem = new JMenuItem("Adicionar");

adicionarItem.addActionListener(listAdicionar);

borrarTodasItem = new JMenuItem("Borrar Todas");

borrarTodasItem.addActionListener(listEliminar);

exportarItem = new JMenuItem("Exportar");

exportarItem.addActionListener(listExport);

salirItem = new JMenuItem("Salir");

salirItem.addActionListener(listSalir);

n. Se añadem los item al menú.

menuArchivo.add(adicionarItem);

menuArchivo.add(borrarTodasItem);

menuArchivo.add(exportarItem);

menuArchivo.add(salirItem);

ñ. Se crean los items del menu Ayuda el cual contendrá un objeto que se denomina AcercaDe

acercaDeItem = new JMenuItem("Acerca de");

acercaDeItem.addActionListener(listAyuda);

UNIVERSIDAD DISTRITAL FRANCISCO JOSE DE CALDAS 4


o. Se añade el item AcercaDe a la herramienta ayuda

menuAyuda.add(acercaDeItem);

p. DefaulMapContext proporciona una implementación de un contexto de omisión a una


conexión a un mapa

map = new DefaultMapContext();

q. Se crea el titulo que tendra la aplicacion

map.setTitle("APLICACION GEOTOOLS PARA CARTOGRAFIA");

r. Se crea la ventana en la cual se visualizara toda la aplicación solo abra una ventana de
este tipo, además se dimensiona el tamaño que tendrá la venta por medio de la función
setsize. También se utilizan métodos como setJMenuBar que recoge la acción que realice
el usuario y enable nos permite en enlace a una barra de herramientas

mapFrame = new JMapFrame(map);

mapFrame.setJMenuBar(menuBar);

mapFrame.enableToolBar(true);

mapFrame.enableStatusBar(true);

mapFrame.enableLayerTable(true);

mapFrame.setSize(1200, 700);

mapFrame.setVisible(true);

JToolBar toolBar = mapFrame.getToolBar();

s. Creamos los botones que estaran en la barra de herramientas para un acceso mas rapido
y les asignamos una imagen acadauno

JButton adicionarJB = new JButton("", createImageIcon("img/añadir.png"));

adicionarJB.setToolTipText("Adicionar capas");

JButton removerJB = new JButton("", createImageIcon("img/borrar.png"));

removerJB.setToolTipText("Eliminar todas las capas");

JButton consultarJB = new JButton("", createImageIcon("img/informacion.png"));

consultarJB.setToolTipText("Consultar información de la capa");

UNIVERSIDAD DISTRITAL FRANCISCO JOSE DE CALDAS 5


JButton exportarJB = new JButton("", createImageIcon("img/exportarSQL.png"));

exportarJB.setToolTipText("Exportar capa a SQL PostGIS");

t. A los botones creados se le se les asocia el evento de escucha que por medio de la
pulsación del mouse sobre el nos ingresara a la opción deseada.

adicionarJB.addActionListener(listAdicionar);

removerJB.addActionListener(listEliminar);

consultarJB.addActionListener(listConsultar);

exportarJB.addActionListener(listExport);

u. Se agrega un espacio en la barra de herramientas entre cada botón y los adiciona a la


barra de herramientas

toolBar.addSeparator();

toolBar.add(adicionarJB);

toolBar.add(removerJB);

toolBar.add(consultarJB);

toolBar.add(exportarJB);

v. La siguiente linea hace que la imagen que se utilize este protegida y estatica , se indica la
dirección donde se encuentra almacenada dicha imagen y se hace un condicional donde
se especifica que la imagen debe estar en ese archivo.

protected static ImageIcon createImageIcon(String path) {

java.net.URL imgURL = Geotools.class.getResource(path);

if (imgURL != null) {

return new ImageIcon(imgURL);

} else {

System.err.println("Couldn't find file: " + path);

return null

w. En esta clase se crea el metodo para el boton exportar y se llama a la accion de escucha

UNIVERSIDAD DISTRITAL FRANCISCO JOSE DE CALDAS 6


public static class ListenerExportacion implements ActionListener {

public void actionPerformed(ActionEvent e) {

x. Se crea el metodo para el boton adicionar, este método responderá a la acción de


clikpara un determinado evento, se declara un contador que se iniciara en cero y
posteriormente tomara los valores que contiene el archivo(file) ya que se hace un filtro
para que el solo tome los archivos con extencion .SHP.

SE abre un fichero por medio de la opción JFileChooser este nos muestra los archivos que
contiene por medio de métodos útiles que permiten esta acción. Postriormete recoge los
archivos que se encuentran dentro del fichero, elimina la opción que permite escoger
cualquier tipo de archivo.

Esta ultima se define en esta línea de código


chooser.setAcceptAllFileFilterUsed(false);

Abre la ventana de dialogo y muestra cada layer existente en el fichero como lo vemos en
la imagen.

public static class ListenerAdicionar implements ActionListener {

public void actionPerformed(ActionEvent e)

int contador = 0;

UNIVERSIDAD DISTRITAL FRANCISCO JOSE DE CALDAS 7


FileNameExtensionFilter filtro = new FileNameExtensionFilter("Solo archivos Shapefiles",
"Shp");

JFileChooser chooser = new JFileChooser();

File[] file;

chooser.setMultiSelectionEnabled(true);

chooser.setFileFilter(filtro);

chooser.setAcceptAllFileFilterUsed(false);

chooser.showOpenDialog(mapFrame);

if (chooser.showOpenDialog(mapFrame) == JFileChooser.APPROVE_OPTION) {

file = chooser.getSelectedFiles();

y. Posteriormente es llamado la clase en la que se realizara la acción de adicionar capas


con un color aleatoreo esta clase la denominamos esimbologia , dentro de ella se
encuentra el método para que se pueda realizar este proceso

for (int i = 0; i < file.length; i++) {

try {

nombresCapas.add(file[i].getName());

FileDataStore store = FileDataStoreFinder.getDataStore(file[i]);

SimpleFeatureSource featureSource = store.getFeatureSource();

esimbologia colores = new esimbologia();

map.addLayer(featureSource, colores.createPolygonStyle());

Array[contador] = String.valueOf(featureSource.getName());

System.out.println(featureSource.getName());

catch (IOException ex) {

Logger es el acceso a Geotools

Logger.getLogger(Geotools.class.getName()).log(Level.SEVERE, null, ex);

z. Creacion de los metodos eliminar, consulta, salir y ayuda

UNIVERSIDAD DISTRITAL FRANCISCO JOSE DE CALDAS 8


public static class ListenerEliminar implements ActionListener {

public void actionPerformed(ActionEvent e)

while (map.getLayerCount() > 0) {

map.removeLayer(map.getLayer(0));

}}}

public static class ListenerConsultar implements ActionListener {

public void actionPerformed(ActionEvent ae) {

ExportarJF consulta = new ExportarJF();

consulta.setVisible(true);

consulta.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);

}}

public static class ListenerSalir implements ActionListener {

public void actionPerformed(ActionEvent ae) {

System.exit(0);

}}

public static class ListenerAyuda implements ActionListener {

public void actionPerformed(ActionEvent ae) {

acercaDe = new AcercaDe();

acercaDe.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);

acercaDe.setVisible(true);

UNIVERSIDAD DISTRITAL FRANCISCO JOSE DE CALDAS 9


BIBLIOGRAFIA

http://commons.apache.org/jexl/apidocs/org/apache/commons/jexl2/MapContext.html

http://udig.refractions.net/files/docs/api-geotools/org/geotools/map/MapContext.html

http://users.dcc.uchile.cl/~lmateu/Java/Apuntes/hello.htm

http://docs.geotools.org/latest/userguide/tutorial/filter/query.html#connect-to-datastore

http://download.osgeo.org/mapserver/docs/msdocs/build/html/ogc/mapcontext.html

http://www.chuidiang.com/java/novatos/JFrame_JDialog.php

http://download.java.net/jdk8/docs/api/javax/swing/filechooser/FileNameExtensionFilter.html

http://artemisa.unicauca.edu.co/~dparedes/java/ui/swingcomponents/filechooser.html

http://www.aprenderaprogramar.com/index.php?option=com_content&view=article&id=551:que
-es-y-para-que-sirve-el-api-de-java-librerias-en-la-biblioteca-estandar-cu00645b&catid=68:curso-
aprender-programacion-java-desde-cero&Itemid=188

http://docs.oracle.com/javase/6/docs/api/

http://javiergarbedo.es/index.php/31-arrays/130-arraylist

UNIVERSIDAD DISTRITAL FRANCISCO JOSE DE CALDAS 10

También podría gustarte