SIG com Python

Este é um tema vasto e pretendo falar sobre alguns conceitos como: Datum, Sistemas de Coordenadas, Projeção, Sistema de Referência e conceitos de SIG (Sistemas de Informações Geográficas).
Não conseguiremos cobrir os conceitos de operações espaciais, porém na demonstração isto será ilustrado em linhas gerais.

Este é um artigo derivado do screencast SIG com Python, disponível no YouTube.

O ambiente em que executamos esta aplicação está disponível no servidor de código fonte da sigma em: https://gitlab.sigmageosistemas.com.br/screencasts/gis-hands_on, neste repositório você tem o Dockerfile e no repositório https://gitlab.sigmageosistemas.com.br/dev/dockerize você encontra instruções de como buildar e montar esta imagem.

Localização e Medições

Localizar e Medir são uma necessidade inerente ao ser humano desde as sociedades mais antigas.

Com o passar dos séculos, foi preciso definir medidas mais precisas e padronizá-las permitindo às pessoas em qualquer local do planeta, entender e realizar medições, para estimar distancias, áreas e locais, definindo precisamente as fronteiras de um pais, estado, cidade, fazendas e terrenos.

A Geodésia é a área de conhecimento que estuda e aprimora os métodos de medição do planeta.

O planeta terra tem forma similar à uma batata, sendo sua forma matemática mais aproximada, uma elipse, sendo assim, o primeiro passo para calcular as medidas do planeta é a definição de uma elipsoide de referência.

Devido a deformidade do planeta, a forma eliptica se encaixa melhor em variadas regiões, conforme alteramos os parâmetros de tamanho e posição deste em relação ao eixo da Terra. A estes parâmetros que definimos para o elipse chamamos de Datum.

Com base no Datum, podemos determinar em radianos o posicionamento de algo no globo terrestre, ou até mesmo em métros.
Porém quando precisamos representar esta informação em um mapa, em outras palavras, precisamos transformar uma bola em uma folha de papel, é necessário projetar do dado geográfico, projeção é um modelo matemático com base no datum e sistemas de coordenadas, que tranforma as coordenadas geográficas em um plano cartesiano.

A projeção tem diversos tipos:

Cilindricas (Normal, Transversa, Obliqua), Planas (Polar, Equatorial, Obliqua), além de outros tipos como Gnomonica, Estereográfica e etc.

Cada uma delas é ideal para determinadas regiões ou cenários de uso.

O que é um Sistema de Informação Geográfica (SIG)?

É um sistema computacional que utiliza dados de localização geográfica como: coordenadas ou endereços, em conjunto com algoritmos que consumam estes dados para contruir informações.

Não necessariamente um sistema GIS precisa exibir um mapa, ele pode por exemplo informar o tempo estimado para uma entrega ser concluída ou enviar um SMS indicando que seu bairro passará por uma instabilidade elétrica.

Checklist

Nesta seção apresentamos um checklist de como iniciar a definição de seu SIG. São perguntas importantes, que devem ser respondidas antes de sua construção. É uma etapa crucial, para que o SIG, atenda as necessidades da sua organização.

Qual é o sistema de referência de seu dado geográfico?

Por mais que para os desenvolvedores de sistema, este seja uma assunto muito complexo, é extremamente importante ter o conhecimento sobre alguns detalhes do dado geográfico utilizado.

A parte mais importante à se pensar ao criar um sistema de informação geográfica é qual sistema de referência vamos utilizar. Mas como escolher?

Respondendo as questões:

  • Qual abrangência da área de trabalho, cidade, estado, países?
  • Qual principal requisito: precisão de área e comprimento ou precisão de posicionamento?

A resposta destas duas questões é geralmente respondida pela equipe cartográfica de seu cliente ou por geográfos, porém é importante compreender os motivadores destas escolhas.

Qual a forma de obtenção das coordenadas?

Para sistemas que requerem precisão é necessário coletar as informações geográficas com equipamentos avançados, que possuam precisão métrica (ou submetrica) e permitam seu pós processamento, aumentando ainda mais sua precisão.

Para casos em que isso não é necessário, somente as coordenadas gps de um smartphone são suficientes.

Mas tenha em mente que toda iteração (ou interação) com o mapa para criar dados geográficos à mão livre é imprecisa, pois o nível de zoom e a referência pixels para coordenada geográfica prejudicam a precisão.

Qual é a informação que será produzida com este dado geográfico?

É muito importante pensar nisso quando vai contruir um sistema, pois ter uma mapa em sua aplicação a enriquece bastante, mas se não há uma utilidade funcional isso pode acabar tornando-se um grande problema.

Então é crucial pensar no resultado final, ou na informação que queremos produzir e mostrar aos nossos usuários.

Demo

A demonstração vai exibir código que permite importar dados de um arquivo shp, em seguida como apresentá-los no mapa e por fim sua consulta.

Shapefile: Formato binário de arquivos espaciais da ESRI, que se tornou bastante popular.
PostGIS: Banco de dados geográfico.
GEOS: Biblioteca de Operações Espaciais e Conversões;
TileStache: Servidor GIS de Vector Tiles;
Django TileStache: APP Django que cria um endpoint tilestache para suas entidades geográficas.
Django Rest Framework: Permite a criação de endpoints rest para seus django models.
Django Rest Framework GIS: Permite a serialização de Atributos geométricos e operações espaciais através do DRF endpoint;

Referências:

UFABC Flavia Feitosa: https://flaviafeitosa.files.wordpress.com/2015/06/02a_sistreferencia-compressed.pdf
Geodésia: https://pt.wikipedia.org/wiki/Geod%C3%A9sia
Curso de PostGIS Sigma: https://github.com/sigma-geosistemas/sigma.universidade.postgis/wiki/aula02
imagem qgis: https://flic.kr/p/UGGiGu

Cartogram Mapbox

Na semana passada (ou retrasada) o Mapbox lançou um novo aplicativo interessante: o Cartogram. Ele a princípio, mais parece um brinquedo do que uma ferramenta na realidade e seu propósito é bem simples:

O usuário (você), faz o upload de uma imagem no aplicativo Cartogram e o mesmo calcula e monta um mapa usando as cores das imagens, automaticamente.

Além disso, você pode escolher alguns pontos na imagem original, para selecionar como input para as cores do mapa.

Veja alguns exemplos que gerei:

Meu cachorro

Este exemplo foi gerado com um imagem feita pelo Prisma do meu cachorro.

POTD Nasa

O segundo exemplo foi gerado com a “Imagem do Dia” da NASA (disponível aqui).

Apesar de ser um aplicativo simples, é bastante útil, principamente se você já usa o Mapbox. Quando você está logado, ele permite que você salve o estilo diretamnte na sua biblioteca de estilos na conta principal, podendo ser utilizado em outros mapas.

Reserva Legal em Empreendimentos Hidrelétricos

De acordo com o professor Affonso Leme Machado uma Reserva Legal (RL) diz respeito a uma ETEP (Espaço Territorial Especialmente Protegido) o que, em breves linhas, se refere a “uma área definida geograficamente, que é destinada, ou regulamentada, e administrada para alcançar objetivos específicos de conservação”.

Em vista da Lei 12.651/2012, todo imóvel rural deve manter uma área com cobertura de vegetação nativa, essa área é a nossa Reserva Legal. Em outras palavras trata-se de uma área localizada em uma propriedade ou posse rural “com a função de assegurar o uso econômico de modo sustentável dos recursos naturais do imóvel rural, auxiliar a conservação e a reabilitação dos processos ecológicos e promover a conservação da biodiversidade, bem como o abrigo e a proteção de fauna silvestre e da flora nativa”. Na região da “Amazônia Legal” estas áreas devem ocupar entre 20% a 80% da propriedade. Em todas as outras regiões do país esse percentual é fixo e compreende a 20% do imóvel.

Importante: Uma RL não é uma APP (Área de Preservação Permanente) embora ambas sejam regularizadas pela mesma lei.

A Reserva Legal em empreendimentos hidrelétricos.

Vejamos. Assim como acontece em todos os empreendimentos dessa natureza, a área de inundação de uma hidrelétrica ocupará parcialmente (ou completamente) algumas dezenas ou centenas de imóveis. Cada uma dessas propriedades precisa estar adequada com o compliance previsto pelo código florestal. Sem os certificados e alvarás de regulamentação a opearação da sua hidrelétrica pode ficar refém da burocracia por alguns anos.

Discussão sobre a Lei florestal X Constituição

Entretanto, a novo código lei florestal (2012), ameniza a burocracia quando nos diz que (artigo 12, parágrafo 7º):

Não será exigido Reserva Legal relativa às áreas adquiridas ou desapropriadas por detentor de concessão, permissão ou autorização para exploração de potencial de energia hidráulica, nas quais funcionem empreendimentos de geração de energia elétrica, subestações ou sejam instaladas linhas de transmissão e de distribuição de energia elétrica.

Nesse sentido, se é verdade que a Reserva Legal é a área localizada no interior de uma propriedade ou posse rural e se todo imóvel rural deve manter área com cobertura de vegetação nativa, a título de Reserva Legal, fato é que a dispensa da Reserva Legal prevista no §7 o do novo Código Florestal contradiz o dispositivo constitucional que veda toda e qualquer utilização dos espaços territoriais e seus elementos protegidos que comprometa a integridade dos atributos que justifiquem sua proteção.

Ou seja, em se tratando que a proteção ambiental é matéria constitucional, como podemos ver nos artigos 24 e 225 da Constituição Federal de 1988, não podemos deixar de destacar que o novo Código Florestal em seu artigo 12, parágrafo 7º excluiu o Poder Público e a concessionária do dever fundamental de manter a Reserva Legal.

Outro ponto importante é que o parágrafo 7º menciona a exploração de energia hidráulica, a qual envolve diretamente os rios, ou seja, rios que são bens naturais de domínio da União. Dessa forma, lembramos abaixo o contido nos artigos 20, inciso III e 21, XII, alínea “b”, ambos da Constituição Federal 1988.

Art. 20. São bens da União:
I – os que atualmente lhe pertencem e os que lhe vierem a ser atribuídos;
II – as terras devolutas indispensáveis à defesa das fronteiras, das fortificações e
construções militares, das vias federais de comunicação e à preservação ambiental,

definidas em lei;

III – os lagos, rios e quaisquer correntes de água em terrenos de seu domínio, ou que banhem mais de um Estado, sirvam de limites com outros países, ou se estendam a território estrangeiro ou dele provenham, bem como os terrenos marginais e as praias fluviais;

Art. 21. Compete à União:

XII – explorar, diretamente ou mediante autorização, concessão ou permissão:
b) os serviços e instalações de energia elétrica e o aproveitamento energético dos cursos de água, em articulação com os Estados onde se situam os potenciais Hidroenergéticos;

No tocante a proteção do Meio Ambiente, cabe ressaltar mais uma vez que o artigo 225 da Constituição Federal impõe em seu caput de forma clara e precisa que o Poder Público (União, Estados, Municípios e Distrito Federal) e à coletividade o dever de defendê-lo e preservá-lo para as presentes e futuras gerações.

Nessa ótica, a lei exclui o Poder Público ou mesmo as Concessionárias de energia elétrica, da obrigação de preservar as áreas de preservação permanente, bem como as reservas legais, está violando os princípios estatuídos no artigo 225 da Constituição Federal.

Portanto, o que podemos concluir é que há divergências ocorrida dentro do direito ambiental, principalmente no que se refere a proteção das reservas legais quando envolve a construção de Usinas Hidrelétricas. Diante deste cenário as obrigações ambientais do empreendimento são judicializadas para que haja pleno direito de avaliação dos fatos em questão.

Bem, acabamos de apresentar uma das faces burocrática que envolve construir uma hidrelétrica. Além do inevitável trabalho com a papelada você ainda precisará lidar com o relevo legislativo (ainda um pouco instável).

Ferramentas como o Sistema Geoadmin propõem soluções para grandes de desafios de gestão fundiária (como construir uma hidrelétrica, por exemplo). Através destas plataformas os gestores ganha um aliado poderoso para enfrentar tarefas administrativas de grande porte.

O Sistema Geoadmin, permite aos usuários realizar com eficiência o controle de trâmites burocráticos (autorizações, certificados, permissões, licenças e prazos), orientar e direcionar equipes em campo (tempo real) entre outras funcionalidades valiosas para o planejamento e execução de empreendimentos complexos, como a construção da sua hidrelétrica.

Crie uma Conta no Geoadmin e veja como essa solução pode ser útil na gestão de seus empreendimentos

Geoadmin

SIG – Brasil – Como a implantação da INDE poderá auxiliar no seu dia-a-dia trabalhando com produção cartográfica?

O avanço da tecnologia da informação nos últimos 20 anos proporcionou grande impacto na vida dos profissionais na área da cartografia. A cartografia digital, com a evolução dos softwares e equipamentos de coleta de dados transformaram todo processo de produção cartográfica, tornando-o mais rápido e eficiente.
Com tanta facilidade e acesso a estas novas tecnologias, os produtos gerados nas diversas esferas e pelos diversos profissionais constituem uma enorme fonte de informação. Mas, mesmo com tanta informação gerada, não conseguimos encontrar com facilidade aquele base cartográfica específica de hidrografia ou sistema de transportes. E quando encontramos, muitos arquivos estão sem informações essenciais (fonte do levantamento, método utilizado, etc…) e outros apresentam tabela de atributo sem nenhuma informação correta ou estruturada. Para normalizar e organizar esta situação, a implantação da INDE (Infraestrutura Nacional de Dados Espaciais) torna-se essencial para melhor gestão das informações geográficas existentes no Brasil.
######O que é a INDE?
A INDE é o “conjunto integrado de tecnologias; políticas; mecanismos e procedimentos de coordenação e monitoramento; padrões e acordos, necessário para facilitar e ordenar a geração, o armazenamento, o acesso, o compartilhamento, a disseminação e o uso dos dados geoespaciais de origem federal, estadual, distrital e municipal.” Tem como principais objetivos:

  1. promover o adequado ordenamento na geração, armazenamento, acesso, compartilhamento, disseminação e uso dos dados geoespaciais;
  2. promover a utilização, na produção dos dados geoespaciais pelos órgãos públicos das esferas federal, estadual, distrital e municipal, dos padrões e normas homologados pela Comissão Nacional de Cartografia – CONCAR; e
  3. evitar a duplicidade de ações e o desperdício de recursos na obtenção de dados geoespaciais, por meio da divulgação da documentação (metadados) dos dados disponíveis nas entidades e nos órgãos públicos das esferas federal, estadual, distrital e municipal.

Um desafio grande da INDE está na utilização dos padrões e normas homologados pelo CONCAR nos órgãos públicos, principalmente naqueles onde não há setores ou profissionais capacitados para gestão de dados geográficos. Atualmente, o Exército Brasileiro, a partir da DSG (Diretoria de Serviço Geográfico) tem o encargo de elaborar Normas Técnicas para o Sistema Cartográfico Nacional no que concerne às séries de cartas gerais das escalas de 1:250.000 e maiores (Decreto-Lei 243, de 28/02/1967, Art. 15, §1º, item 2.). As normas elaboradas estão disponibilizadas no portal do portal do exército (http://www.geoportal.eb.mil.br/index.php/inde2), caso você ainda não conheça segue descrição:

ET-EDGV – Especificação Técnica para Estruturação de Dados Geoespaciais Vetoriais (define um modelo conceitual);

ET-ADGV – Especificação Técnica para a Aquisição de Dados Geoespaciais Vetoriais (define regras de aquisição da geometria dos dados);

ET-PCDG – Especificação Técnica de Produtos de Conjuntos de Dados Geoespaciais (define os padrões dos produtos vetoriais e matriciais);

ET-RDG – Especificação para a Representação de Dados Geoespaciais (garante a consistência na representação das classes de objetos);

ET-CQDG – Especificação Técnica para o Controle de Qualidade dos Produtos de Conjuntos de Dados Geoespaciais (define os procedimentos para o controle de qualidade dos produtos);`

Caso você utilize QGIS na produção de dados cartográficos, instale o plugin DSG Tools para utilizar funcionalidades de banco de dados (criar base dados no modelo da INDE) e camadas wms, com imagens de satélite rapideye e landsat e camadas de cartas topográficas, tudo disponibilizado pelo exército.
dsgtools

Na próxima postagem iremos demonstrar como produzir dados vetoriais a partir do modelo da EDGV, utilizando um banco de dados spatialite criado pelo DSG Tools.

Maiores informações sobre assunto você econtra aqui:

http://www.inde.gov.br/
http://www.geoportal.eb.mil.br/index.php/inde2

3 Ferramentas do PostGIS que são uma mão na roda

Não é segredo algum, mas todos sabemos que o PostGIS é a extensão espacial mais produtiva do mundo. Ela não só possui mais funcionalidades do que as outras disponíveis no mercado, mas como é open-source, com uma comunidade incrível por trás.

Hoje vou revelar alguns pequenos segredos escondidos nas funcionalidades do PostGIS para vocês. Estas funções, com toda certeza, irão te tornar mais produtivo e efetivo no uso desta ferramenta tão legal.

1. Escrita de Geometrias

Ler e escrever faz parte do básico do PostGIS. Existem várias funções que permitem a leitura e a escrita de geometrias no formato que o PostGIS espera.

Existem funções para conversão de texto para geometria, bytes para geometria e outros formatos. Mas a campeã de flexibilidade para testes rápidos e verificações é a ST_GeomFromText.

Veja abaixo um exemplo de como usá-la:

SELECT * FROM ST_GeomFromText('POINT(0 0)', 4326);

Veja a saída do PostGIS, no formato interno.

0101000020E610000000000000000000000000000000000000

Lembro, que esta funcionalidade não é somente útil para a conversão para o formato esperado, mas também para usar seu resultado como entrada para outras funções, como no exemplo:

-- o polígono interseciona o ponto?
SELECT * FROM ST_Intersects(
    ST_GeomFromText('POLYGON((0 0, 0 1, 1 1, 1 0, 0 0))', 4326),
    ST_GeomFromText('POINT(0 0)', 4326)
);

Retornando um resultado positivo:

t

A assinatura desta função é bem simples. Ela espera como primeiro parâmetro uma string e opcionalmente um inteiro, representando o SRID (Spatial Reference ID). Nos exemplos foi usado WGS-84 como SRID.

Referência: ST_GeomFromText

2. Validade de Geometrias

A validade das geometrias é uma questão importantíssima para qualquer tipo de uso em pacotes de geoprocessamento.

É bom lembrar que o único tipo de geometria (definido na [SFS] (Simple Feature Specification) que possui validade são os tipos poligonais (Polygon e MultiPolygon). Os outros tipos podem ser testados para sua validade, mas ela é sempre verdadeira.

Geometrias inválidas não podem ser corretamente renderizadas e irão “mentir” quando investigadas sob diversos aspectos – notavelmente, cálculos de área e testes de interseção podem falhar com geometrias inválidas.

No PostGIS, existem algumas formas de se verificar a validade de geometrias. São três funções simples que podem te ajudar a identificar culpados. As funções são:

  • ST_IsValid – Verifica a validade de uma geometria e retorna verdadeiro ou falso.
  • ST_IsValidReason – Verifica a validade de uma geometria e retorna a razão pela qual a mesma é inválida, exemplo: auto intersecção.
  • ST_IsValidDetail – Verifica a validade de uma geometria e retorna o motivo e a localização do problema, exemplo:
SELECT * FROM
    ST_IsValidDetail(
        ST_GeomFromText('POLYGON((0 0, 0 -1, 0 1, 1 1, 1 0, 0 0))', 4326)
    );

O resultado, neste caso, é uma tupla com três elementos: valid, reason e location:

f;"Self-intersection";"01010000000000000000000000000000000000F0BF"

3. Transformação de Referência Espacial

O PostGIS suporta mútliplas referências espaciais. Tradicionalmente, isto é conhecido por um código EPSG , o SRID.

SRID é a abreviação para Spatial Reference System Identifier, definido originalmente pelo EPSG. É um código único que identifica um sistema de referência espacial, com todos as suas variações de datum, projeção e sistema de coordenadas.

EPSG é a abreviação para Euroupean Petroleum Survey Group – que não existe mais, foi absorvido pelo IOGP (International Association of Oil and Gas Producers).

Geralmente, cada tabela no PostGIS, possui apenas uma coluna geométrica, com um SRIDdefinido. Apesar disso, o PostGIS suporta múltiplas colunas geométricas em uma mesma tabela e até mesmo colunas geométricas com referências espaciais nulas.

A multiplicidade de dados geográficos faz necessária a conversão entre diferentes SRIDs. Lembramos também que comparações e testes de relacionamento entre geometrias (como se uma geometria interseciona outra) devem ser feitos apenas se ambas geometrias possuem o mesmo sistema de referência espacial.

Um exemplo simples, é a conversão de uma coordenada UTM, na zona 22 Sul em SIRGAS 2000 para SIRGAS 2000 geográfico:

SELECT * FROM 
    ST_AsText(
        ST_Transform(
            ST_GeomFromText(
                'POINT(789071 7905599)', 31982),
                4674
            )
        )

Note que na chamada acima, usamos ST_GeomFromText para “instanciar” as geometrias em memória, de coordenadas geográficas, transformamos as mesmas com ST_Transform e pedimos sua representação textual com ST_AsText.

Para referências de códigos EPSG e SRIDs, use o site epsg.io. Abaixo estão as duas URLs as referências espaciais usadas no comando acima:

  • 31982 – SIRGAS 2000 UTM 22S;
  • 4674 – SIRGAS 2000 – Geográfico;

Conclusão

Apesar de discutirmos neste artigo, funções básicas do PostGIS, elas são muito úteis em todos os cenários, seja no desenvolvimento de sistemas com o PostGIS ou utilizando o PostGIS como motor de análise espacial.

Este é um dos primeiros artigos sobre PostGIS. Fique ligado aqui no blog que logo logo teremos mais.

Abraços