17.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.

17.1.1. Instalando no Ubuntu

PostGIS é facilmente instalado a partir de apt.

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

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

Nota

Dependendo de qual versão do Ubuntu você está usando e quais repositórios você tiver configurado, esses comandos irão instalar o PostGIS 1.5 ou o 2.x. Você pode encontrar a versão instalada emitindo 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-get update
$ sudo apt-get install postgresql-9.1-postgis-nightly

17.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.

Primeiro, visite a página de download.

Depois, siga este guia.

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

17.1.3. Instalando em outras plataformas

The PostGIS website download has information about installing on other platforms including macOS and on other linux distributions

17.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 inferior a 9.1, você terá que seguir um conjunto diferente de medidas a fim de instalar as extensões PostGIS para o seu banco de dados. Por favor, consulte a Documentação do PostGIS para obter instruções sobre como fazer isso. Há também algumas instruções na versão anterior deste manual.

17.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.

Our PostgreSQL address database is now geospatially enabled, thanks to PostGIS. We are going to delve a lot deeper into this in the coming sections, but let’s give you a quick little taster. Let’s say we want to create a point from text. First we use the psql command to find functions relating to point. If you are not already connected to the address database, do so now. Then run:

\df *point*

This is the command we’re looking for: st_pointfromtext. To page through the list, use the down arrow, then press q to quit back to the psql shell.

Try running this command:

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

Result:

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.

To get the results back as text, we can do a quick scan through the function list for something that returns text:

\df *text

The query we’re looking for now is st_astext. Let’s combine it with the previous query:

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

Result:

 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.

One last example before we really get into the detail of using 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.

17.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.

First, let’s look at the schema of the table by entering the following command in the psql prompt:

\d spatial_ref_sys

The result should be this:

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.

One SRID you may be interested in is EPSG:4326 - the geographic / lat lon reference system using the WGS 84 ellipsoid. Let’s take a look at it:

select * from spatial_ref_sys where srid=4326;

Result:

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).

17.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.

17.1.8. What’s Next?

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