1. Introdução à Linguagem de Consulta SQL

O uso de dados geoespaciais tem sido cada vez mais comum nas aplicações do cotidiano, bem como nas diversas áreas do conhecimento. Esses dados são fundamentais em tomadas de decisão, em problemas ambientais e socioeconômicos. O monitoramento de operações de crédito rural por meio de geotecnologias depende do tratameto e análise de diversos conjuntos de dados geoespaciais. Esses conjuntos de dados podem ter desde poucos Kilobytes, como no caso do cadastro de empregadores que submeteram trabalhadores a condições análogas à escravidão (Seção 4.9), até Gigabytes, como os microdados do Sicor (Seção 3.1). Logo, é imprescindível dominar e utilizar tecnologias que ajudem na organização de uma base de dados bem estruturada, que permita o seu compartilhamento e que também possibilite a extração de subconjuntos desses dados ou até mesmo a realização de análises.

PostgreSQL

As tecnologias de bancos de dados foram desenvolvidas nos anos 70 e 80, justamente para atender esse tipo de demanda. Neste capítulo, será apresentado o uso básico da linguagem SQL em um servidor típico de bancos de dados, o PostgreSQL. O PostgreSQL é um Sistema Gerenciador de Bancos de Dados Objeto-Relacional (SGBD-OR), gratuito e de código fonte aberto, desenvolvido a partir do projeto Postgres, iniciado em 1986, na Universidade da Califórnia, em Berkeley, sob a liderança do professor Michael Stonebraker [4, 5]. O código fonte do núcleo do PostgreSQL encontra-se escrito na Linguagem de Programação C, o que garante grande portabilidade, estando disponível para as principais plataformas de hardware e sistemas operacionais como Linux, macOS e Microsoft Windows.

PostGIS

Além das inúmeras funcionalidades, esse SGBD possui diversas extensões ou plugins. Uma delas é o PostGIS, que permite utilizar o PostgreSQL no domínio geoespacial através da inclusão de tipos geométricos e operadores espaciais capazes de tratar dados geográficos, além de um mecanismo de indexação baseado em Árvores-R [6] para acelerar as consultas espaciais. O PostGIS é uma biblioteca de software livre, sob a licença GNU GPL versão 2 (GPLv2), inicialmente desenvolvida pela empresa Canadense Refractions Research nos anos 2000. Esta extensão foi projetada e implementada com base na especificação OGC Simple Feature (OGC-SFS), que é uma especificação aberta com requisitos de interoperabilidade em sistemas geoespaciais [7], incluindo os sistemas de bancos de dados espaciais baseados em SQL [8]. A ISO (International Organization for Standardization), responsável pela padronização da linguagem SQL, partiu da OGC-SFS para criar o documento denominado SQL multimedia and application packages - Part 3: Spatial [9], o qual estende os tipos geométricos da OGC-SFS com tipos circulares e compostos. Essa última especificação tem sido utilizada como referência na implementação do PostGIS.

A extensão PostGIS atualmente contempla diversas outras funcionalidades, como suporte a dados matriciais, através do módulo PostGIS Raster, e o tratamento de dados em 3D, com o módulo SFSCGAL. A Figura 1.1 mostra o PostGIS como uma extensão do SGBD PostgreSQL, integrando as bibliotecas GEOS [10], que fornece o suporte à maioria das operações espaciais, como as topológicas, a biblioteca Proj, usada para transformação entre sistemas de referência espaciais, a GDAL, para tratamento de dados matriciais, e a CGAL, bibloteca de geometria computacional capaz de tratar dados tridimensionais. Repare que o servidor PostgreSQL fornece componentes para análise sintática das consultas, para definição dos planos ou estratégias de execução das consultas, bem como gerenciamento dos dados em disco e memória, enquanto o PostGIS acrescenta a capacidade de tratar os tipos geométricos e matricial com funcionalidades presentes em várias outras bibliotecas.

Arquitetura PostGIS

Figura 1.1 - Arquitetura PostGIS.

Neste capítulo será utilizado o PostgreSQL versão 16.4 e sua extensão geográfica PostGIS 3.4.2 para exemplificar as funcionalidades presentes em um servidor típico de bancos de dados capaz de suportar consultas SQL no domínio geoespacial.

Aviso

Parte do material deste capítulo foi retirado do livro online Bancos de Dados Geográficos - Teoria e Prática com PostgreSQL e PostGIS [11].