Проблема с геометрией 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
источник
у меня нет стола
Яхья Эль Хаддад
Обновлено, чтобы включить ваш вариант использования.
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

Hardik
источник
Я уже работаю с этой функцией!
Яхья Эль Хаддад