16.1. Lesson: Configuração PostGIS

Configurando funções PostGIS lhe permitirá acessar as funções espaciais de dentro do PostgreSQL.

O objetivo desta lição: Instalar funções espaciais e demonstrar brevemente os seus efeitos.

Nota

Vamos assumir o uso de PostGIS versão 2.1 neste exercício. A instalação e configuração do banco de dados são diferentes para versões mais antigas, mas o resto deste material neste módulo continuará a funcionar. Consulte a documentação para a sua plataforma para ajudar com a instalação e configuração do banco de dados.

16.1.1. Instalando no Ubuntu

PostGIS é facilmente instalado a partir de apt.

$ sudo apt install postgis
$ sudo apt install postgresql-9.1-postgis

Realmente, não é assim tão fácil …

Nota

Dependendo da versão do Ubuntu que você está usando e dos repositórios que você configurou, esses comandos instalarão o PostGIS 1.5 ou 2.x. Você pode encontrar a versão instalada fazendo uma consulta select PostGIS_full_version (); com psql ou outra ferramenta.

Para instalar a versão mais recente do PostGIS, você pode usar os seguintes comandos:

$ sudo apt-add-repository ppa:sharpie/for-science
$ sudo apt-add-repository ppa:sharpie/postgis-nightly
$ sudo apt update
$ sudo apt install postgresql-9.1-postgis-nightly

16.1.2. Instalando no Windows

Instalar no Windows é um pouco mais complicado, mas não é difícil. Note que você precisa estar on-line para instalar o postgis.

Antes Visite a página de download.

Depois siga este guia.

Mais informações sobre a instalação no Windows podem ser encontradas no website PostGIS.

16.1.3. Instalando em outras plataformas

O ` website PostGIS download <https://postgis.net/install/>`_ tem informações sobre a instalação em outras plataformas incluindo macOS e outras distribuições linux

16.1.4. Configurando Bancos de Dados para usar PostGIS

Uma vez que o PostGIS esteja instalado, você precisará configurar seu banco de dados para usar as extensões. Se você tiver instalado o PostGIS versão > 2.0, bastará simplesmente emitir o seguinte comando, com o psql, utilizando o banco de dados “address” do nosso exercício anterior:

$ psql -d address -c "CREATE EXTENSION postgis;"

Nota

Se você estiver usando o PostGIS 1.5 e uma versão do PostgreSQL anterior a 9.1, precisará seguir um conjunto diferente de etapas para instalar as extensões do postgis no seu banco de dados. Por favor, consulte a Documentação do PostGIS para obter instruções sobre como fazer isso.

16.1.5. Olhando para as funções instaladas do PostGIS

O PostGIS pode ser visualizado como uma coleção de funções no banco de dados que ampliam as capacidades do núcleo do PostgreSQL para que ele possa lidar com dados espaciais. Por ‘lidar com’, queremos dizer armazenar, recuperar, consultar e manipular. A fim de fazer isso, um número de funções são instaladas no banco de dados.

Nosso banco de dados endereço do PostgreSQL agora está ativado geoespacialmente, graças ao PostGIS. Iremos nos aprofundar muito nas próximas seções, mas vamos dar uma pequena amostra rápida. Digamos que queremos criar um ponto a partir do texto. Primeiro, usamos o comando psql para encontrar funções relacionadas ao ponto. Se você ainda não está conectado ao banco de dados endereço, faça isso agora. Então execute:

\df *point*

Este é o comando que estamos procurando: st_pointfromtext. Para percorrer a lista, use a seta para baixo e pressione Q para voltar ao shell psql.

Tente executar este comando:

select st_pointfromtext('POINT(1 1)');

Resultado:

st_pointfromtext
--------------------------------------------
0101000000000000000000F03F000000000000F03F
(1 row)

Três coisas a serem observadas:

  • nós definimos um ponto na posição 1,1 (é assumido o EPSG:4326) usando POINT(1 1);

  • executamos uma instrução SQL, sem nenhuma tabela, apenas com dados inseridos no prompt do SQL;

  • o resultado não faz muito sentido.

O resultado está no formato OGC chamado ‘Well Known Binary’ (WKB). Nós veremos esse formato em detalhes na próxima seção.

Para recuperar os resultados como texto, podemos fazer uma varredura rápida na lista de funções em busca de algo que retorne texto:

\df *text

A consulta que estamos procurando agora é st_astext. Vamos combiná-lo com a consulta anterior:

select st_astext(st_pointfromtext('POINT(1 1)'));

Resultado:

 st_astext
------------
  POINT(1 1)
  (1 row)

Aqui, entramos com a string POINT (1,1), transformada em um ponto usando ST_PointFromText (), e transformada de volta para um formato legível com :kbd:`ST_AsText () `, que nos deu de volta a nossa string original.

Um último exemplo antes de realmente entrarmos nos detalhes do uso do PostGIS:

select st_astext(st_buffer(st_pointfromtext('POINT(1 1)'),1.0));

O que isso faz? Ele cria um buffer de 1 grau em torno do nosso ponto e devolveu o resultado como texto.

16.1.6. Sistemas de referência espacial

Além das funções do PostGIS, a extensão contém uma coleção de definições de sistemas de referência espacial (SRS), tal como definido pelo European Petroleum Survey Group (EPSG). Estes são utilizados durante as operações, tais como conversões entre sistemas de coordenadas de referência (SCR).

Nós podemos inspecionar estas definições de SRS no nosso banco de dados, já que as mesmas são armazenadas em tabelas normais no banco.

Primeiro, vejamos o esquema da tabela digitando o seguinte comando no prompt do psql:

\d spatial_ref_sys

O resultado deve ser este:

Table "public.spatial_ref_sys"
   Column   |          Type           | Modifiers
 -----------+-------------------------+-----------
  srid      | integer                 | not null
  auth_name | character varying(256)  |
  auth_srid | integer                 |
  srtext    | character varying(2048) |
  proj4text | character varying(2048) |
  Indexes:
"spatial_ref_sys_pkey" PRIMARY KEY, btree (srid)

Você pode usar consultas SQL padrão (como aprendemos com nossas seções introdutórias), para visualizar e manipular essa tabela - embora não seja uma boa ideia atualizar ou excluir todos os registros, a menos que você saiba o que está fazendo.

Um SRID no qual você estar interessado é o EPSG: 4326 - o sistema de referência geográfica / lat lon usando o elipsóide WGS 84. Vamos dar uma olhada nisso:

select * from spatial_ref_sys where srid=4326;

Resultado:

srid      | 4326
auth_name | EPSG
auth_srid | 4326
srtext    | GEOGCS["WGS 84",DATUM["WGS_1984",SPHEROID["WGS
84",6378137,298.257223563,AUTHORITY["EPSG","7030"]],TOWGS84[0,
0,0,0,0,0,0],AUTHORITY["EPSG","6326"]],PRIMEM["Greenwich",0,
AUTHORITY["EPSG","8901"]],UNIT["degree",0.01745329251994328,
AUTHORITY["EPSG","9122"]],AUTHORITY["EPSG","4326"]]
proj4text | +proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs

O srtext é a definição da projeção em WKT (você pode encontrá-la em arquivos .prj em uma coleção shapefile).

16.1.7. In Conclusion

Você agora tem funções PostGIS instaladas em sua cópia do PostgreSQL. Com isso, você vai ser capaz de fazer uso de extensas funções espaciais PostGIS.

16.1.8. What’s Next?

Em seguida, você vai aprender como características espaciais são representados em um banco de dados.