Проблема з геометрією SRID в PostGIS


11

Я закрив свій стіл (наносився) в PostGIS

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, що відповідає таблиці, перш ніж намагатися вставити їх.
Ян Тертон

я не розумію, сітка моїх даних - це сітка моєї таблиці! це те саме, ні?
Yahia El Haddad

1
чи можете ви показати нам одне зі своїх вставних висловлювань?
Ян Тертон

як це: ВСТАВИТЬ В ІНТЕРНЕТ (num_borne, shape_borne) VALUES (1, POINT (25800, 256000));
Yahia El Haddad

1
Геометрія У вашому операторі вставки немає srid. Ось причина помилки
Devdatta Tengshe

Відповіді:


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));

у мене немає якогось столу
Yahia El Haddad

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

не вийшло!
Yahia El Haddad

Що таке повідомлення про помилку? також спробуйте запустити: select find_srid('public', 'borne', 'shape_borne');щоб переконатися, що сітка насправді встановлена ​​на полі.
MakinFlippyFloppy

нічого страшного! працює з використанням INSERT INTO public.borne (num_borne, shape_borne) VALUES (1, ST_SetSRID (ST_MakePoint (25800, 256000), 26191)); обов'язково використовувати ST_SetSRID (ST_MakePoint (...) для додавання в цю таблицю? для моєї іншої таблиці (парцели) це працює з нормальним запитом для прикладу: ВСТАВЛЯЄТЬСЯ в парцеллю (число_парцелла, форма)) ЦІННОСТІ (1, POLYGON (( 0 0, 1 0, 1 1, 0 1, 0 0)));
Yahia El Haddad

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


Я вже працюю з цією функцією!
Yahia El Haddad
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.