Importante

A tradução é um esforço comunitário você pode contribuir. Esta página está atualmente traduzida em 68.00%.

16.2. Lesson: Simple Feature Model

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 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(geom) = 'ST_Point'::text
          OR 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:

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','geom',2,4326,'POINT');

Why? geometry_columns is used by certain applications to be aware of which tables in the database contain geometry data.

Nota

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

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 se refere ao número de dimensões; neste caso, duas: X e Y.

The value 4326 refers to the projection we are using; in this case, WGS 84, which is referred to by the number 4326 (refer to the earlier discussion about the EPSG).

★☆☆ Try Yourself:

Add an appropriate geometry_columns entry for your new cities layer

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

Now is probably a good time to open QGIS and try to view your people table. Also, we should try editing / adding / deleting records and then performing select queries in the database to see how the data has changed.

To load a PostgreSQL layer in QGIS, use the Layer ► Add PostgreSQL Layers menu option or toolbar button:

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:

To see whether QGIS has found the address database and that your username and password are correct, click Test Connect. If it works, check the boxes next to Save Username and Save Password. Then click OK to create this connection.

Back in the Add PostgreSQL Layers dialog, click Connect and add layers to your project as usual.

★★☆ Try Yourself:

Formulate a query that shows a person’s name, street name and position (from the geom column) as plain text.

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.