Проблема с геометрией SRID в PostGIS


11

Я положил свой стол в постГИС

id_borne serial NOT NULL,
  num_borne character varying,
  shape_borne geometry

Я успешно изменил SRID моей таблицы, используя

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

Старый SRID был 0.

Проблема в том, что когда я пытаюсь добавить новый элемент в мою таблицу, у borneменя появляется следующее сообщение об ошибке:

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

введите описание изображения здесь

Это моя проблема! SRID обновляется, но когда я пытаюсь добавить новую точку, я получаю это сообщение.


2
убедитесь, что вы даете своим данным SRID, который соответствует таблице, прежде чем пытаться вставить ее.
Ян Тертон

я не понимаю, srid моих данных - srid моей таблицы! это то же самое, нет?
Яхья Эль Хаддад

1
Можете ли вы показать нам одно из ваших заявлений вставки?
Ян Тертон

как это: INSERT INTO borne (num_borne, shape_borne) VALUES (1, POINT (25800, 256000));
Яхья Эль Хаддад

1
Геометрия В вашем операторе вставки нет srid. Вот причина ошибки
Девдатта Тенгше

Ответы:


14

Происходит следующее: данные, которые вы пытаетесь вставить, не имеют назначенного SRID. Чтобы назначить его, попробуйте обернуть вставленную геометрию в оператор вставки с помощью ST_SetSRID (). Например,

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

или

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

у меня нет стола
Яхья Эль Хаддад

Обновлено, чтобы включить ваш вариант использования.
MakinFlippyFloppy

это не работает !
Яхья Эль Хаддад

Что такое сообщение об ошибке? также попробуйте запустить: select find_srid('public', 'borne', 'shape_borne');чтобы убедиться, что srid действительно установлен на поле.
MakinFlippyFloppy

все нормально! он работает с использованием INSERT INTO public.borne (num_borne, shape_borne) VALUES (1, ST_SetSRID (ST_MakePoint (25800, 256000), 26191)); обязательно использовать ST_SetSRID (ST_MakePoint (...) для добавления в эту таблицу? для моей другой таблицы (parcelle) он работает с нормальным запросом на пример: INSERT INTO parcelle (num_parcelle, shape) VALUES (1, POLYGON (( 0 0, 1 0, 1 1, 0 1, 0 0)));
Яхья Эль Хаддад

6

Если вы вводите WKT геометрии в pgAdmin III, вам нужно указать SRID с использованием синтаксиса EWKT, в противном случае по умолчанию он равен 0.

Введите это в поле геометрии pgAdmin III:

SRID=26191;POINT(25800 256000)

В противном случае @MakinFlippyFloppy имеет правильный путь SQL, используя ST_SetSRID.


0

Я тонкая ссылка ниже, может помочь вам, Проверьте страницу ниже:

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


Я уже работаю с этой функцией!
Яхья Эль Хаддад
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.