ads

quinta-feira, 16 de abril de 2009

Software consegue melhorar em 50% a resolução de imagens de satélites

O pesquisador Miguel Archanjo Telles Jr., da Universidade de Brasília (UnB), desenvolveu uma ferramenta que pretende elevar o nível de detalhamento das imagens de satélites em 50%, sem perda da qualidade.
Telles Jr. usou imagens de satélite com 20 metros de resolução, que alcançaram 10 metros a mais de qualidade após a aplicação da técnica.
O pesquisador analisou também imagens de 30, 15, 2,5 e 0,6 metros. O conjunto foi obtido de produtos dos satélites Sino-Brasileiro de Recursos Terrestres (Cbers), dos norte-americanos Landsat-7, Ikonos, Quickbird, do francês Spot e do indiano ResourceSat.
O software desenvolvido por Telles Jr. ainda é um protótipo, mas pode gerar economia para os usuários desse tipo de produto dentro de alguns anos.
Super-resolução
A metodologia de Telles Jr. baseia-se na super-resolução, uma tecnologia já utilizada em câmeras filmadoras e máquinas fotográficas, mas pouco estudada para satélites. Consiste em captar a imagem e criar, a partir dela, outra imagem defasada em alguns pixels.
O processo deve ser aplicado em todas as camadas que se unem para compor a imagem, fornecidas por cada banda de um satélite. Cada uma traz algum tipo de dado, como, por exemplo, sobre temperatura ou cores captadas pelo sensor do artefato espacial.
O professor do Instituto de Geociências Antônio Nuno de Castro Santa Rosa, que orientou a tese, afirma que a técnica permite, ainda, fundir uma imagem colorida (espectral) de baixa resolução, por exemplo de 20 metros, com outra preto e branco (pancromática) de 2,5 metros e obter uma imagem de 2,5 metros em cores.
A chegada da tecnologia ao mercado ainda depende de pesquisas para aperfeiçoar o sistema. Telles Jr. cita, entre as necessidades, a criação de um software mais veloz. Por isso, a idéia do pesquisador é levar o programa do Matlab para a linguagem de programação C++. A mudança vai reduzir o tempo de processamento da fotografia, que hoje é de dois minutos para cada camada de uma imagem de 1.024 por 1.024 pixels.

Fonte: Revista MUNDOGEO

quinta-feira, 19 de março de 2009

gvSIG Mobile 2.0 (GIS MOBILE)

gvSIG é uma ferramenta orientada ao manejo de informação geográfica. Se caracteriza por uma interface amigável, sendo capaz de aceder aos formatos mais usuais de forma ágil tanto raster como vetoriais. Integra em uma vista dados tanto locais como remotos através de uma origem WMS, WCS o WFS.

Está orientada a usuários finais de informação de natureza geográfica, sejam profissionais da área de administração pública de qualquer parte do mundo (atualmente dispõe de interface em inglês, alemão, francês, italiano, português, espanhol).

Dada sua natureza de software livre (open source) a comunidade internacional interessa- se por continuar desenvolvendo funcionalidades totalmente novas a partir das livrarias utilizadas em gvSIG (licença GPL).


O arquivo de instalação do gvSIG Mobile está disponível na seção de downloads do projeto gvSIG:
www.gvsig.gva.es/index.php?id=2125&L=0

sábado, 24 de janeiro de 2009

Código para excluir uma coluna de uma JTable em tempo de execução

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.table.*;
import java.util.*;


public class Estudos extends JFrame{
public Estudos(){
super("Exemplo de uma tabela simples");

final DefaultTableModel modelo = new MyDefaultTableModel();

// constrói a tabela
final JTable tabela = new JTable(modelo);
tabela.setAutoCreateColumnsFromModel(false);

// Cria duas colunas
modelo.addColumn("Nome");
modelo.addColumn("Idade");

JButton btn = new JButton("Inserir Colunas");
btn.addActionListener(
new ActionListener(){
public void actionPerformed(ActionEvent e){
String titulo = JOptionPane.showInputDialog(null,
"Informe o título para a nova coluna:");
int pos = Integer.parseInt(JOptionPane.showInputDialog(null,
"Informe a posição da nova coluna:"));

// testa se a posição é válida
if(pos > (modelo.getColumnCount() - 1))
pos = 0;

// Insere uma coluna na posição especificada
insertColumn(tabela, titulo, null, pos);
}
}
);

JButton btn2 = new JButton("Excluir Colunas");
btn2.addActionListener(
new ActionListener(){
public void actionPerformed(ActionEvent e){
int pos = Integer.parseInt(JOptionPane.showInputDialog(null,
"Informe a posição da coluna a ser excluída:"));

// testa se a posição é válida
if(pos < modelo.getColumnCount())
// remove a coluna na posição especificada
removeColumnAndData(tabela, pos);
}
}
);

tabela.setPreferredScrollableViewportSize(new Dimension(350, 50));

Container c = getContentPane();
c.setLayout(new FlowLayout());

JScrollPane scrollPane = new JScrollPane(tabela);
c.add(scrollPane);
c.add(btn);
c.add(btn2);

setSize(400, 300);
setVisible(true);
}

public void betterAddColumn(JTable table, Object headerLabel,
Object[] values) {
DefaultTableModel model = (DefaultTableModel)table.getModel();
TableColumn col = new TableColumn(model.getColumnCount());

if(table.getAutoCreateColumnsFromModel()) {
throw new IllegalStateException();
}
col.setHeaderValue(headerLabel);
table.addColumn(col);
model.addColumn(headerLabel.toString(), values);
}

public void insertColumn(JTable table, Object headerLabel,
Object[] values, int vColIndex){
betterAddColumn(table, headerLabel, values);
table.moveColumn(table.getColumnCount()-1, vColIndex);
}

public void removeColumnAndData(JTable table, int vColIndex) {
MyDefaultTableModel model = (MyDefaultTableModel)table.getModel();
TableColumn col = table.getColumnModel().getColumn(vColIndex);
int columnModelIndex = col.getModelIndex();
Vector data = model.getDataVector();
Vector colIds = model.getColumnIdentifiers();

table.removeColumn(col);

colIds.removeElementAt(columnModelIndex);

for (int r=0; rVector row = (Vector)data.get(r);
row.removeElementAt(columnModelIndex);
}
model.setDataVector(data, colIds);

Enumeration enume = table.getColumnModel().getColumns();
for (; enume.hasMoreElements(); ) {
TableColumn c = (TableColumn)enume.nextElement();
if (c.getModelIndex() >= columnModelIndex) {
c.setModelIndex(c.getModelIndex()-1);
}
}
model.fireTableStructureChanged();
}

public static void main(String args[]){
Estudos app = new Estudos();
app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
class MyDefaultTableModel extends DefaultTableModel {
public Vector getColumnIdentifiers() {
return columnIdentifiers;
}
}

Mask Formatter in Java

The Java 2 Standard Edition (J2SE), version 1.4 add the Swing component JFormattedTextField. With this component it's possible build formatted fields like telephone, date, CPF, etc...

The DefaultFormatterFactory component comes with preinstalled formatters for dates, numbers, java.text.Format subclasses.

Configuring acceptable input

Masked input is typically configured by using an instance of the MaskFormatter class. Found in the javax.swing.text package, MaskFormatter works by using a series of characters to designate acceptable input. Each of the eight characters in the series represents one character in the input, as listed below:

# - A number
? - A letter
A - A letter or number
* - Anything
U - A letter, with lowercase characters mapped to their uppercase equivalents
L - A letter, with uppercase characters mapped to their lowercase equivalents
H - A hexadecimal digit (A-F, a-f, 0-9)
' - Used to escape another mask character

In addition to MaskFormatter, you can use the DateFormat and NumberFormat classes from the java.text package to specify the input format. Listing 1 shows some possible formats.

// Four-digit year, followed by month name and day of month,
// each separated by two dashes (--)
DateFormat format =
new SimpleDateFormat("yyyy--MMMM--dd");
DateFormatter df = new DateFormatter(format);
// US Social Security number
MaskFormatter mf1 =
new MaskFormatter("###-##-####");
// US telephone number
MaskFormatter mf2 =
new MaskFormatter("(###) ###-####");


Once you've specified the input format, you would then pass the formatter into the JFormattedTextField constructor, as shown below:

JFormattedTextField ftf1 = new
JFormattedTextField(df);

Depending on the formatter used, there are other configurable options. For instance, with MaskFormatter, you can set the placeholder character with setPlaceholderCharacter(char). Also, for date fields, it helps if you initialize the field to some value so a user will know what input format is acceptable.


Example:

import java.awt.*;
import javax.swing.*;
import javax.swing.text.*;
import java.util.*;
import java.text.*;
public class FormattedSample {
public static void main (String args[]) throws ParseException {
JFrame f = new JFrame("JFormattedTextField Sample");
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Container content = f.getContentPane();
content.setLayout(new BoxLayout(content, BoxLayout.PAGE_AXIS));
// Four-digit year, followed by month name and day of month,
// each separated by two dashes (--)
DateFormat format =
new SimpleDateFormat("yyyy--MMMM--dd");
DateFormatter df = new DateFormatter(format);
JFormattedTextField ftf1 = new
JFormattedTextField(df);
ftf1.setValue(new Date());
content.add(ftf1);
// US Social Security number
MaskFormatter mf1 =
new MaskFormatter("###-##-####");
mf1.setPlaceholderCharacter('_');
JFormattedTextField ftf2 = new
JFormattedTextField(mf1);
content.add(ftf2);
// US telephone number
MaskFormatter mf2 =
new MaskFormatter("(###) ###-####");
JFormattedTextField ftf3 = new
JFormattedTextField(mf2);
content.add(ftf3);
f.setSize(300, 100);
f.show();
}
}

Source: IBM, SUN

segunda-feira, 12 de janeiro de 2009

GMaps4JSF

GMaps4JSF visa a integração do Google Maps com JavaServer Faces.

Usuários da tecnologia JSF serão capazes de construir complexas StreetViewPanoramas e mapas com apenas algumas tags JSF.

GMaps4JSF é uma biblioteca de mashups que permite aos desenvolvedores contruírem aplicações em JSF facilmente.

Algumas novidades para a nova versão:
* Ícone para simplificar o marcador de imagem personalizado
* Agora é permitido adicionar notas ao componente de marcador
* Suporte a Facelets
* Bugs resolvidos da versão 1.1.0

Fonte: Theserverside.com

segunda-feira, 1 de dezembro de 2008

Óptimo site sobre viagens!

Visitem o recém inaugurado site sobre viagens pelo mundo!

http://viajantesmundo.blogspot.com/


O objectivo do http://viajantesmundo.blogspot.com/ é auxiliar a todos que desejam viajar ao redor do mundo, mantendo o viajante bem informado.

A estrutura do site é a seguinte:
-> Do lado direito encontram-se links patrocinados pelo Google, que oferecem os produtos e serviços que melhor lhe atendem.
->Logo abaixo dos anúncios, há uma lista de blogs recomendados e um pouco mais abaixo uma imagem diferente e surpreendente fornecida diariamente pelo National Geographic POD!
-> Abaixo do campo de mensagens postadas há um textfield com notícias de vários países do mundo (temas como economia, política, esportes, viagem e imigração, empresas, etc) . Abaixo há mais uma propaganda.

Click e confira!

domingo, 16 de novembro de 2008

Cases de Sucesso de Empresas que optaram por Arquiteturas Orientadas por Serviço (SOA)

1. Comcast
Uma das maiores (se não a maior) operadora de TV a cabo dos EUA. Eis a sua abordagem:
Se preocuparam inicialmente com a arquitetura e não em comprar ESB
Depois de desenvolver a arquitetura, o foco foi o framework de governança para implementação e gestão dos novos serviços
Direcionou os esforços iniciais de SOA para o legado (e.g. billing)
Tempo de maturação do projeto: 18 meses
Lições aprendidas: “…a Comcast deveria ter desenvolvido um modelo de serviço de dados comum depois de definir a arquitetura. Sem serviços de dados padrões para acessar informação corporativa e gerenciar interações entre sistemas, os desenvolvedores acabaram projetando seus serviços para executar o trabalho de diferentes maneiras, o que gerou inconsistências, quebrando a promessa de SOA de possibilitar um mix fácil de componentes de serviços“


2. Leapfrog
Uma das mais conhecidas fabricantes de brinquedos educativos.
Cenário: vários sistemas e soluções em Java 5 e 6, C# da Microsoft e web services com diversas bibliotecas de terceiros
Objetivo: maior reutilização de código, desenvolvimento mais veloz e integração mais fácil; mas a empresa não queria limitar a iniciativa SOA a uma mudança da guarda de ferramentas de desenvolvimento e plataformas de integração
Abordagem: POJO, ESB Open-source (Mule), utilização de 2 (dois) ESBs - um para gerenciar fluxo de dados e outro para aplicações Web (Portal do cliente)
Por que o Mule? “…porque sua única tarefa é gerenciar mensagem. Todos os fornecedores comerciais queriam nos vender um pacote completo de produtos. Mas o ponto principal de SOA é passar de um sistema fechado para outro’…“, afirma o diretor de infraestrutura de sistemas


3. United Airlines
Grande empresa aérea dos EUA, companhias aéreas, assim como empresas de Telecom, de Finanças etc, tem muitas tarefas baseadas em eventos. É neste ponto que entra a EDA (Event-driven Architecture).
Histórico: a United investiu há tempos em EDA, usando o WebSphere da IBM como barramento de mensagem por sete anos. Em 2006, deu início a uma implementação SOA para lidar com os web services modernos usados no web site United.com.
Precisa conviver com estes 2 ambientes (EDA e SOA)
Desafio: projetar e implementar serviços em uma empresa que tem duas arquiteturas e necessita de ambas
Problemas que tiveram com ESB: “ESBs não utilizam padrões fora dos padrões de web services”, afirma o gerente de middleware da United
Por que o ESB é tão importante? a United “...valoriza o uso de ESBs para SOA e EDA porque eles lidam com mensagem, transformações de dados e outras tarefas críticas de roteamento de dados….“
Experiência com EDA+SOA: falta de esquemas XML padrões para EDA, fazendo com que a transferência de mensagens entre serviços EDA e SOA seja mais complexa e demande mais pessoal.


4. Thomson Financial
Empresa de serviços de informações financeira (também uma das maiores do mundo).
Lições aprendidas: “…Um grande número de empresas aprecia o conceito de SOA porque ele promete acelerar o desenvolvimento. Mas alguns desenvolvedores descobriram que um elemento-chave da governança de serviço, na realidade, pode retardar o desenvolvimento, roubando a velocidade prometida. “
Serviços: muitos (milhares) com om alta granularidade, baixa granularidade — com tudo que pode haver entre os dois — e uma equipe de arquitetura pequena
Solução: recorrer à automação utilizando ferramentas de avaliação de políticas da WebLayers. “As ferramentas são mais eficientes e não deixam passar violações”, diz o VP de serviços de gerenciamento de produto


5. Jabil
A Jabil é uma grande empresa de manufatura (monta circuitos, impressoras, computadores etc).
Desafio: integração do cliente – por exemplo, sistemas de billing, previsão e entrada de pedidos e os muitos sistemas utilizados por seus clientes; é muito difícil gerenciar toda esta comunicação ponto-a-ponto à medida que a base de clientes cresce e evolui os próprios sistemas
Arquitetura anterior: baseada em “hubs” de integração para trocar informações com seus mais de 5.000 parceiros. Resultado: muita dificuldade para manter manualmente todas as interfaces
Solução: adotou princípios SOA para substituir a maioria destas conexões personalizadas por conexões baseadas em serviços que possibilitam a reutilização de funções comuns
Produto/Abordagem de implantação: Ao invés de usar um ESB para gerenciar mensagens, um registro para gerenciar o repositório de serviços ou um ambiente de desenvolvimento orientado a SOA para desenvolver os serviços, a Jabil emprega o Gentran Integration Suite da Sterling Commerce para as três finalidades. O pacote é projetado para interações do supply-chain.