Problema com a geometria SRID no PostGIS


10

Citei minha mesa (suportada) no PostGIS

id_borne serial NOT NULL,
  num_borne character varying,
  shape_borne geometry

Alterei com sucesso o SRID da minha tabela usando

select UpdateGeometrySRID('public', 'borne', 'shape_borne', 26191) ;

O antigo SRID era 0.

O problema é que, quando tento adicionar um novo elemento à minha tabela borne, tenho esta mensagem de erro:

geometry srid (0) does not match column srid (26191)

insira a descrição da imagem aqui

Esse é o meu problema! O SRID é atualizado, mas quando tento adicionar um novo ponto, recebo esta mensagem.


2
forneça aos seus dados um SRID que corresponda à tabela antes de tentar inseri-los.
Ian Turton

eu não entendo, o srid dos meus dados é o srid da minha tabela! é o mesmo, não?
Yahia El Haddad

11
você pode nos mostrar uma de suas instruções de inserção?
Ian Turton

assim: INSERT INTO borne (num_borne, shape_borne) VALUES (1, POINT (25800, 256000));
Yahia El Haddad

11
A geometria Na sua instrução de inserção não possui um srid. Essa é a causa do erro
Devdatta Tengshe

Respostas:


13

O que está acontecendo é que os dados que você está tentando inserir não possuem um SRID atribuído. Para atribuir uma, tente agrupar a geometria inserida na sua instrução de inserção com ST_SetSRID (). Por exemplo,

INSERT INTO public.borne (num_borne, shape_borne) 
    (SELECT num_borne, ST_SetSRID(shape_borne, 26191)
     FROM public.sometable);

ou

INSERT INTO public.borne (num_borne, shape_borne) 
VALUES (1, ST_SetSRID(ST_MakePoint(25800 , 256000), 26191));

Eu não tenho alguma tabela
Yahia El Haddad

Atualizado para incluir seu caso de uso.
MakinFlippyFloppy

não funcionou !
Yahia El Haddad

Qual é a mensagem de erro? Além disso, tente executar: select find_srid('public', 'borne', 'shape_borne');para garantir que o srid esteja realmente definido no campo.
MakinFlippyFloppy

está certo! está trabalhando com o uso de INSERT INTO public.borne (num_borne, shape_borne) VALUES (1, ST_SetSRID (ST_MakePoint (25800, 256000), 26191)); é obrigatório usar ST_SetSRID (ST_MakePoint (...) para adicionar nesta tabela? para a minha outra tabela (pacote) está funcionando com uma solicitação normal de exemplo: INSERT INTO parcelle (num_parcelle, shape) VALUES (1, POLYGON (( 0 0, 1 0, 1 1, 0 1, 0 0)));
Yahia El Haddad

6

Se você estiver digitando o WKT de uma geometria no pgAdmin III, precisará especificar o SRID usando a sintaxe EWKT; caso contrário, o padrão será 0.

Digite isso no campo geometria do pgAdmin III:

SRID=26191;POINT(25800 256000)

Caso contrário, o @MakinFlippyFloppy possui a maneira SQL correta, usando ST_SetSRID.


0

Eu abaixo link fino pode ajudá-lo, confira a página abaixo:

http://postgis.org/docs/UpdateGeometrySRID.html


Eu já trabalho com esta função!
Yahia El Haddad
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.