Problem z geometrią SRID w PostGIS


11

Mój stół (ponoszony) podniosłem w PostGIS

id_borne serial NOT NULL,
  num_borne character varying,
  shape_borne geometry

Pomyślnie zmieniłem SRID mojej tabeli za pomocą

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

Stary SRID miał wartość 0.

Problem polega na tym, że gdy próbuję dodać nowy element do mojej tabeli, pojawia bornesię następujący komunikat o błędzie:

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

wprowadź opis zdjęcia tutaj

To jest mój problem! Identyfikator SRID został zaktualizowany, ale gdy próbuję dodać nowy punkt, pojawia się ten komunikat.


2
upewnij się, że nadasz swoim danych identyfikator SRID zgodny z tabelą, zanim spróbujesz je wstawić.
Ian Turton

nie rozumiem, srid moich danych jest srid mojej tabeli! to jest to samo, nie?
Yahia El Haddad

1
czy możesz nam pokazać jedną ze swoich instrukcji wstawiania?
Ian Turton

w ten sposób: WSTAW INTO poniesione (num_borne, shape_borne) VALUES (1, POINT (25800, 256000));
Yahia El Haddad

1
Geometria W instrukcji wstawiania nie ma okienka. To jest przyczyna błędu
Devdatta Tengshe,

Odpowiedzi:


14

Dzieje się tak, ponieważ dane, które próbujesz wstawić, nie mają przypisanego identyfikatora SRID. Aby przypisać jedną, spróbuj owinąć wstawioną geometrię w instrukcji insert za pomocą ST_SetSRID (). Na przykład,

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

lub

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

nie mam stolika
Yahia El Haddad

Zaktualizowano, aby uwzględnić Twój przypadek użycia.
MakinFlippyFloppy

to nie działało !
Yahia El Haddad

Jaki jest komunikat o błędzie? spróbuj także uruchomić: select find_srid('public', 'borne', 'shape_borne');aby upewnić się, że srid jest ustawiony na polu.
MakinFlippyFloppy

w porządku! działa przy użyciu INSERT INTO public.borne (num_borne, shape_borne) VALUES (1, ST_SetSRID (ST_MakePoint (25800, 256000), 26191)); obowiązkowe jest użycie ST_SetSRID (ST_MakePoint (...) do dodania do tej tabeli? w przypadku mojej drugiej tabeli (paczki) to brzęka ze zwykłym żądaniem na przykład: WSTAWIĆ DO paczki (liczba_parcelli, kształt) WARTOŚCI (1, POLYGON (( 0 0, 1 0, 1 1, 0 1, 0 0)));
Yahia El Haddad

6

Jeśli wpisujesz WKT geometrii w pgAdmin III, musisz określić SRID przy użyciu składni EWKT, w przeciwnym razie domyślnie będzie to 0.

Wpisz to w pole geometrii pgAdmin III:

SRID=26191;POINT(25800 256000)

W przeciwnym razie @MakinFlippyFloppy ma poprawny sposób SQL, używając ST_SetSRID.


0

I cienki poniżej link może ci pomóc, sprawdź poniżej strony ::

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


Już pracuję z tą funkcją!
Yahia El Haddad
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.