quinta-feira, 16 de abril de 2009
IBGE lança serviço gratuito de processamento de coordenadas para usuários de GPS
O sistema vai permitir que os usuários de equipamentos de GPS topográficos e geodésicos obtenham coordenadas de alta precisão no Sistema de Referência Geocêntrico para as Américas (Sirgas2000), oficialmente em uso no Brasil.
Ao lançar o serviço PPP, o IBGE oferece, de forma pioneira na América Latina, uma ferramenta de processamento de dados GPS que tornará desnecessário que o usuário tenha conhecimentos técnicos profundos para a obtenção de coordenadas de maior precisão. Outra vantagem é que o profissional que faz uso do GPS para suas atividades não precisará comprar um software para processamento dos dados. Com o sistema oferecido pelo Instituto, será necessário apenas o envio de poucas informações, para que o tratamento seja feito sem custo.
Passo a Passo
Para utilizar esse serviço, o usuário deverá enviar as seguintes informações ao IBGE:1. Os dados GPS, preferencialmente comprimidos (para reduzir o tempo de recebimento das informações pelo sistema); e2. O tipo e valor da altura da antena utilizada no levantamento.
Os resultados serão enviados em poucos minutos, através do e-mail fornecido pelo usuário quando submeteu os dados para processamento.
Só serão aceitos dados que tenham sido coletados após 25 de fevereiro de 2005, data a partir da qual o SIRGAS2000 foi adotado oficialmente no Brasil. Os dados deverão ser submetidos pelos usuários após 48 horas da conclusão da coleta.
Cooperação internacional
O IBGE-PPP faz uso do aplicativo de processamento CSRS-PPP, desenvolvido pela Divisão de Geodésia do Natural Resources of Canada (NRCan). A licença de uso do sistema foi disponibilizada ao IBGE, para uso no território nacional, através do Projeto de Infraestrutura Geoespacial Nacional (PIGN), objeto de cooperação entre o IBGE e a Universidade de New Brunswick, no Canadá, apoiado pela Agência Canadense de Desenvolvimento Internacional (CIDA) e pela Agência Brasileira de Cooperação (ABC).
O software para processamento das coordenadas está acessível no linkwww.ppp.ibge.gov.br
Fonte: MUNDOGEO
Software consegue melhorar em 50% a resolução de imagens de satélites
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 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; 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 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
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!
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!