[QGIS-pt] coluna da geometria geom e the_geom

Bom dia.

Alguém me pode ajudar a perceber porque é que não consigo adicionar um novo elemento a uma tabela do tipo PONTO que se encontra alojada em PostGres?

A coluna da geometria está designada por “geom” e assim pretendia mantê-la.

No entanto quando altero o nome da coluna da geometria para “the_geom” o Qgis passa a permitir adicionar um novo elemento.

Estes sãos os constrangimentos presentes para a tabela:

CONSTRAINT agua_boca_rega_pkey PRIMARY KEY (gid),
CONSTRAINT enforce_dims_geom CHECK (st_ndims(geom) = 4),
CONSTRAINT enforce_geotype_geom CHECK (geometrytype(geom) = ‘POINT’::text OR geom IS NULL),
CONSTRAINT enforce_srid_geom CHECK (st_srid(geom) = 27492)

Obrigado,

Carlos Jacinto

Boa tarde.

Alguém me pode ajudar a perceber porque é que não consigo adicionar um novo elemento a uma tabela do tipo PONTO que se encontra alojada em PostGres?

A coluna da geometria está designada por “geom” e assim pretendia mantê-la.

No entanto quando altero o nome da coluna da geometria para “the_geom” o Qgis passa a permitir adicionar um novo elemento.

Estes sãos os constrangimentos presentes para a tabela:

CONSTRAINT agua_boca_rega_pkey PRIMARY KEY (gid),
CONSTRAINT enforce_dims_geom CHECK (st_ndims(geom) = 4),
CONSTRAINT enforce_geotype_geom CHECK (geometrytype(geom) = ‘POINT’::text OR geom IS NULL),
CONSTRAINT enforce_srid_geom CHECK (st_srid(geom) = 27492)

Obrigado,

Carlos Jacinto

Boa tarde Carlos,

Pode dizer-nos qual a versão do Postgres e do Postgis que está a usar?

Pode também facultar-nos todo o sql de contrução da tabela?

Para finalizar, como adicionou a camada ao qgis?

Cumprimentos,

Alexandre Neto

···

2014-08-08 14:43 GMT+01:00 Carlos Jacinto <carlosjacinto@hotmail.com>:

Boa tarde.

Alguém me pode ajudar a perceber porque é que não consigo adicionar um novo elemento a uma tabela do tipo PONTO que se encontra alojada em PostGres?

A coluna da geometria está designada por “geom” e assim pretendia mantê-la.

No entanto quando altero o nome da coluna da geometria para “the_geom” o Qgis passa a permitir adicionar um novo elemento.

Estes sãos os constrangimentos presentes para a tabela:

CONSTRAINT agua_boca_rega_pkey PRIMARY KEY (gid),
CONSTRAINT enforce_dims_geom CHECK (st_ndims(geom) = 4),
CONSTRAINT enforce_geotype_geom CHECK (geometrytype(geom) = ‘POINT’::text OR geom IS NULL),
CONSTRAINT enforce_srid_geom CHECK (st_srid(geom) = 27492)

Obrigado,

Carlos Jacinto


QGIS-pt mailing list
QGIS-pt@lists.osgeo.org
http://lists.osgeo.org/cgi-bin/mailman/listinfo/qgis-pt

Boa tarde

Criei duas tabelas com o mesmo nome “agua_boca_rega”.

Num primeiro momento usei o campo geometrico geom e num segundo momento usei o campo geometrico the_geom.

De momento e em base dados PostGres ( a versão é a 8.4.3) apenas possuo a última tabela criada com o campo geometrico_the geom.

No entanto quando estou a usar o QGIS2.4 recorrendo à ferramenta de adição de uma camada postgis surgem as duas tabelas.

Ao tentar adicionar a tabela inexistente na base de dados surge um erro referindo que é uma camada inválida - não carregado.

Testei com o GvSIG e ArcMap e apenas surge a última tabela “agua_boca_rega” criada e que de facto se encontra em base de dados.

Há alguma forma de limpar as tabelas antigas anteriormente criadas para que não surjam no QGIS ?

Obrigado,

Carlos Jacinto

1- Pode dizer-nos qual a versão do Postgres e do Postgis que está a usar?

A tabela do tipo PONTO encontra-se alojada em "PostgreSQL 8.4.3, compiled by Visual C++ build 1400, 32-bit"3 e a versão do Postgis é
“POSTGIS=“1.5.1” GEOS=“3.2.0-CAPI-1.6.0” PROJ=“Rel. 4.6.1, 21 August 2008” LIBXML=“2.7.6” USE_STATS”.

2- Pode também facultar-nos todo o sql de contrução da tabela?

CREATE TABLE emarp.agua_boca_rega
(
abr_cod_old integer NOT NULL,
abr_desc character varying(254) DEFAULT ‘Boca de Rega’::character varying,
abr_dat_ano_insta smallint DEFAULT 1900,
abr_dat_ano_insta_obs text,
abr_dat_funci date DEFAULT ‘1900-01-01’::date,
abr_dat_funci_obs character varying(150),
abr_ciclo_vida text,
abr_est_conserv text,
abr_reservatorio text,
abr_freg text,
abr_resp_lev text,
abr_font_info text,
abr_dat_lev date DEFAULT ‘1900-01-01’::date,
abr_dat_lev_obs character varying(100),
abr_tipo_proj text,
abr_tipo_proj_obs character varying(250),
abr_obs character varying(254),
abr_caminho_cad character varying(254) DEFAULT ‘N/A’::character varying,
abr_indice_proj character varying(50) DEFAULT ‘N/A’::character varying,
abr_arquivo_id integer DEFAULT 0,
abr_tracado_id numeric DEFAULT 0,
abr_cacifo character varying(150) DEFAULT ‘N/A’::character varying,
abr_os_num smallint,
abr_os_dat date,
abr_os_tip_ord character varying(1),
abr_artigo character varying(20),
abr_user_mod character varying(254),
abr_dat_mod timestamp without time zone,
abr_user character varying(254),
abr_dat timestamp without time zone DEFAULT now(),
abr_entidade character varying(75),
abr_rotacao smallint,
geom geometry,
CONSTRAINT pkey_abr_cod PRIMARY KEY (abr_cod_old),
CONSTRAINT fkey_abr_ciclo_vida FOREIGN KEY (abr_ciclo_vida)
REFERENCES emarp.tab_ciclo_vida (tcv_cod) MATCH FULL
ON UPDATE CASCADE ON DELETE RESTRICT,
CONSTRAINT fkey_abr_est_conserv FOREIGN KEY (abr_est_conserv)
REFERENCES emarp.tab_est_conserv (tec_cod) MATCH FULL
ON UPDATE CASCADE ON DELETE RESTRICT,
CONSTRAINT fkey_abr_font_info FOREIGN KEY (abr_font_info)
REFERENCES emarp.tab_font_info (tfi_cod) MATCH FULL
ON UPDATE CASCADE ON DELETE RESTRICT,
CONSTRAINT fkey_abr_freg FOREIGN KEY (abr_freg)
REFERENCES emarp.tab_freg (tfr_freguesia) MATCH FULL
ON UPDATE CASCADE ON DELETE RESTRICT,
CONSTRAINT fkey_abr_reservatorio FOREIGN KEY (abr_reservatorio)
REFERENCES emarp.agua_reservatorio (are_cod) MATCH FULL
ON UPDATE CASCADE ON DELETE RESTRICT,
CONSTRAINT fkey_abr_resp_lev FOREIGN KEY (abr_resp_lev)
REFERENCES emarp.tab_resp_lev (trl_cod) MATCH FULL
ON UPDATE CASCADE ON DELETE RESTRICT,
CONSTRAINT fkey_abr_tipo_proj FOREIGN KEY (abr_tipo_proj)
REFERENCES emarp.tab_tipo_proj (ttp_cod) MATCH FULL
ON UPDATE CASCADE ON DELETE RESTRICT,
CONSTRAINT constraint_abr_os_tip_ord CHECK (abr_os_tip_ord::text = ‘C’::text OR abr_os_tip_ord::text = ‘E’::text OR abr_os_tip_ord::text = ‘I’::text),
CONSTRAINT enforce_geotype_the_geom CHECK (geometrytype(geom) = ‘POINT’::text OR geom IS NULL),
CONSTRAINT enforce_srid_the_geom CHECK (st_srid(geom) = 27492),
CONSTRAINT not_null_abr_font_info CHECK (abr_font_info IS NOT NULL),
CONSTRAINT not_null_abr_freg CHECK (abr_freg IS NOT NULL),
CONSTRAINT not_null_abr_resp_lev CHECK (abr_resp_lev IS NOT NULL),
CONSTRAINT not_null_abr_tipo_proj CHECK (abr_tipo_proj IS NOT NULL)
)

3- A camada foi adicionada através da ferramenta de Adiccionar Camada(s) PosGIS disponibilizada pelo QGIS.


Date: Fri, 8 Aug 2014 15:02:19 +0100
From: senhor.neto@gmail.com
To: qgis-pt@lists.osgeo.org
Subject: Re: [QGIS-pt] coluna da geometria geom e the_geom

Boa tarde Carlos,

Pode dizer-nos qual a versão do Postgres e do Postgis que está a usar?

Pode também facultar-nos todo o sql de contrução da tabela?

Para finalizar, como adicionou a camada ao qgis?

Cumprimentos,

Alexandre Neto

2014-08-08 14:43 GMT+01:00 Carlos Jacinto <carlosjacinto@hotmail.com>:

Boa tarde.

Alguém me pode ajudar a perceber porque é que não consigo adicionar um novo elemento a uma tabela do tipo PONTO que se encontra alojada em PostGres?

A coluna da geometria está designada por “geom” e assim pretendia mantê-la.

No entanto quando altero o nome da coluna da geometria para “the_geom” o Qgis passa a permitir adicionar um novo elemento.

Estes sãos os constrangimentos presentes para a tabela:

CONSTRAINT agua_boca_rega_pkey PRIMARY KEY (gid),
CONSTRAINT enforce_dims_geom CHECK (st_ndims(geom) = 4),
CONSTRAINT enforce_geotype_geom CHECK (geometrytype(geom) = ‘POINT’::text OR geom IS NULL),
CONSTRAINT enforce_srid_geom CHECK (st_srid(geom) = 27492)

Obrigado,

Carlos Jacinto


QGIS-pt mailing list
QGIS-pt@lists.osgeo.org
http://lists.osgeo.org/cgi-bin/mailman/listinfo/qgis-pt

_______________________________________________ QGIS-pt mailing list QGIS-pt@lists.osgeo.org http://lists.osgeo.org/cgi-bin/mailman/listinfo/qgis-pt

Crie uma tabela NÃO espacial com o SQL acima. Ou seja, sem a coluna espacial (sem a coluna geom). Após criada essa tabela adicione uma coluna espacial (no seu caso a geom) usando a função “AddGeometryColum”. Maiores detalhes no manual do Postgis 1.5 (http://postgis.net/stuff/postgis-1.5.pdf), página 25.

Att,

Alexandre

···

Em 8 de agosto de 2014 11:16, Carlos Jacinto <carlosjacinto@hotmail.com> escreveu:

1- Pode dizer-nos qual a versão do Postgres e do Postgis que está a usar?

A tabela do tipo PONTO encontra-se alojada em "PostgreSQL 8.4.3, compiled by Visual C++ build 1400, 32-bit"3 e a versão do Postgis é
“POSTGIS=“1.5.1” GEOS=“3.2.0-CAPI-1.6.0” PROJ=“Rel. 4.6.1, 21 August 2008” LIBXML=“2.7.6” USE_STATS”.

2- Pode também facultar-nos todo o sql de contrução da tabela?

CREATE TABLE emarp.agua_boca_rega
(
abr_cod_old integer NOT NULL,
abr_desc character varying(254) DEFAULT ‘Boca de Rega’::character varying,
abr_dat_ano_insta smallint DEFAULT 1900,
abr_dat_ano_insta_obs text,
abr_dat_funci date DEFAULT ‘1900-01-01’::date,
abr_dat_funci_obs character varying(150),
abr_ciclo_vida text,
abr_est_conserv text,
abr_reservatorio text,
abr_freg text,
abr_resp_lev text,
abr_font_info text,
abr_dat_lev date DEFAULT ‘1900-01-01’::date,
abr_dat_lev_obs character varying(100),
abr_tipo_proj text,
abr_tipo_proj_obs character varying(250),
abr_obs character varying(254),
abr_caminho_cad character varying(254) DEFAULT ‘N/A’::character varying,
abr_indice_proj character varying(50) DEFAULT ‘N/A’::character varying,
abr_arquivo_id integer DEFAULT 0,
abr_tracado_id numeric DEFAULT 0,
abr_cacifo character varying(150) DEFAULT ‘N/A’::character varying,
abr_os_num smallint,
abr_os_dat date,
abr_os_tip_ord character varying(1),
abr_artigo character varying(20),
abr_user_mod character varying(254),
abr_dat_mod timestamp without time zone,
abr_user character varying(254),
abr_dat timestamp without time zone DEFAULT now(),
abr_entidade character varying(75),
abr_rotacao smallint,
geom geometry,
CONSTRAINT pkey_abr_cod PRIMARY KEY (abr_cod_old),
CONSTRAINT fkey_abr_ciclo_vida FOREIGN KEY (abr_ciclo_vida)
REFERENCES emarp.tab_ciclo_vida (tcv_cod) MATCH FULL
ON UPDATE CASCADE ON DELETE RESTRICT,
CONSTRAINT fkey_abr_est_conserv FOREIGN KEY (abr_est_conserv)
REFERENCES emarp.tab_est_conserv (tec_cod) MATCH FULL
ON UPDATE CASCADE ON DELETE RESTRICT,
CONSTRAINT fkey_abr_font_info FOREIGN KEY (abr_font_info)
REFERENCES emarp.tab_font_info (tfi_cod) MATCH FULL
ON UPDATE CASCADE ON DELETE RESTRICT,
CONSTRAINT fkey_abr_freg FOREIGN KEY (abr_freg)
REFERENCES emarp.tab_freg (tfr_freguesia) MATCH FULL
ON UPDATE CASCADE ON DELETE RESTRICT,
CONSTRAINT fkey_abr_reservatorio FOREIGN KEY (abr_reservatorio)
REFERENCES emarp.agua_reservatorio (are_cod) MATCH FULL
ON UPDATE CASCADE ON DELETE RESTRICT,
CONSTRAINT fkey_abr_resp_lev FOREIGN KEY (abr_resp_lev)
REFERENCES emarp.tab_resp_lev (trl_cod) MATCH FULL
ON UPDATE CASCADE ON DELETE RESTRICT,
CONSTRAINT fkey_abr_tipo_proj FOREIGN KEY (abr_tipo_proj)
REFERENCES emarp.tab_tipo_proj (ttp_cod) MATCH FULL
ON UPDATE CASCADE ON DELETE RESTRICT,
CONSTRAINT constraint_abr_os_tip_ord CHECK (abr_os_tip_ord::text = ‘C’::text OR abr_os_tip_ord::text = ‘E’::text OR abr_os_tip_ord::text = ‘I’::text),
CONSTRAINT enforce_geotype_the_geom CHECK (geometrytype(geom) = ‘POINT’::text OR geom IS NULL),
CONSTRAINT enforce_srid_the_geom CHECK (st_srid(geom) = 27492),
CONSTRAINT not_null_abr_font_info CHECK (abr_font_info IS NOT NULL),
CONSTRAINT not_null_abr_freg CHECK (abr_freg IS NOT NULL),
CONSTRAINT not_null_abr_resp_lev CHECK (abr_resp_lev IS NOT NULL),
CONSTRAINT not_null_abr_tipo_proj CHECK (abr_tipo_proj IS NOT NULL)
)

3- A camada foi adicionada através da ferramenta de Adiccionar Camada(s) PosGIS disponibilizada pelo QGIS.


Date: Fri, 8 Aug 2014 15:02:19 +0100
From: senhor.neto@gmail.com
To: qgis-pt@lists.osgeo.org
Subject: Re: [QGIS-pt] coluna da geometria geom e the_geom

Boa tarde Carlos,

Pode dizer-nos qual a versão do Postgres e do Postgis que está a usar?

Pode também facultar-nos todo o sql de contrução da tabela?

Para finalizar, como adicionou a camada ao qgis?

Cumprimentos,

Alexandre Neto

2014-08-08 14:43 GMT+01:00 Carlos Jacinto <carlosjacinto@hotmail.com>:

Boa tarde.

Alguém me pode ajudar a perceber porque é que não consigo adicionar um novo elemento a uma tabela do tipo PONTO que se encontra alojada em PostGres?

A coluna da geometria está designada por “geom” e assim pretendia mantê-la.

No entanto quando altero o nome da coluna da geometria para “the_geom” o Qgis passa a permitir adicionar um novo elemento.

Estes sãos os constrangimentos presentes para a tabela:

CONSTRAINT agua_boca_rega_pkey PRIMARY KEY (gid),
CONSTRAINT enforce_dims_geom CHECK (st_ndims(geom) = 4),
CONSTRAINT enforce_geotype_geom CHECK (geometrytype(geom) = ‘POINT’::text OR geom IS NULL),
CONSTRAINT enforce_srid_geom CHECK (st_srid(geom) = 27492)

Obrigado,

Carlos Jacinto


QGIS-pt mailing list
QGIS-pt@lists.osgeo.org
http://lists.osgeo.org/cgi-bin/mailman/listinfo/qgis-pt

_______________________________________________ QGIS-pt mailing list QGIS-pt@lists.osgeo.org http://lists.osgeo.org/cgi-bin/mailman/listinfo/qgis-pt


QGIS-pt mailing list
QGIS-pt@lists.osgeo.org
http://lists.osgeo.org/cgi-bin/mailman/listinfo/qgis-pt

Já tentou excluir a conexão existente com o banco de dados e depois cria uma nova conexão? Tente!

Alexandre

···

Em 8 de agosto de 2014 11:02, Carlos Jacinto <carlosjacinto@hotmail.com> escreveu:

Boa tarde

Criei duas tabelas com o mesmo nome “agua_boca_rega”.

Num primeiro momento usei o campo geometrico geom e num segundo momento usei o campo geometrico the_geom.

De momento e em base dados PostGres ( a versão é a 8.4.3) apenas possuo a última tabela criada com o campo geometrico_the geom.

No entanto quando estou a usar o QGIS2.4 recorrendo à ferramenta de adição de uma camada postgis surgem as duas tabelas.

Ao tentar adicionar a tabela inexistente na base de dados surge um erro referindo que é uma camada inválida - não carregado.

Testei com o GvSIG e ArcMap e apenas surge a última tabela “agua_boca_rega” criada e que de facto se encontra em base de dados.

Há alguma forma de limpar as tabelas antigas anteriormente criadas para que não surjam no QGIS ?

Obrigado,

Carlos Jacinto


QGIS-pt mailing list
QGIS-pt@lists.osgeo.org
http://lists.osgeo.org/cgi-bin/mailman/listinfo/qgis-pt

Boa tarde Carlos,

O postgis 1.5 funciona de uma maneira diferente do 2.x, não consigo experimentar criar essa tabela.

Acho que os dois problemas que enunciou na mailing list estão relacionados e surgem da tal existência em tempos de duas tabelas com exactamente o mesmo nome.

De alguma forma na tabela das geometrias devem lá existir dois registos, um com o geom e outro the_geom, embora na verdade já só exista uma das colunas.

Creio que o qgis lê a tabela das geometrias e lista as tabelas daí. Se uma tabela tiver duas colunas de geometria, então aparece duas vezes.

Sugiro que conhece por verificar o que está na tabela das geometrias.

Select * from public.geometry_columns where table_name = ‘emarp.agua_boca_rega’

Depois, caso seja necessário elimine o registo (coluna de geometria) obsoleto.

Espero que tenha ajudado.

Alexandre Neto

Em 08/08/2014 15:17, “Carlos Jacinto” <carlosjacinto@hotmail.com> escreveu:

1- Pode dizer-nos qual a versão do Postgres e do Postgis que está a usar?

A tabela do tipo PONTO encontra-se alojada em "PostgreSQL 8.4.3, compiled by Visual C++ build 1400, 32-bit"3 e a versão do Postgis é
“POSTGIS=“1.5.1” GEOS=“3.2.0-CAPI-1.6.0” PROJ=“Rel. 4.6.1, 21 August 2008” LIBXML=“2.7.6” USE_STATS”.

2- Pode também facultar-nos todo o sql de contrução da tabela?

CREATE TABLE emarp.agua_boca_rega
(
abr_cod_old integer NOT NULL,
abr_desc character varying(254) DEFAULT ‘Boca de Rega’::character varying,
abr_dat_ano_insta smallint DEFAULT 1900,
abr_dat_ano_insta_obs text,
abr_dat_funci date DEFAULT ‘1900-01-01’::date,
abr_dat_funci_obs character varying(150),
abr_ciclo_vida text,
abr_est_conserv text,
abr_reservatorio text,
abr_freg text,
abr_resp_lev text,
abr_font_info text,
abr_dat_lev date DEFAULT ‘1900-01-01’::date,
abr_dat_lev_obs character varying(100),
abr_tipo_proj text,
abr_tipo_proj_obs character varying(250),
abr_obs character varying(254),
abr_caminho_cad character varying(254) DEFAULT ‘N/A’::character varying,
abr_indice_proj character varying(50) DEFAULT ‘N/A’::character varying,
abr_arquivo_id integer DEFAULT 0,
abr_tracado_id numeric DEFAULT 0,
abr_cacifo character varying(150) DEFAULT ‘N/A’::character varying,
abr_os_num smallint,
abr_os_dat date,
abr_os_tip_ord character varying(1),
abr_artigo character varying(20),
abr_user_mod character varying(254),
abr_dat_mod timestamp without time zone,
abr_user character varying(254),
abr_dat timestamp without time zone DEFAULT now(),
abr_entidade character varying(75),
abr_rotacao smallint,
geom geometry,
CONSTRAINT pkey_abr_cod PRIMARY KEY (abr_cod_old),
CONSTRAINT fkey_abr_ciclo_vida FOREIGN KEY (abr_ciclo_vida)
REFERENCES emarp.tab_ciclo_vida (tcv_cod) MATCH FULL
ON UPDATE CASCADE ON DELETE RESTRICT,
CONSTRAINT fkey_abr_est_conserv FOREIGN KEY (abr_est_conserv)
REFERENCES emarp.tab_est_conserv (tec_cod) MATCH FULL
ON UPDATE CASCADE ON DELETE RESTRICT,
CONSTRAINT fkey_abr_font_info FOREIGN KEY (abr_font_info)
REFERENCES emarp.tab_font_info (tfi_cod) MATCH FULL
ON UPDATE CASCADE ON DELETE RESTRICT,
CONSTRAINT fkey_abr_freg FOREIGN KEY (abr_freg)
REFERENCES emarp.tab_freg (tfr_freguesia) MATCH FULL
ON UPDATE CASCADE ON DELETE RESTRICT,
CONSTRAINT fkey_abr_reservatorio FOREIGN KEY (abr_reservatorio)
REFERENCES emarp.agua_reservatorio (are_cod) MATCH FULL
ON UPDATE CASCADE ON DELETE RESTRICT,
CONSTRAINT fkey_abr_resp_lev FOREIGN KEY (abr_resp_lev)
REFERENCES emarp.tab_resp_lev (trl_cod) MATCH FULL
ON UPDATE CASCADE ON DELETE RESTRICT,
CONSTRAINT fkey_abr_tipo_proj FOREIGN KEY (abr_tipo_proj)
REFERENCES emarp.tab_tipo_proj (ttp_cod) MATCH FULL
ON UPDATE CASCADE ON DELETE RESTRICT,
CONSTRAINT constraint_abr_os_tip_ord CHECK (abr_os_tip_ord::text = ‘C’::text OR abr_os_tip_ord::text = ‘E’::text OR abr_os_tip_ord::text = ‘I’::text),
CONSTRAINT enforce_geotype_the_geom CHECK (geometrytype(geom) = ‘POINT’::text OR geom IS NULL),
CONSTRAINT enforce_srid_the_geom CHECK (st_srid(geom) = 27492),
CONSTRAINT not_null_abr_font_info CHECK (abr_font_info IS NOT NULL),
CONSTRAINT not_null_abr_freg CHECK (abr_freg IS NOT NULL),
CONSTRAINT not_null_abr_resp_lev CHECK (abr_resp_lev IS NOT NULL),
CONSTRAINT not_null_abr_tipo_proj CHECK (abr_tipo_proj IS NOT NULL)
)

3- A camada foi adicionada através da ferramenta de Adiccionar Camada(s) PosGIS disponibilizada pelo QGIS.


Date: Fri, 8 Aug 2014 15:02:19 +0100
From: senhor.neto@gmail.com
To: qgis-pt@lists.osgeo.org
Subject: Re: [QGIS-pt] coluna da geometria geom e the_geom

Boa tarde Carlos,

Pode dizer-nos qual a versão do Postgres e do Postgis que está a usar?

Pode também facultar-nos todo o sql de contrução da tabela?

Para finalizar, como adicionou a camada ao qgis?

Cumprimentos,

Alexandre Neto

2014-08-08 14:43 GMT+01:00 Carlos Jacinto <carlosjacinto@hotmail.com>:

Boa tarde.

Alguém me pode ajudar a perceber porque é que não consigo adicionar um novo elemento a uma tabela do tipo PONTO que se encontra alojada em PostGres?

A coluna da geometria está designada por “geom” e assim pretendia mantê-la.

No entanto quando altero o nome da coluna da geometria para “the_geom” o Qgis passa a permitir adicionar um novo elemento.

Estes sãos os constrangimentos presentes para a tabela:

CONSTRAINT agua_boca_rega_pkey PRIMARY KEY (gid),
CONSTRAINT enforce_dims_geom CHECK (st_ndims(geom) = 4),
CONSTRAINT enforce_geotype_geom CHECK (geometrytype(geom) = ‘POINT’::text OR geom IS NULL),
CONSTRAINT enforce_srid_geom CHECK (st_srid(geom) = 27492)

Obrigado,

Carlos Jacinto


QGIS-pt mailing list
QGIS-pt@lists.osgeo.org
http://lists.osgeo.org/cgi-bin/mailman/listinfo/qgis-pt

_______________________________________________ QGIS-pt mailing list QGIS-pt@lists.osgeo.org http://lists.osgeo.org/cgi-bin/mailman/listinfo/qgis-pt


QGIS-pt mailing list
QGIS-pt@lists.osgeo.org
http://lists.osgeo.org/cgi-bin/mailman/listinfo/qgis-pt

Olá muito bom dia.

Segui as recomendações que me indicou Alxandre e de facto a tabela das geometrias public.geometry_columns tinha registado duas entradas para a coluna da geometria.
Apaguei o registo com a geometria the_geom e agora apenas surge um registo ao adicionar a camada pelo qgis.

No entanto agora ao entrar em modo de edição não consigo alterar geometricamente a tabela surgindo a seguinte Mensagem de registo: "
Edição e adição desativadas para camada 2D+ (geom; “emarp”.“agua_boca_rega”) ".

Optei por tentar no postgis actualizar a dimensão da geometria:
ALTER TABLE emarp.agua_boca_rega ADD CONSTRAINT enforce_dims_geom CHECK (st_ndims(geom) = 4);

Mas surge a seguinte mensagem:

ERRO: restrição de verificação “enforce_dims_geom” foi violada por algum registro

********** Error **********

ERRO: restrição de verificação “enforce_dims_geom” foi violada por algum registro
SQL state: 23514

Como posso saber quais os registos que se encontram a violar “enforce_dims_geom” ?

Como posso começar a editar a geometria da tabela ?

Obrigado


Date: Fri, 8 Aug 2014 20:56:35 +0100
From: senhor.neto@gmail.com
To: qgis-pt@lists.osgeo.org
Subject: Re: [QGIS-pt] coluna da geometria geom e the_geom

Boa tarde Carlos,

O postgis 1.5 funciona de uma maneira diferente do 2.x, não consigo experimentar criar essa tabela.

Acho que os dois problemas que enunciou na mailing list estão relacionados e surgem da tal existência em tempos de duas tabelas com exactamente o mesmo nome.

De alguma forma na tabela das geometrias devem lá existir dois registos, um com o geom e outro the_geom, embora na verdade já só exista uma das colunas.

Creio que o qgis lê a tabela das geometrias e lista as tabelas daí. Se uma tabela tiver duas colunas de geometria, então aparece duas vezes.

Sugiro que conhece por verificar o que está na tabela das geometrias.

Select * from public.geometry_columns where table_name = ‘emarp.agua_boca_rega’

Depois, caso seja necessário elimine o registo (coluna de geometria) obsoleto.

Espero que tenha ajudado.

Alexandre Neto

Em 08/08/2014 15:17, “Carlos Jacinto” <carlosjacinto@hotmail.com> escreveu:

1- Pode dizer-nos qual a versão do Postgres e do Postgis que está a usar?

A tabela do tipo PONTO encontra-se alojada em "PostgreSQL 8.4.3, compiled by Visual C++ build 1400, 32-bit"3 e a versão do Postgis é
“POSTGIS=“1.5.1” GEOS=“3.2.0-CAPI-1.6.0” PROJ=“Rel. 4.6.1, 21 August 2008” LIBXML=“2.7.6” USE_STATS”.

2- Pode também facultar-nos todo o sql de contrução da tabela?

CREATE TABLE emarp.agua_boca_rega
(
abr_cod_old integer NOT NULL,
abr_desc character varying(254) DEFAULT ‘Boca de Rega’::character varying,
abr_dat_ano_insta smallint DEFAULT 1900,
abr_dat_ano_insta_obs text,
abr_dat_funci date DEFAULT ‘1900-01-01’::date,
abr_dat_funci_obs character varying(150),
abr_ciclo_vida text,
abr_est_conserv text,
abr_reservatorio text,
abr_freg text,
abr_resp_lev text,
abr_font_info text,
abr_dat_lev date DEFAULT ‘1900-01-01’::date,
abr_dat_lev_obs character varying(100),
abr_tipo_proj text,
abr_tipo_proj_obs character varying(250),
abr_obs character varying(254),
abr_caminho_cad character varying(254) DEFAULT ‘N/A’::character varying,
abr_indice_proj character varying(50) DEFAULT ‘N/A’::character varying,
abr_arquivo_id integer DEFAULT 0,
abr_tracado_id numeric DEFAULT 0,
abr_cacifo character varying(150) DEFAULT ‘N/A’::character varying,
abr_os_num smallint,
abr_os_dat date,
abr_os_tip_ord character varying(1),
abr_artigo character varying(20),
abr_user_mod character varying(254),
abr_dat_mod timestamp without time zone,
abr_user character varying(254),
abr_dat timestamp without time zone DEFAULT now(),
abr_entidade character varying(75),
abr_rotacao smallint,
geom geometry,
CONSTRAINT pkey_abr_cod PRIMARY KEY (abr_cod_old),
CONSTRAINT fkey_abr_ciclo_vida FOREIGN KEY (abr_ciclo_vida)
REFERENCES emarp.tab_ciclo_vida (tcv_cod) MATCH FULL
ON UPDATE CASCADE ON DELETE RESTRICT,
CONSTRAINT fkey_abr_est_conserv FOREIGN KEY (abr_est_conserv)
REFERENCES emarp.tab_est_conserv (tec_cod) MATCH FULL
ON UPDATE CASCADE ON DELETE RESTRICT,
CONSTRAINT fkey_abr_font_info FOREIGN KEY (abr_font_info)
REFERENCES emarp.tab_font_info (tfi_cod) MATCH FULL
ON UPDATE CASCADE ON DELETE RESTRICT,
CONSTRAINT fkey_abr_freg FOREIGN KEY (abr_freg)
REFERENCES emarp.tab_freg (tfr_freguesia) MATCH FULL
ON UPDATE CASCADE ON DELETE RESTRICT,
CONSTRAINT fkey_abr_reservatorio FOREIGN KEY (abr_reservatorio)
REFERENCES emarp.agua_reservatorio (are_cod) MATCH FULL
ON UPDATE CASCADE ON DELETE RESTRICT,
CONSTRAINT fkey_abr_resp_lev FOREIGN KEY (abr_resp_lev)
REFERENCES emarp.tab_resp_lev (trl_cod) MATCH FULL
ON UPDATE CASCADE ON DELETE RESTRICT,
CONSTRAINT fkey_abr_tipo_proj FOREIGN KEY (abr_tipo_proj)
REFERENCES emarp.tab_tipo_proj (ttp_cod) MATCH FULL
ON UPDATE CASCADE ON DELETE RESTRICT,
CONSTRAINT constraint_abr_os_tip_ord CHECK (abr_os_tip_ord::text = ‘C’::text OR abr_os_tip_ord::text = ‘E’::text OR abr_os_tip_ord::text = ‘I’::text),
CONSTRAINT enforce_geotype_the_geom CHECK (geometrytype(geom) = ‘POINT’::text OR geom IS NULL),
CONSTRAINT enforce_srid_the_geom CHECK (st_srid(geom) = 27492),
CONSTRAINT not_null_abr_font_info CHECK (abr_font_info IS NOT NULL),
CONSTRAINT not_null_abr_freg CHECK (abr_freg IS NOT NULL),
CONSTRAINT not_null_abr_resp_lev CHECK (abr_resp_lev IS NOT NULL),
CONSTRAINT not_null_abr_tipo_proj CHECK (abr_tipo_proj IS NOT NULL)
)

3- A camada foi adicionada através da ferramenta de Adiccionar Camada(s) PosGIS disponibilizada pelo QGIS.


Date: Fri, 8 Aug 2014 15:02:19 +0100
From: senhor.neto@gmail.com
To: qgis-pt@lists.osgeo.org
Subject: Re: [QGIS-pt] coluna da geometria geom e the_geom

Boa tarde Carlos,

Pode dizer-nos qual a versão do Postgres e do Postgis que está a usar?

Pode também facultar-nos todo o sql de contrução da tabela?

Para finalizar, como adicionou a camada ao qgis?

Cumprimentos,

Alexandre Neto

2014-08-08 14:43 GMT+01:00 Carlos Jacinto <carlosjacinto@hotmail.com>:

Boa tarde.

Alguém me pode ajudar a perceber porque é que não consigo adicionar um novo elemento a uma tabela do tipo PONTO que se encontra alojada em PostGres?

A coluna da geometria está designada por “geom” e assim pretendia mantê-la.

No entanto quando altero o nome da coluna da geometria para “the_geom” o Qgis passa a permitir adicionar um novo elemento.

Estes sãos os constrangimentos presentes para a tabela:

CONSTRAINT agua_boca_rega_pkey PRIMARY KEY (gid),
CONSTRAINT enforce_dims_geom CHECK (st_ndims(geom) = 4),
CONSTRAINT enforce_geotype_geom CHECK (geometrytype(geom) = ‘POINT’::text OR geom IS NULL),
CONSTRAINT enforce_srid_geom CHECK (st_srid(geom) = 27492)

Obrigado,

Carlos Jacinto


QGIS-pt mailing list
QGIS-pt@lists.osgeo.org
http://lists.osgeo.org/cgi-bin/mailman/listinfo/qgis-pt

_______________________________________________ QGIS-pt mailing list QGIS-pt@lists.osgeo.org http://lists.osgeo.org/cgi-bin/mailman/listinfo/qgis-pt


QGIS-pt mailing list
QGIS-pt@lists.osgeo.org
http://lists.osgeo.org/cgi-bin/mailman/listinfo/qgis-pt

_______________________________________________ QGIS-pt mailing list QGIS-pt@lists.osgeo.org http://lists.osgeo.org/cgi-bin/mailman/listinfo/qgis-pt

Carlos,

Qual a razão de ter st_ndims = 4? Os vectores têm coordenadas x,y,z,m?

Se for o caso, penso que o QGIS não edita dados 3d. E não sei se edita dados
com coordenada m. Penso que não, mas talvez alguém possa confirmar?

Por outro lado, ao adicionar a constraint de obrigar os vectores a terem 4
coords, deu erro. Logo pelo menos parte dos vectores não têm essa dimensão.
Tens de verificar que tipo de vectores estão afinal nessa tabela.

Este sql deve mostrar as dims existentes:

select st_ndims(geom),count(*) from <tabela_espacial> group by
st_ndims(geom);

Convém que numa tabela todos os vectores sejam do mesmo tipo. Se for
preciso, terás de converter alguns vectores para uniformizar. Ou criar uma
nova tabela com apenas xy. Se precisares da coord z poderá ser suficiente
uma coluna com esses valores?

Quanto ao facto de teres o problema inicial de tabelas "mortas" a aparecer é
porque o postgis <2.0 não mantém automaticamente o registo das tabelas
espaciais (vê public.geometry_columns). Para manter este registo actual,
deves criar e apagar tabelas espaciais com as funções de gestão do postgis
ou terás de manter os registos manualmente com inserts e deletes:

AddGeometryColumn
DropGeometryColumn
DropGeometryTable
Populate_Geometry_Columns
Probe_Geometry_Columns

Toda a info aqui:
http://postgis.refractions.net/documentation/manual-1.5/reference.html#Management_Functions

Abr,
Duarte

--
View this message in context: http://osgeo-org.1560.x6.nabble.com/coluna-da-geometria-geom-e-the-geom-tp5155514p5155768.html
Sent from the QGIS-pt mailing list archive at Nabble.com.

Duarte,

A razão por ter adoptado por st_ndims = 4 é que os pontos que estou a tratar têm cota z.

Fiz o que me proposeste e de facto os vectores não se encontravam uniformizados.

Como poderei então converter e uniformizar os registos.

Existe a função st_force , será a indicada ?

ALTER agua_boca_rega geom ADD geom2d geometry
UPDATE geom SET geom2d = ST_Force_2D(the_geom) 


Date: Mon, 11 Aug 2014 02:38:12 -0700
From: dncarreira@gmail.com
To: qgis-pt@lists.osgeo.org
Subject: Re: [QGIS-pt] coluna da geometria geom e the_geom

Carlos,

Qual a razão de ter st_ndims = 4? Os vectores têm coordenadas x,y,z,m?

Se for o caso, penso que o QGIS não edita dados 3d. E não sei se edita dados
com coordenada m. Penso que não, mas talvez alguém possa confirmar?

Por outro lado, ao adicionar a constraint de obrigar os vectores a terem 4
coords, deu erro. Logo pelo menos parte dos vectores não têm essa dimensão.
Tens de verificar que tipo de vectores estão afinal nessa tabela.

Este sql deve mostrar as dims existentes:

select st_ndims(geom),count(*) from <tabela_espacial> group by
st_ndims(geom);

Convém que numa tabela todos os vectores sejam do mesmo tipo. Se for
preciso, terás de converter alguns vectores para uniformizar. Ou criar uma
nova tabela com apenas xy. Se precisares da coord z poderá ser suficiente
uma coluna com esses valores?

Quanto ao facto de teres o problema inicial de tabelas “mortas” a aparecer é
porque o postgis <2.0 não mantém automaticamente o registo das tabelas
espaciais (vê public.geometry_columns). Para manter este registo actual,
deves criar e apagar tabelas espaciais com as funções de gestão do postgis
ou terás de manter os registos manualmente com inserts e deletes:

AddGeometryColumn
DropGeometryColumn
DropGeometryTable
Populate_Geometry_Columns
Probe_Geometry_Columns

Toda a info aqui:
http://postgis.refractions.net/documentation/manual-1.5/reference.html#Management_Functions

Abr,
Duarte


View this message in context: http://osgeo-org.1560.x6.nabble.com/coluna-da-geometria-geom-e-the-geom-tp5155514p5155768.html
Sent from the QGIS-pt mailing list archive at Nabble.com.


QGIS-pt mailing list
QGIS-pt@lists.osgeo.org
http://lists.osgeo.org/cgi-bin/mailman/listinfo/qgis-pt


Duarte,

Testei a linha abaixo mas surge o seguinte erro: ERRO: modificador de tipo não é permitido para tipo “geometry” SQL state: 42601

ALTER TABLE emarp.agua_junta_cega ALTER COLUMN geom SET DATA TYPE geometry(Point,27492) USING ST_Transform(ST_Force_2D(geom),27492)

Creio que poderá ter que ver com a versão do Postgis "POSTGIS=“1.5.1”.

Se assim for alguêm me dá alguma dica como transformar os registos…

From: carlosjacinto@hotmail.com
To: qgis-pt@lists.osgeo.org
Subject: RE: [QGIS-pt] coluna da geometria geom e the_geom
Date: Mon, 11 Aug 2014 11:46:07 +0100

Duarte,

A razão por ter adoptado por st_ndims = 4 é que os pontos que estou a tratar têm cota z.

Fiz o que me proposeste e de facto os vectores não se encontravam uniformizados.

Como poderei então converter e uniformizar os registos.

Existe a função st_force , será a indicada ?

ALTER agua_boca_rega geom ADD geom2d geometry
UPDATE geom SET geom2d = ST_Force_2D(the_geom) 


Date: Mon, 11 Aug 2014 02:38:12 -0700
From: dncarreira@gmail.com
To: qgis-pt@lists.osgeo.org
Subject: Re: [QGIS-pt] coluna da geometria geom e the_geom

Carlos,

Qual a razão de ter st_ndims = 4? Os vectores têm coordenadas x,y,z,m?

Se for o caso, penso que o QGIS não edita dados 3d. E não sei se edita dados
com coordenada m. Penso que não, mas talvez alguém possa confirmar?

Por outro lado, ao adicionar a constraint de obrigar os vectores a terem 4
coords, deu erro. Logo pelo menos parte dos vectores não têm essa dimensão.
Tens de verificar que tipo de vectores estão afinal nessa tabela.

Este sql deve mostrar as dims existentes:

select st_ndims(geom),count(*) from <tabela_espacial> group by
st_ndims(geom);

Convém que numa tabela todos os vectores sejam do mesmo tipo. Se for
preciso, terás de converter alguns vectores para uniformizar. Ou criar uma
nova tabela com apenas xy. Se precisares da coord z poderá ser suficiente
uma coluna com esses valores?

Quanto ao facto de teres o problema inicial de tabelas “mortas” a aparecer é
porque o postgis <2.0 não mantém automaticamente o registo das tabelas
espaciais (vê public.geometry_columns). Para manter este registo actual,
deves criar e apagar tabelas espaciais com as funções de gestão do postgis
ou terás de manter os registos manualmente com inserts e deletes:

AddGeometryColumn
DropGeometryColumn
DropGeometryTable
Populate_Geometry_Columns
Probe_Geometry_Columns

Toda a info aqui:
http://postgis.refractions.net/documentation/manual-1.5/reference.html#Management_Functions

Abr,
Duarte


View this message in context: http://osgeo-org.1560.x6.nabble.com/coluna-da-geometria-geom-e-the-geom-tp5155514p5155768.html
Sent from the QGIS-pt mailing list archive at Nabble.com.


QGIS-pt mailing list
QGIS-pt@lists.osgeo.org
http://lists.osgeo.org/cgi-bin/mailman/listinfo/qgis-pt

O que eu faria era criar uma nova tabela com uma nova coluna coordZ e
adicionava a coluna de geometria depois:

SELECT AddGeometryColumn
('my_schema','my_spatial_table','the_geom',27492,'POINT',2);

Depois copiava os dados anteriores para a nova tabela, criando os pontos
apenas com o x e y das geometrias originais, e copiando a coord z para a
nova coluna:

INSERT INTO my_table (col1, col2, col3, the_geom, coordz)
    SELECT col1, col2, col3, ST_Force_2D(the_geom), ST_Z(the_geom)
    FROM my_table AS old

Se o ST_Force_2D não funcionar podemos construir a geometria com
st_geomfromtext ou com st_setsrid(st_point(x,y), 27492):
st_geomfromtext('POINT (' || ST_X(the_geom)::text || ' ' ||
ST_Y(the_geom)::text ||')', 27492)

nota: não testei o sql...

Há com certeza outras formas de fazer isto...

--
View this message in context: http://osgeo-org.1560.x6.nabble.com/coluna-da-geometria-geom-e-the-geom-tp5155514p5155795.html
Sent from the QGIS-pt mailing list archive at Nabble.com.

Obrigado Duarte pelas recomendações e sugestões que me envias-te.

Acabei por conseguir resolver a situação:

1: update emarp.agua_hidrante set geom = ST_Force_2D(geom);

2: vacuum full analyze emarp.agua_boca_rega ;

3: update public.geometry_columns set coord_dimension = ‘2’ where f_table_name = ‘agua_boca_rega’

4: ALTER TABLE emarp.agua_boca_rega ADD CONSTRAINT enforce_srid_geom CHECK (srid(geom) = 27492);

5: ALTER TABLE emarp.agua_boca_rega ADD CONSTRAINT enforce_geotype_geom CHECK (geometrytype(geom) = ‘POINT’::text OR geom IS NULL);

6: ALTER TABLE emarp.agua_boca_rega ADD CONSTRAINT enforce_dims_geom CHECK (st_ndims(geom) = 2);

Obrigado a todos pelo apoio e espero tambem poder contribuir.

Cumprimentos

Date: Mon, 11 Aug 2014 04:59:52 -0700
From: dncarreira@gmail.com
To: qgis-pt@lists.osgeo.org
Subject: Re: [QGIS-pt] FW: st_Force_2D

O que eu faria era criar uma nova tabela com uma nova coluna coordZ e
adicionava a coluna de geometria depois:

SELECT AddGeometryColumn
(‘my_schema’,‘my_spatial_table’,‘the_geom’,27492,‘POINT’,2);

Depois copiava os dados anteriores para a nova tabela, criando os pontos
apenas com o x e y das geometrias originais, e copiando a coord z para a
nova coluna:

INSERT INTO my_table (col1, col2, col3, the_geom, coordz)
SELECT col1, col2, col3, ST_Force_2D(the_geom), ST_Z(the_geom)
FROM my_table AS old

Se o ST_Force_2D não funcionar podemos construir a geometria com
st_geomfromtext ou com st_setsrid(st_point(x,y), 27492):
st_geomfromtext(‘POINT (’ || ST_X(the_geom)::text || ’ ’ ||
ST_Y(the_geom)::text ||‘)’, 27492)

nota: não testei o sql…

Há com certeza outras formas de fazer isto…


View this message in context: http://osgeo-org.1560.x6.nabble.com/coluna-da-geometria-geom-e-the-geom-tp5155514p5155795.html
Sent from the QGIS-pt mailing list archive at Nabble.com.


QGIS-pt mailing list
QGIS-pt@lists.osgeo.org
http://lists.osgeo.org/cgi-bin/mailman/listinfo/qgis-pt