Na documentação do PostGIS , diz que existem duas etapas para criar uma tabela espacial com SQL:
- Crie uma tabela não espacial normal.
- Adicione uma coluna espacial à tabela usando a função "AddGeometryColumn" do OpenGIS.
Se eu seguisse os exemplos, criaria uma tabela chamada terrain_points
assim:
CREATE TABLE terrain_points (
ogc_fid serial NOT NULL,
elevation double precision,
);
SELECT AddGeometryColumn('terrain_points', 'wkb_geometry', 3725, 'POINT', 3 );
Como alternativa, se eu olhar para as tabelas existentes no pgAdmin III , parece que eu poderia criar a mesma tabela assim:
CREATE TABLE terrain_points
(
ogc_fid serial NOT NULL,
wkb_geometry geometry,
elevation double precision,
CONSTRAINT terrain_points_pk PRIMARY KEY (ogc_fid),
CONSTRAINT enforce_dims_wkb_geometry CHECK (st_ndims(wkb_geometry) = 3),
CONSTRAINT enforce_geotype_wkb_geometry CHECK (geometrytype(wkb_geometry) = 'POINT'::text OR wkb_geometry IS NULL),
CONSTRAINT enforce_srid_wkb_geometry CHECK (st_srid(wkb_geometry) = 3725)
)
WITH (
OIDS=FALSE
);
ALTER TABLE terrain_points OWNER TO postgres;
-- Index: terrain_points_geom_idx
-- DROP INDEX terrain_points_geom_idx;
CREATE INDEX terrain_points_geom_idx
ON terrain_points
USING gist
(wkb_geometry);
Esses dois métodos produzem o mesmo resultado? A versão baseada no pgAdmin III é simplesmente mais detalhada e faz o que AddGeometryColumn
seria padrão?
postgis
sql
postgresql
BenjaminGolder
fonte
fonte
Respostas:
Não, eles não estão produzindo os mesmos resultados.
Com o segundo método, você ainda precisará adicionar um registro na tabela GEOMETRY_COLUMNS, e faria isso com uma instrução INSERT ou usando a função Populate_Geometry_Columns, conforme sugerido na outra resposta.
AddGeometryColumn se encarregará de fazer isso por você (junto com a criação do índice e das restrições).
fonte
Os dois métodos devem produzir os mesmos resultados.
AddGeometryColumn
não apenas criará o campo de geometria, mas também validará e criará os índices necessários. Contanto que você faça todas essas coisas manualmente, o resultado será o mesmo. Se você possui uma coluna geométrica existente, poderá usar aPopulate_Geometry_Columns
função para validá-la e criar os índices necessários.fonte
No PostGIS 2.0+, você pode criar a coluna de geometria diretamente usando a linguagem comum de definição de dados.
Por exemplo:
fonte