Blog Geo.NET Geoprocessamento, SIG e Sensoriamento Remoto

28jul/110

GeoKettle 2.0 lançado

Tenho falado muito sobre o lançamento de novos softwares. O GeoKettle é mais um lançamento deste mês. A Spatialytics está lançando a versão candidata 2.0.

A cada dia fico mais impressionado com o número de softwares e frameworks disponíveis para trabalhar com GIS.

O GeoKettle é um ETL espacial muito poderoso, à lá FME que permite a leitura e escrita de diversos bancos de dados e formatos de geoespaciais, como shapefile, tabelas do Access, KML, etc.

Ele funciona como um ModelBuilder, sendo possível utilizar processos do Sextante (a extensão de análise espacial do gvSIG) e muitos outros embutidos no mesmo para transformar os dados e eventualmente, chegar à um resultado investigado pelo usuário.

Screenshot do GeoKettle 2.0

Screenshot do GeoKettle 2.0

Só de olhar podemos perceber o tanto que o software é poderoso. Arrisco dizer que é mais poderoso que o próprio model Builder.

Entre as coisas que são de babar no GeoKettle:

  • API de programação em Java;
  • Usa JTS, deegree, GeoTools, OGR/GDAL e SEXTANTE;
  • Execução remota (sim, podemos executar o modelo em um servidor remoto! Um servidor parrudo!);
  • Scripting: JavaScript, SQL e RegEx;
  • Licença LGLP!!!

Este está instalado e rodando na minha máquina. Vai ser útil!

Compartilhe:
25jul/110

Jaspa 2.0 disponibilizado

O nosso ecossitemas open-source tem crescido consideravelmente à cada dia. Novos projetos (que até nunca ouvi falar!) estão surgindo e surpreendendo em termos de funcionalidade e implementação.

Java Spatial for PostgreSQL and H2

Java Spatial for PostgreSQL and H2

Hoje quero comentar o lançamento do Jaspa 2.0 (JAva SPAtial for PostgreSQL and H2). O Jaspa é uma extensão espacial para bancos de dados relacionais que introduz diversas funcionalidades que podem existir (ou não nativamente) nestes RDBMS.

O projeto é mantido pelo Dep. de Engenharia Cartográfica da Universidade Politécnica de Valência. Ponto pros caras!

Como diz o nome, é escrito em Java e está disponível para estes RDBMSs que suportam a linguagem. O projeto é bem interessante, especialmente para desenvolvedores. Não reinvente a roda. Use uma pronta e mais redonda!

O post de hoje foi patrocionado por Led Zeppelin e Johnny Cash.

Um abraço,

George R. C. Silva

Compartilhe:
20jul/110

52N lança novas versões de softwares

A 52N é uma rede internacional de pesquisadores e desenvolvedores da área de Geotecnologias, uma empresa sem fins lucrativos que...desenvolve softwares para geotecnologias!

Eles são responsáveis por diversas implementações interessantes e houveram alguns lançamentos:

  • ILWIS 3.8 beta (pacote GIS desenvolvido inicialmente pelo ITC - o "INPE holandês", com capacidades avançadas e visualização 2D e 3D);
  • SOS (Sensor Obsevartion Service - uma implementação de serviços para leitura remota de sensores);
  • versão 1.1 do smartEditor - um editor de metadados poderoso, que segue as especificações ISO19115/19119 e catálogos INSPIRE;
  • versão candidata do WPS (web processing service) 2.0 - entre as novas funcionalidades ele permite utilizar o ArcGIS e GRASS como provedores de ferramentas de geoprocessamento!

Parabéns a 52N pelos lançamentos!

Confira o site da 52N, eles fomentam desenvolvimento de qualidade de softwares GIS.

Abraços

George

Compartilhe:
13jul/112

Novas versões disponibilizadas

Bem, esta semana e semana passada foram marcadas pelo lançamento de três novas versões de bibliotecas open-source na web. Estas versões conseguiram ver a luz do dia, após um processo, sempre complicado de bug-tracking, correções, mais bug-tracking e correções até o lançamento.

Confira:

Se você é um geonerd, confira. Todas tem código fonte disponível e são extremamente robustas.

Abraços

George R. C. Silva

Compartilhe:
3fev/110

Aniversário da OsGEO

É pessoal, é no dia 04/02.

Em fevereiro de 2006 foi criada ou instituída a OsGeo, organização que todos conhecemos tão bem. São 5 anos de atuação em todo mundo, parcerias fortes, ajuda à diversos projetos e o melhor divulgação de um novo espírito sobre as Geotecnologias.

Parabéns OsGeo.

Tem também alguns concursos:

  • Bolo de aniversário
  • Vídeos ou animações
  • Criação de avatares verdinhos
  • Imagem Metapixel (é só um jeito difícil de se dizer mosaico)
  • Novo logo para OsGeo

Não sei se terão prêmios, mas deve ser bem divertido.

Bem, saiba mais aqui.

Por hoje é só galera,

Abraços

George

Compartilhe:
12set/101

OpenGeo Suite

Bom domingo pessoal, tudo bom?

Não tenho tido muito tempo ultimamente, mas vamos para uma rapidinha:

A OpenGeo lançou uma coleção de camisetas legais sobre alguns produtos open source dos quais eles trabalham. Ficaram muito legais e eu mesmo pedi duas, PostGIS e OpenLayers. As camisetas foram feitas especialmente para o FOSS4G Barcelona (Free and Open Source Software for Geomatics Conference).

São de  cor única, com o logo do produto e uma frasezinha de efeito. A do PostGIS diz: PostGIS never forgets; a do OpenLayers: OpenLayers zooms.

Falando nisso, a OpenGeo está com a suite OpenGeo. É um servidor "pronto" com diversos componentes interessantes e uma edição community. É a soma do GeoServer, GeoExt, OpenLayers e PostGIS em um só pacotão - disponível para Linux, Mac OSX e Windows. Ainda não testei, mas pode valer a pena!

Vou ficando por aqui, porque já tenho que ir para o trabalho!

Abraços

George R. C. Silva

Compartilhe:
18ago/100

Udig 1.2 lançado

Buenas pessoal,

Depois de umas seis horas de viagem estou de volta em casa. Manaus é quente, mas é uma cidade muito interessante. Se tiverem a oportunidade, visite.

Venho falar hoje do lançamento do UDig 1.2. Está com algumas novas features interessantes, melhorando o que já era bom.

  • Acesso a data stores GeoTools atrravés de um wizard genérico;
  • Melhorias para cálculos de bounding boxes - significa maior velocidade de acesso e busca, especialmente para banco de dados espaciais!
  • Introdução da linguagem CQL (Common Query Language) para filtros de pesquisa - lembra do Definition Query do ArcGIS?
  • Melhorias no cache de arquivos raster.
  • Melhorias nas ferramentas de edição.
  • E diversas outras melhorias.

Dêem uma conferida! É um software estável e um dos melhores no quesito edição de dados.

Desculpem a demora em postar coisas novas, mas o tempo tá difícil.

Abraços,

George R. C. Silva

Compartilhe:
21jul/105

Desenvolvendo um SIG para Suporte de Decisões Municipais

Atualmente temos no Brasil 5561 municípios, de diversos tamanhos. Gerenciar um município e todos os seus serviços é uma tarefa complicada, pela multiplicidade de usuários que devem ser atendidos (a população), e diversidade de serviços oferecidos (educação, saúde, segurança, lazer, moradia).

Como administrar tudo isso, de forma coesa e inteligente? Muito poucos municípios tem hoje a capacidade de construir um sistema de informações geográficas, por diversos motivos: preço do desenvolvimento de um sistema integrado, preço do software (licenças proprietárias), treinamento de mão-de-obra e manutenção deste centro de inteligência espacial.

Enfim, é muito caro coletar e organizar dados geográficos, mas é uma ação municipal que tem retorno imediato, não somente no caixa, mas em agilidade na prestação dos serviços e por conseguinte satisfação da população em geral.

Além disto, os custos para realizar diversas operações diminuem exponencialmente. Ordens de serviço são precisamente direcionadas ao problema, sem desperdícios ou prestando serviços desnecessários.

Iremos abordar em uma série de artigos a construção de um sistema de apoio de decisões para um prefeitura municipal fictícia. Serão utilizados softwares livres para o desenvolvimento desta solução, mas isto não lhe impede de desenvolver este tipo de sistema utilizando um software proprietário - os resultados práticos são os mesmos.

O tema será abordado em paralelo, mostrando tanto o esboço de uma arquitetura sistêmica, o desenho de um pequeno banco de dados espacial e a construção de um ambiente WEB para visualização das informações espaciais no navegador de internet comum.

Os primeiros artigos serão bastante simples e conforme caminharmos, iremos adicionar complexidade ao sistema, com consultas, relatórios e regras de negócio avançadas. Iremos adicionar inteligência ao sistema aos poucos.

Portanto leitor, seja bem vindo à esta série de artigos que estamos escrevendo com o intuito de mostrar o que Geoprocessamento realmente é. Esqueça os "mapinhas", pense em inteligência geográfica. Como sempre, você são encorajados à participarem ativamente deste processo, pelo blog ou via email. Aguardmos ansiosos pelo seu feedback.

1 - Arquitetura do sistema

Primeiramente precisamos pensar o que nosso sistema irá fazer, quem irá atender e como irá atender. Não é possível dentro de um prazo e custos razoáveis, atender todas as demandas de desenvolvimento que uma prefeitura municipal de médio porte terá. Mas é possível limitar este escopo e prever como o sistema deverá crescer. Por isso devemos ter em mente uma arquitetura que possa escalar e seja robusta.

Existem milhares de estudos sobre arquitetura que devemos fazer ANTES de iniciarmos um projeto desse porte. Mas não iremos realizar os estudos. Porque? Vamos construir um sistema pequeno para uma prefeitura pequena e não temos em mente muitos usuários simultâneos. O que quero deixar claro é que esta etapa deve existir e não pode ser descartada em qualquer projeto real e deve ser feito inclusive, por um profissional COMPETENTE.

Bem, o que nosso sistema irá fazer? Irá cartografar alguns temas de nossa cidade fictícia como lotes, quadras, praças, logradouros, bairros entre outros e disponibilizar a consulta destes temas via internet. Inicialmente, este será nosso objetivo. É uma missão bem simples, mas que já pode ajudar um administrador a entender seu espaço, seu município e seus habitantes.

O que precisamos para fazer isto? Logo de início, precisamos ter em mãos os dados espaciais a serem manipulados. Pelo fato de requerer custos elevados, muitas vezes nos deparamos com a falta de informação espacial para manipulação. Isso ocorre por, na maioria das vezes, o orçamento do lugar, cidade, estado, não cobrir a necessidade dos gastos totais local, o que redireciona os investimentos do lugar para problemas mais urgentes, ficando o planejamento do espaço em segundo plano.

Tendo em mãos estes dados, precisamos de uma forma confiável de armazena-los e lê-los, portanto precisamos de um banco de dados, geográfico! Só um banco de dados pode possibilitar multiplos usuários leitores, multiplos usuarios editores sem que haja quebra na consistência de informações. Para isto, a maioria dos bancos de dados relacionais, utiliza alguns princípios chamados de ACID (Atomicidade, Consistência, Isolamento e Durabilidade) detalhar isto aqui, mas fica para um próximo artigo) e são eles que garantem que tudo o que tenho dentro daquele banco de dados é uma informação verdadeira, ou seja, consistente e íntegra.

Como iremos inserir os dados no banco? Utilizaremos um software SIG desktop para a tarefa. Este tipo de software suporta conversão de coordenadas, edição de geometrias, customização de simbologia, geração de mapas temáticas, consultas complexas, entre outras funções. O importante é que este software ficará a disposição, em nosso caso fictício, de uma pequena parcela de funcionários da prefeitura, treinados e compententes para operar um software com toda esta complexidade. Não que todos não pudessem aprender, mas é melhor dividir para conquistar. Com um número reduzido de usuários responsável pela inserção/deleção/atualização de registros, temos maior segurança e podemos prevenir desastres em nossas preciosas bases cartográficas.

Além disso precisaremos de um servidor de mapas. Precisamos publicar nossas informações na internet, através de mapas coloridos. Um servidor de mapas é o responsável por entender os pedidos do navegador de internet ("me dê aquela extensão geográfica ali, com as camadas de logradouros, quadras e hidrografia, para ontem!") e traduzir sua resposta em gráficos. Em alguns casos, o servidor de mapas entende o pedido e gera as imagens, em outros, manda as informações para o navegador interpretar e desenhar aquele lindo mapa em sua tela.

Figura 01 - Arquitetura simplificada do sistema

Figura 01 - Arquitetura simplificada do sistema

1.1 - Escolha de ferramentas

Bem, escolhemos como banco de dados o PostgreSQL 8.4 com sua extensão espacial PostGIS 1.5. Porquê? Bem, conforme mencionamos no começo do artigo, iremos trabalhar com ferramentas livres, ao invés de proprietárias, mas existem algumas razões técnicas para isto:

  • É o mais completo banco de dados (livre) da atualidade;
  • O PostgreSQL é o banco de dados que faz menos extrapolações do padrão SQL. Portanto, desenvolver para PostgreSQL, quase sempre é estar de acordo com o padrão.
  • O PostGIS, sua extensão espacial, é a mais madura do mercado. Tem o maior número de funções, funciona muito bem e com certeza dá uma lavada em outras implementações espaciais.
  • O PostGIS segue o padrão aberto OGC (Open Geospatial Consortium), ou seja, informação dentro do PostGIS se comunica com todos os softwares de SIG/GIS que implementam o padrão.
  • O PostGIS é livre e gratuito.

O PostgreSQL ainda nos permite interação com diversas linguagens de programação, para aumentar sua capacidade de análise espacial, como a pl/R e como a pl/python que nos irá ajudar a criar futuramente um ambiente web completo.

O software SIG desktop escolhido foi o QGIS. A resposta para esta escolha, é que antes de tudo, o Quantum GIS é um software livre! É um projeto que faz parte da OSGeo, e que roda em diferentes plataformas (Unix, Linux, MacOSX e Windows), além de suportar dados vetoriais, raster e formatos de banco de dados. Atrevés do QGIS, é possivel gerenciar, manipular e analisar os dados trabalhados, bem como compor mapas para impressão.

Para o servidor de mapas, iremos utilizar o GeoServer. O GeoServer é um projeto bastante maduro, é utilizado mundo afora e suporta os principais protocolos especificados pela OGC - Web Map Services, Web Feature Services, entre outros. Em conjunto com o GeoServer, usaremos o OpenLayers para trabalhar como cliente do GeoServer e construir nosso mapa - dentro do navegador.

2 - Temas e Feições

Em suma, um SIG armazena informações de forma relacional, da mesma forma que um banco de dados tradicional. A diferença é que o SIG permite e lhe dá
ferramentas para armazenar de forma eficiente informações espaciais: pontos, linhas, polígonos e outras geometrias mais complexas, como coleções de
geometrias, geometrias em três dimensões, etc..

As ferramentas que o sistema lhe fornece são composta basicamente de operações matemáticas sobre objetos dispostos em um plano euclidiano (existem ferramentas
avançadas que se dão em uma esfera, como a superfície da Terra), tais como: intersecção, união, disjunção, soma, subtração, distância, área, entre outras.

Existem diversas operações que podemos realizar com as geometrias dos objetos, e chamamos isto de análise espacial. É através da análise espacial e pesquisa relacional em um banco de dados que conseguimos os fantásticos resultados, que não seriam obtidos de nenhuma outra maneira.

Em nosso pequeno sistema, vamos armazenar algumas informações cruciais para a administração pública: sistema viário, quadras, lotes, bairros, linhas e pontos de ônibus e pontos de táxi. A administração de nossa prefeitura fictícia quer uma atualização cartográfica geral e um controle maior sobre o transporte neste município.

A prefeitura fictícia nos forneceu estas informações e nos mostrou como são armazenadas hoje. À partir daí podemos começar com a modelagem de dados e a construção de nosso banco de dados espacial.

2.1 - Sistema Viário

A prefeitura quer um levantamento e organização completa de seu sistema viário. Atualmente eles não tem nada armazenado em forma digital, mas querem uma solução que seja compatível com geocodificação, roteamento e sirva para construção dos itinerários de linhas de ônibus.

Bem, como temos requisitos funcionais (geocodificação e roteamento) precisamos pensar em uma forma de construir esta base de logradouros de uma forma que nos permite posteriormente, implantar estas funcionalidades para a prefeitura.

Uma estrutura relacional comumente aceita para representar este tipo de informações é criar uma linha por logradouro, de seu ponto inicial ao seu ponto final, indicando as seguintes informações: Código Logradouro,Tipo Logradouro, Nome Logradouro, CEP Logradouro. Mas temos nosso requisitos. Nosso sistema quase nunca teria uma linha de ônibus que segue um logradouro de seu início ao seu final, sem nenhuma virada, por exemplo. Temos ainda a questão de preparar o sistema para o roteamento e geocodificação. É muito mais prático, dividir este elemento "logradouro" em partes atômicas, que nunca irão se alterar (com exceção, claro, de uma alteração do traçado viário) ou ser divididos em pedaços menores por alguma necessidade (como um ônibus virar a esquina, por exemplo).

Definido isto, temos a seguinte estrutura: Código Logradouro, Código Trecho Logradouro, Tipo de Logradouro, Nome Logradouro, CEP Logradouro. Estamos apenas preparando a base para demandas futuras, então lembrem-se, não iremos implementar tudo de uma vez. Esta estrutura será suficiente. O importante é entender a divisão de informações que iremos realizar. Também vamos assumir que todo o traçado dos eixos serão realizados no sentido do tráfego, ou seja, o ponto inicial flui para o ponto final do logradouro ou trecho.

Neste esquema a tabela não está apropriadamente normalizada. Precisamos normalizá-la para um funcionamento eficiente de informações. Mas porque? Note que um logradouro terá um ou mais trechos, e estamos repetindo à cada trecho as informações Tipo de Logradouro e Nome de Logradouro. A normalização permitirá que entremos com esta informação apenas uma vez e referenciemos esta à uma outra tabela.

Em SQL, ficaria assim:

 	CREATE TABLE tp_logradouro
	(
		cd_tp_logradouro SERIAL NOT NULL, -- nossa chave primária
		dc_tp_logradouro VARCHAR(30) NOT NULL, -- a descrição do tipo de logradouro
		CONSTRAINT tp_logradouro_pk PRIMARY KEY (cd_tp_logradouro)
	);

        CREATE TABLE logradouro
	(
		cd_logradouro SERIAL NOT NULL, -- nossa chave primária
		tp_logradouro INTEGER NOT NULL REFERENCES tp_logradouro (cd_tp_logradouro),
		nm_logradouro VARCHAR(75) NOT NULL,
		CONSTRAINT logradouro_pk PRIMARY KEY (cd_logradouro)
	);

	CREATE TABLE trecho_logradouro
	(
		cd_trecho SERIAL NOT NULL, -- nossa chave primária
		cd_logradouro integer NOT NULL REFERENCES logradouro (cd_logradouro), -- aqui estamos referenciando a tabela logradouros.
		no_vias integer NOT NULL,
		no_faixas integer NOT NULL,
		cep_trecho VARCHAR(9) NOT NULL DEFAULT '00000-000',
		CONSTRAINT trecho_logradouro_pk PRIMARY KEY (cd_trecho)
	);

	CREATE TABLE numeracao_trecho_logradouro
	(
		cd_trecho INTEGER NOT NULL REFERENCES trecho_logradouro (cd_trecho),
		no_inicial_esq INTEGER NOT NULL DEFAULT 0,
		no_inicial_dir INTEGER NOT NULL DEFAULT 0,
		no_final_esq INTEGER NOT NULL DEFAULT 0,
		no_final_dir INTEGER NOT NULL DEFAULT 0,
		-- já estamos dizendo que só podemos ter um trecho com estas informações.
		-- não é possível repetir cd_trecho com numerações diferentes
		CONSTRAINT numeracao_trecho_logradouro PRIMARY KEY(cd_trecho)
	);

	CREATE TABLE sentido_trecho_logradouro
	(
		cd_trecho INTEGER NOT NULL REFERENCES trecho_logradouro (cd_trecho),
		dc_sentido VARCHAR(2) NOT NULL DEFAULT 'FT',
                -- os valores possíves de sentido são FT (From To), TF (To From) e FF (From From - duas mãos)
		CONSTRAINT sentido_trecho_logradouro_pk PRIMAKEY KEY (cd_trecho)
	);

	-- vamos adicionar uma coluna geométrica à trecho_logradouro

	SELECT * FROM AddGeometryColumn('public','trecho_logradouro','the_geom',-1,'LINESTRING',2);

Com estas tabelas, modelamos toda a parte de sistema viário para nossa prefeitura. Não foi complicado né? Com estas tabelas, temos informações suficientes para estabelecer rotinas de geocodificação e roteamento parcial. Para estabelecermos um roteamento completo temos ainda de ter tabelas sobre as "viradas" possíves, também chamadas de turn tables.

Modelo Entidade Relacionamento do Sistema Viário

Modelo Entidade Relacionamento do Sistema Viário

Ainda vamos adicionar suporte para as turn-tables e quem sabe mais para frente, adicionamos em nossa aplicação o pgRouting, extensão do PostGIS responsável para realizar roteamento.

Por que modelar o sistema viário em primeiro lugar? Bem, o sistema viário, é de vital importância para qualquer cidade média do mundo e com uma sólida representação do SV podemos apoiar outras partes de nosso sistema no mesmo. Uma parte que dependerá completamente do "módulo" sistema viário será o módulo de transporte público, pois utilizaremos muito geocoding para construir automáticamente as rotas de ônibus, entre outras coisinhas.

A explicação do código:

A tabela logradouro irá armazenar toda nossa informação estática sobre um conjunto de trechos de mesmo nome. A tabela trecho irá conter as informações que variam de trecho para trecho, mesmo que aqueles dois trechos distintos pertençam ao mesmo logradouro.

O relacionamento descrito pelo código na tabela trecho_logradouro "REFERENCES...", indica que um trecho deve pertencer a apenas um logradouro válido na tabela logradouro. Evitamos assim erros e duplicação de informação. Por enquanto, nossa cidade e base de dados é pequena, mas imagine daqui alguns anos? Seria uma complicação manter isto organizado, caso não utilizassemos este formato.

Por último, adicionamos uma coluna geométrica do tipo LINESTRING à tabela trecho_logradouro. Agora podemos começar inserir informações geográficas nesta tabela.

Nota: o SRID (Spatial Reference ID) -1 foi utilizado pois estamos trabalhando com um município fictício. Aqui deve aparecer o código do seu sistema de referência / datum. Lembre-se disto durante toda série de artigos ;) .

No próximo artigo iremos trabalhar com o transporte público. Iremos modelar toda a parte de linhas, pontos de parada, sentidos de transporte (bairro - centro; centro - bairro), táxis, etc.

O que acharam?

Abraços,

George R. C. Silva

Compartilhe:
11mai/103

Funções PostGIS #1

Boa tarde pessoal,

Me desculpem o tempo parado, mas é que a correria está grande!

Gostaria de mostrar um pouco as funções do PostGIS e as maravilhas que podemos fazer com elas. Vamos começar devagar, com as básicas e ir aumentando o grau de complexidade destes posts. Algumas idéias aqui surgirão, como a criação de indíces específicos com o uso destas funções, uma prática comum para aumentar a perfomance do banco de dados. Espero que gostem. O PostGIS utilizado é o 1.4.0.

PostGIS_Full_Version()

Esta função não faz muita coisa, ela apenas te diz a versão do PostGIS instalada, bem como quais as versões das bibliotecas das quais o PostGIS depende (Proj4 e GEOS). Ela é importante pois é uma das primeiras perguntas que irão lhe fazer quando você encontrar dificuldades ou bugs. Guarde-a num cantinho da sua mente :P .

SELECT * FROM PostGis_Full_Version()

AddGeometryColumn()

Esta sim é importante. Aprenda-a usar logo.  Ela é responsável por adicionar corretamente as colunas geométricas à uma tabela. Ela não só adiciona a coluna à tabela, como cria as constraints definidas e popula a tabela geometry_columns. Se você adicionar uma coluna geométrica e não popular a tabela geometry_columns diversos softwares SIG podem não reconhecer aquela tabela como espacial. Portanto atenção nas duas.

CREATE TABLE teste(
id serial not nuLl,
atributo1 varchar(20) not null default 'abc',
constraint teste_pk primary key (id)
);

-- assinaturas
-- SELECT * FROM AddGeometryColumn('tabela','nome_da_coluna_a_ser_criada',srid,'TIPO_DE_GEOMETRIA',dimensao);
-- SELECT * FROM AddGeometryColumn('esquema','tabela','nome_da_coluna_a_ser_criada',srid,'TIPO_DE_GEOMETRIA',dimensao);

SELECT * FROM AddGeometryColumn('teste','the_geom',29192,'POINT',2);
-- QUALQUER UM DESSES FORMATOS FUNCIONAM

Qualquer um das assinaturas é válida.

DropGeometryColumn()

Esta função faz o inverso da AddGeometryColumn(). Ela remove a coluna espacial e limpa o registro na tabela geometry_columns.

-- assinaturas
-- SELECT * FROM DropGeometryColumn('tabela','nome_da_coluna');
-- SELECT * FROM DropGeometryColumn('esquema','tabela','nome_da_coluna');

SELECT * FROM DropGeometryColumn('teste','the_geom');

Populate_Geometry_Columns()

Esta função escaneia todas as tabelas que contenham colunas do tipo geometry e as popula com as constraints apropriadas: tipo de geometria, número de dimensões e SRID especificado.

-- assinaturas
-- SELECT * FROM Populate_Geometry_Columns();
-- SELECT * FROM Populate_Geometry_Columns(oid_tabela);

SELECT * FROM Populate_Geometry_Columns();

Esta função sem argumentos, irá escanear todas as tabelas do banco e tentar criar as constraints para cada uma. Se você especificar um oid a função tentará fazer isto somente para a tabela especificada.

Probe_Geometry_Columns()

Esta função escaneia todas as tabelas do banco com constraints espaciais e as adiciona à tabela geometry_columns. Mão na roda para garantir que todas suas tabelas estejam de acordo para uso em softwares de SIG. Esta função não escaneia views que têm de ser populadas na tabela geometry_columns na mão.

-- assinatura
-- SELECT * FROM Probe_Geometry_Columns();

SELECT * FROM Probe_Geometry_Columns();

UpdateGeometrySRID

Esta belezinha aqui realiza o trabalho de atualizar as constraints e as geometrias para determinado SRID. Cuidado, esta função não converte coordenadas. Apenas atualiza a tabela geometry_columns e as constraints correspondentes!

-- assinatura
-- SELECT * FROM UpdateGeometryColumn('nome_tabela','nome_coluna_espacial',novo_srid);
-- SELECT * FROM UpdateGeometryColumn('esquema','nome_tabela','nome_coluna_espacial',novo_srid);

SELECT * FROM UpdateGeometryColumn('public','teste','the_geom',-1);

ST_Transform

Iniciando nas funções realmente espaciais, temos a função ST_Transform. Você notará que todas as funções espaciais contém o prefixo ST. As anteriores não possuem o prefixo pois são funções administrativas. Esta função, realmente converte as coordenadas de um SRID para outro.

-- assinatura
-- ST_Transform(geometria,novo_srid);

-- sem transformacao
SELECT cd_equipamento_urbano, ST_AsText(the_geom) FROM equipamento_urbano;

-- transformada
SELECT cd_equipamento_urbano, ST_AsText(ST_Transform(the_geom,4618)) FROM equipamento_urbano;

Nesta seção vemos duas funções. ST_AsText que será explicada mais tarde, e a ST_Transform. Veja como podemos embrulhar funções dentro de funções, que são avaliadas de dentro para fora. Os resultados das queires acima são.

Tabela de pontos original em UTM Zona 22S

Tabela de pontos original em UTM Zona 22S

Esta é o resultado transformado:

Tabela de pontos transformada em SAD69 Lat/Long

Tabela de pontos transformada em SAD69 Lat/Long

Existem muiiiitas funções úteis no PostGIS que são realmente uma mão na roda. Próximo post falaremos de funções modificadoras de geometria e construção de geometrias.

Espero que tenham gostado.

Abraços

George R. C. Silva

Compartilhe:
28abr/102

Agricultura Familiar e Geoprocessamento

Olá Pessoal!

Hoje gostaria de comentar com vocês sobre um trabalho elaborado pela também Tecnóloga em Geoprocessamento, Julie Eugênio.

Há algum tempo ela preparou um projeto de gerenciamento de atividades de agricultura familiar fazendo uso de técnicas de Geoprocessamento.

O objetivo principal da pesquisa dela foi o desenvolvimento de uma aplicação, com base em técnicas de Geoprocessamento, para apoiar as atividades de um projeto voltado à agricultura familiar sustentável denominado “Cinturão Verde”, inserido no programa de microcrédito “Empreender-JP”, no município de João Pessoa, capital do Estado da Paraíba.

O mapa abaixo mostra a localização da área de estudo.

Durante a construção da aplicação SIG integrada a um Banco de Dados Geográficos deu-se ênfase ao uso de tecnologias livres, com destaque para o Quantum Gis (QGis) e PostgreSQL/PostGis.

Na parte escrita do trabalho desenvolvido foi detalhada toda a metodologia empregada. A qual está resumida na figura abaixo.

O trabalho foi extremamente elogiado pelos responsáveis técnicos da prefeitura de João Pessoa. Você pode fazer o download do trabalho completo a partir do link abaixo, que traz o tema da monografia escrita com base nesse projeto.

Gerenciamento de Atividades de Agricultura Familiar Sustentável com Base em Técnicas de Geoprocessamento, no Município de João Pessoa - PB

Espero que tirem proveito de mais essa demonstração da potencialidade do uso de tecnologias livres para Geoprocessamento.

Abraços.

--

Anderson Medeiros

Tecnólogo em Geoprocessamento

Compartilhe:
Get Adobe Flash playerPlugin by wpburn.com wordpress themes