Uma das inúmeras vantagens de se trabalhar com o PostGIS é a possibilidade de criar views das análises espaciais, tornando os resultados das análises dinâmicas em função dos dados de entrada utilizados. Desta forma também evita-se a criação de novo layers em função de uma atualização da base.
Para exemplificar, vamos imaginar a seguinte situação: em uma determinada cidade foi definido que a área de influência de uma parada de ônibus é de 40 metros e que a prefeitura deve identificar quais são os lotes dentro de cada área de influência das paradas. Apesar da situação ser muito comum para quem já trabalha com SIG, surge a necessidade de se repetir a análise a cada nova parada inserida ou excluída no sistema, o que pode acabar gerando inconsistências na base em função do mal gerenciamento destes arquivos.
Com o uso do PostGIS e do GvSIG eu vou mostrar como resolver este problema sem a necessidade de ficar criando novas camadas a partir das análises desse problema, no caso, a criação do buffer de 40 metros e a consulta espacial (intersects).
No PgAdmin 3, crie um novo Banco de Dados Espacial com o nome cadastro (Figura 1), em seguida, baixe, descompacte e carregue no banco criado o arquivo SQL do link abaixo (Figura 2):
Figura 1 - Criação do Banco de Dados Espacial |
Figura 2 - Carregando o Script SQL da tabela Lote |
Agora vamos criar a tabela ponto_onibus a partir do script abaixo (Figura 3):
CREATE TABLE ponto_onibus( id serial PRIMARY KEY, observacao varchar(50) ); SELECT AddGeometryColumn ( 'public', -- esquema 'ponto_onibus', -- nome da tabela 'the_geom', -- nome da coluna '29185', -- SRID 'POINT', -- tipo de geometria 2 -- plano (2d) );
Figura 3 - Criação da tabela ponto_onibus no PgAdmin |
Vamos criar duas views, uma para os buffers de 40 metros em torno das paradas de ônibus e a outra dos os lotes que estão dentro desta distância (função intersects).
-- Criando a view buffer_ponto_onibus CREATE OR REPLACE VIEW buffer_ponto_onibus AS SELECT id, buffer(the_geom, 40) AS the_geom FROM ponto_onibus; -- Registrando a view na tabela de metadados geometry_columns INSERT INTO geometry_columns(f_table_catalog, f_table_schema, f_table_name, f_geometry_column, coord_dimension, srid, "type") VALUES ('', 'public', 'buffer_ponto_onibus', 'the_geom', 2, 29185, 'POLYGON'); -- Criando a view lotes_ponto_onibus CREATE OR REPLACE VIEW lotes_ponto_onibus AS SELECT l.* FROM lote l, buffer_ponto_onibus b WHERE intersects(l.the_geom, b.the_geom); -- Registrando a view na tabela de metadados geometry_columns INSERT INTO geometry_columns(f_table_catalog, f_table_schema, f_table_name, f_geometry_column, coord_dimension, srid, "type") VALUES ('', 'public', 'lotes_ponto_onibus', 'the_geom', 2, 29185, 'POLYGON');
Abra o GvSIG e mude a projeção do bloco para 29185 (Figura 4)
Figura 4 - Troca do sistema de projeção no GvSIG |
Com o bloco aberto, clique no botão adicionar plano de informação e escolha a segunda aba (GeoDB), em seguida configure a conexão com o banco de dados "cadastro" (Figura 5).
Figura 5 - Configuração da conexão com o Banco de Dados |
Configurada a conexão, adicione as tabelas "lote" e "parada_onibus" e as views "buffer_ponto_onibus" e "lotes_ponto_onibus" (Figura 6).
Figura 6 - Adicionando as camadas do BD |
Inicie a edição da camada ponto_onibus clicando com o botão direito em cima desta camada e escolhendo a opção "Iniciar Edição" em seguida, adicione algumas paradas de forma aleatória. Termine a edição Salvando as alterações (Figura 7).
Figura 7 - Inserindo os pontos de ônibus |
Figura 8 - Resultado dinâmico das análises a partir dos pontos criados |
A cada novo ponto criado ou excluído, as duas views são atualizadas automaticamente (Figura 9).
Figura 9 - Resultado das análises após modificar a camada ponto_onibus |
Esperam que tenham gostado dessa dica, até a próxima!
Nenhum comentário:
Postar um comentário