QGIS, Postgis: É possível criar uma nova camada de postgis?


8

Situação:

Eu tenho um vetor postgis lay que tem muitos segmentos de linha (os recursos). Eu quero criar um conjunto de novas camadas, cada uma das quais contém um subconjunto dos recursos da camada original e essas camadas também são armazenadas no postgis. Idealmente, com os recursos reais armazenados apenas uma vez.

A única maneira que eu posso ver para criar uma nova camada em vez de carregar uma de alguma fonte é via Layer-> new, que oferece uma opção de shapefile ou spatialite.

Escolhendo o arquivo de forma Primeiro tentei especificar atributos gid e fid para a nova camada, mas o SPIT reclama de um gid de campo duplicado quando tento carregá-lo no postgis.

Se eu não criar nenhum atributo para a nova camada, o SPIT o carrega alegremente, provavelmente duplicando todos os recursos.

Eu estou supondo que este é um "recurso" e não uma supervisão, porque se fosse possível compartilhar recursos entre camadas, o que aconteceria se um recurso fosse dividido? Se as coisas funcionassem corretamente, todas as camadas com esse recurso referenciado precisariam ser atualizadas com o novo gid da nova parte.

Esta interpretação está correta?

Russell


1
Não existe um recurso compartilhado. Você só tem duas cópias, divide uma e a outra permanece a mesma.
Nathan W

Achei que provavelmente era esse o caso. Que meu problema é que, ao longo dos anos, tenho sido completamente doutrinados com o modelo relacional e normalização de dados;)
Russell Fulton

Respostas:


4

Usando o plugin PostGIS Manager, você pode criar novas tabelas em um banco de dados PostGIS.

Você também pode executar instruções SQL como

CREATE TABLE new_table AS SELECT * FROM old_table

duplicar uma tabela.


7

Essa é uma pergunta um pouco mais antiga e a resposta correta mudou nas versões recentes do QGIS.

O PostGIS Manager foi descontinuado e substituído pelo DB Manager, que funciona tanto para o PostGIS quanto para o SpatiaLite.

O DB Manager é instalado por padrão e acessível na Database > DB Managerentrada do menu. Isso abrirá a janela do DB Manager.

Selecione o banco de dados ao qual você deseja adicionar uma camada e clique em Table > Create table. Se você não tiver um banco de dados selecionado ao clicar na entrada do menu Tabela, a opção criar tabela não estará lá.

Isso abrirá a caixa de diálogo criar tabela, que é muito semelhante à que é acessada pelo Layer > New > New SpatiaLiteLayer, mas com um layout diferente.

As opções são basicamente as mesmas, com a maior diferença, pois a caixa de diálogo Nova camada espacial permite o acesso à caixa de diálogo Especificar CRS, o que facilita a seleção do seu sistema de coordenadas. A caixa de diálogo Criar tabela exige que você conheça o número SRID antecipadamente para inseri-lo.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.