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.
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
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.
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.
Vamos adicionar um campo de ponto para a nossa tabela de pessoas
alter table people add column the_geom geometry;
Você vai notar que o tipo de campo geometria não especifica implicitamente qual 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.
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.
Neste ponto, você deve inserir um registro 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 o comando INSERT acima causar um erro, execute essa consulta primeiro:
select * from geometry_columns;
If the column :kbd:`f_table_name` contains the value :kbd:`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).
Insira um registro apropriado, para sua nova camada “cities”, em geometry_columns.
Agora que as nossas tabelas estão geo-habilitadas, 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:
A seguinte caixa de diálogo abrirá:
Clique no botão Novo para abrir esta caixa de diálogo:
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.
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.
Você já viu como adicionar objetos espaciais a seu banco de dados e exibi-los no software GIS.
Em seguida, você vai ver como importar dados para o e dados de exportação de, seu banco de dados.