Sự cố với Hình học SRID trong PostGIS


10

Tôi đã đánh lừa bảng của mình (sinh ra) trong PostGIS

id_borne serial NOT NULL,
  num_borne character varying,
  shape_borne geometry

Tôi đã thay đổi thành công SRID của bảng bằng cách sử dụng

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

SRID cũ là 0.

Vấn đề là khi tôi cố gắng thêm một yếu tố mới vào bảng của mình, bornetôi gặp lỗi thông báo này:

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

nhập mô tả hình ảnh ở đây

Đó là vấn đề của tôi! SRID được cập nhật nhưng khi tôi cố gắng thêm một điểm mới, tôi nhận được thông báo này.


2
đảm bảo bạn cung cấp cho dữ liệu của mình một SRID khớp với bảng trước khi thử chèn nó.
Ian Turton

tôi không hiểu, srid của dữ liệu của tôi là srid của bảng của tôi! nó giống nhau, không?
Yahia El Haddad

1
bạn có thể chỉ cho chúng tôi một trong những tuyên bố chèn của bạn không?
Ian Turton

như thế này: XÁC NHẬN VÀO (num_borne, shape_borne) GIÁ TRỊ (1, ĐIỂM (25800, 256000));
Yahia El Haddad

1
Hình học Trong câu lệnh chèn của bạn không có srid. Đó là nguyên nhân gây ra lỗi
Devdatta Tengshe

Câu trả lời:


13

Điều đang xảy ra là dữ liệu bạn đang cố gắng chèn không được gán SRID. Để chỉ định một, hãy thử bọc hình học được chèn trong câu lệnh chèn của bạn bằng ST_SetSRID (). Ví dụ,

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

hoặc là

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

tôi không có vài cái bàn
Yahia El Haddad

Cập nhật để bao gồm trường hợp sử dụng của bạn.
MakinFlippyFloppy

nó không hoạt động
Yahia El Haddad

Thông báo lỗi là gì? Ngoài ra, hãy thử chạy: select find_srid('public', 'borne', 'shape_borne');để đảm bảo rằng srid thực sự được đặt trên trường.
MakinFlippyFloppy

Ổn mà! nó hoạt động với việc sử dụng INSERT INTO public.borne (num_borne, shape_borne) VALUES (1, ST_SetSRID (ST_MakePoint (25800, 256000), 26191)); bắt buộc phải sử dụng ST_SetSRID (ST_MakePoint (...) để thêm vào bảng này? đối với bảng khác của tôi 0 0, 1 0, 1 1, 0 1, 0 0)));
Yahia El Haddad

6

Nếu bạn đang nhập WKT của hình học vào pgAdmin III, bạn cần chỉ định SRID bằng cú pháp EWKT, nếu không, nó mặc định là 0.

Nhập cái này vào trường hình học của pgAdmin III:

SRID=26191;POINT(25800 256000)

Mặt khác, @MakinFlippyFloppy có cách SQL chính xác, sử dụng ST_SetSRID.


0

Tôi mỏng bên dưới liên kết có thể giúp bạn, Kiểm tra bên dưới trang ::

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


Tôi đã làm việc với chức năng này!
Yahia El Haddad
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.