16.2. Lesson: Modelo de Feição Simples

Como podemos armazenar e representar feições geográficas em um banco de dados? Nesta lição nós vamos cobrir uma abordagem, o modelo de feição simples, tal como definido pela OGC.

O objetivo desta lição: saber o que é o Modelo SFS e como usá-lo.

16.2.1. O que é OGC

O Open Geospatial Consortium (OGC) é uma organização internacional voluntária de padrões de consenso, originada em 1994. Na OGC, mais do que 370 organizações comerciais, governamentais, sem fins lucrativos e de pesquisa em todo o mundo colaboram em um processo de consenso aberto, encorajando o desenvolvimento e implementação de padrões para conteúdos e serviços geoespaciais, processamento de dados SIG e compartilhamento de dados. * - * Wikipedia

16.2.2. Qual é o modelo SFS

O modelo Simple Feature for SQL (SFS) é uma maneira não topológica de armazenar dados geoespaciais em um banco de dados e define as funções para acesso, operação e construção desses dados.

../../../_images/ogc_sfs.png

O modelo define dados geoespaciais dos tipos ponto, linha e polígono (e agregações deles para multi-objetos).

For further information, have a look at the OGC Simple Feature for SQL standard.

16.2.3. Adicionar um campo de geometria para a tabela

Vamos adicionar um campo de ponto à nossa tabela de pessoas:

alter table people add column the_geom geometry;

16.2.4. Adicione uma restrição com base no tipo de geometria

Você vai notar que o tipo de campo da geometria não especifica implicitamente o tipo de geometria para o campo - para isso precisamos de uma restrição:

alter table people
add constraint people_geom_point_chk
    check(st_geometrytype(the_geom) = 'ST_Point'::text
          OR the_geom IS NULL);

Isso adiciona uma restrição à tabela para que ela só aceite uma geometria do tipo ponto ou um valor nulo.

16.2.5. Try Yourself hard

Crie uma nova tabela chamada “cities” e crie algumas colunas apropriadas, incluindo um campo de geometria para armazenar os polígonos (os limites da cidade). Certifique-se de que tenha uma restrição forçando as geometrias a serem polígonos.

16.2.6. Preencher a tabela geometry_columns

Neste ponto, você também deve adicionar uma entrada na tabela geometry_columns:

insert into geometry_columns values
  ('','public','people','the_geom',2,4326,'POINT');

Por Quê? geometry_columns é usado em certas aplicações para se certificar que as tabelas no banco de dados contém dados de geometria.

Nota

Se a instrução INSERT acima causar um erro, execute esta consulta primeiro:

select * from geometry_columns;

Se a coluna f_table_name contiver o valor people, essa tabela já foi registrada e você não precisará fazer mais nada.

O valor 2 se refere ao número de dimensões; neste caso, duas: X e Y.

O valor 4326 refere-se à projeção que estamos usando; neste caso, WGS 84, que é referido pelo número 4326 (ver discussão anterior sobre a EPSG).

Try Yourself basic

Insira um registro apropriado, para sua nova camada “cities”, em geometry_columns.

16.2.7. Adicionar registro geometria para a tabela usando SQL

Agora que nossas tabelas estão ativadas geograficamente, podemos armazenar geometrias nelas:

insert into people (name,house_no, street_id, phone_no, the_geom)
        values ('Fault Towers',
                 34,
                 3,
                 '072 812 31 28',
                 'SRID=4326;POINT(33 -33)');

Nota

Na nova entrada acima, você precisará especificar qual projeção (SRID) que deseja usar. Isso porque você entrou com a geometria do novo ponto usando um texto simples, o que não adiciona automaticamente as informações de projeção corretas. Obviamente, o novo ponto precisa usar o mesmo SRID que o conjunto de dados que está sendo adicionado, então você precisa especificá-lo.

Se neste momento você estivesse usando uma interface gráfica, por exemplo, especificar a projeção para cada ponto seria feito automaticamente. Em outras palavras, você geralmente não precisa se preocupar sobre como usar a projeção correta para cada ponto que você deseja adicionar se você já tiver especificado-a para esse conjunto de dados, como fizemos anteriormente.

Agora provavelmente é um bom momento para abrir o QGIS e tentar ver a sua tabela people. Além disso, devemos tentar editar / adicionar / excluir registros e, em seguida, executar consultas ao banco de dados para ver como os dados foram alterados.

Para colocar uma camada PostGIS no QGIS, utilize a opção de menu Camada ► Adicionar camada PostGIS ou o botão na barra de ferramentas:

addPostgisLayer

A seguinte caixa de diálogo abrirá:

../../../_images/add_postgis_layer_dialog.png

Clique no botão Novo para abrir esta caixa de diálogo:

../../../_images/new_postgis_connection.png

Em seguida, defina uma nova conexão, por exemplo:

Name: myPG
Service:
Host: localhost
Port: 5432
Database: address
User:
Password:

Para ver se o QGIS encontrou o banco de dados address e se o seu nome de usuário e senha estão corretos, clique em Testar Conexão. Se funcionar, marque as opções Salvar nome do usuário e Salvar Senha. Em seguida, clique OK para criar esta conexão.

Voltando à caixa de diálogo Adicionar tabela(s) PostGIS, clique em Conectar e adicione camadas ao seu projeto como de costume.

Try Yourself moderate

Formule uma consulta que mostre o nome da pessoa, o nome da rua e a posição (a partir da coluna the_geom) como texto simples.

16.2.8. In Conclusion

Você já viu como adicionar objetos espaciais a seu banco de dados e exibi-los no software GIS.

16.2.9. What’s Next?

Em seguida, você vai ver como importar dados para o e dados de exportação de, seu banco de dados.