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

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

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

Para mais informações, dê uma olhada no padrão OGC Simple Feature for SQL.

17.2.3. Adicionar um campo de geometria para a tabela

Let’s add a point field to our people table:

alter table people add column the_geom geometry;

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

You will notice that the geometry field type does not implicitly specify what type of geometry for the field - for that we need a constraint:

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.

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

Verifique seus resultados

17.2.6. Preencher a tabela geometry_columns

At this point you should also add an entry into the geometry_columns table:

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

If the above INSERT statement causes an error, run this query first:

select * from geometry_columns;

If the column f_table_name contains the value people, then this table has already been registered and you don’t need to do anything more.

O valor 2 refere-se 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).

17.2.6.1. Try Yourself basic

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

Verifique seus resultados

17.2.7. Adicionar registro geometria para a tabela usando SQL

Now that our tables are geo-enabled, we can store geometries in them:

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.

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

Verifique seus resultados

17.2.8. In Conclusion

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

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