Publicado por: sadeckgeo | agosto 18, 2015

Área e Perímetro – PostGIS

ST_Postgis

O Cálculo de área e perímetro são duas funções dentro das geotecnologias que são corriqueiras e são usados a todo momento. Porém, nem sempre elas são tão simples de serem obtidas uma vez que você não é só apertador de botão… Se você precisar criar uma função em software ou em um geoweb, ou até mesmo em um projeto dentro de um banco de dados essa atividade pode se tornar um tanto complexa.

Lembro que geralmente é melhor que seus dados estejam em sistema de projeção com unidade métrica, se não estiverem você precisará ou converter o dado ou fazer com que a função use uma outra instância que esteja em metros para que o cálculo seja mais facilmente aplicado, como o Data Frame no ArcGIS ou a View no TerraView nas versões 4.x.

Quando trabalhamos com Banco de dados espaciais (PostGIS), essa propriedade espacial é regida pelo código EPSG – Geodetic Parameter Dataset, que é um conjunto de definições de sistemas de coordenadas de referência que podem ser global, regional, nacional ou local. No PostGIS esses códigos e configurações estão escritos na tabela spatial_ref_sys, porém ela não contém todos os sistemas de referência, então você pode inserir novos.

Basta ir ao site http://spatialreference.org/ e procurar sua projeção, depois é só pegar o código do INSERT (PostGIS spatial_ref_sys INSERT) e executar no PostGIS. Caso sua projeção esteja sendo criada, você mesmo pode escrever a sintaxe. Um outro site bem legal para verificação de outras configurações da projeção como elipsóides, métodos e etc, é o http://epsg.io/ .

Aqui tem uma SQL para o cálculo de área e perímetro no PostGIS 1.4.2, que é bem simples. 

SELECT 
 Round (Cast (St_perimeter(Astext(St_transform(spatial_data, 99822))) / 1000 AS NUMERIC), 4) AS "perimetro", 
 Round (Cast (St_area(Astext(St_transform(spatial_data, 99822))) / 1000 AS NUMERIC), 4) AS "area" 
FROM 
 VS_2004_2012;

Como bem lembrado pelo amigo Fabiano Morelli na versão mais recente do PostGIS 2.1.8, não temos a função Astext e sim a função St_astext, logo sua consulta deve ser alterada nessa função. Uma observação importante é que esse banco não é nativo PostGIS, perceba que a coluna espacial é a spatial_data que vem do software TerraAmazon e não a geom como de costume, por isso essa estrutura. Já o St_transform, foi aplicado pois a coordenada estava em decimal de grau no banco e o cálculo precisa ser feito em coordenadas métricas.

ROUND: é uma função matemática que funciona sobre dados tipo numeric ou integer fazendo o arredondamento em casas decimais;

CAST:  realizar a conversão entre dois tipos de dados, tipo: double precision  – numeric, como nesse exemplo a cima;

ST_PERIMETER: retorna a medição do comprimento do limite de uma geometria que precisa estar com a unidade de referência espacial em metros;

ST_AREA: retorna a área da superfície de um polígono ou multi-polígono;

ASTEXT ou ST_AsText: retorna a coordenada da geometria;

ST_TRANSFORM: retorna a geometria com as coordenadas transformadas, esse processo necessita de um SRID existente na tabela SPATIAL_REF_SYS;

SPATIAL_DATA: coluna que guarda as coordenadas do vetor;

99822 : É um sistema de projeção criado em Albers/SAD69, para a Amazônia.

Outras explicações sobre essas funções vocês podem ver no manual do postgis. http://postgis.net/docs/index.html

Sei que essas são funções básicas e corriqueiras para alguns, mas espero que ajude aqueles que estão iniciando em BD.

Qualquer duvida, sugestão e/ou comentário entre em contato por aqui, nos comentários ou por nossas redes sociais.

Um abraço.


Deixe uma resposta

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s

Categorias

%d blogueiros gostam disto: