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.

Yahia El Haddad
źródło
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));
MakinFlippyFloppy
źródło
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.

Mike T.
źródło
0

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

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

Hardik
źródło
Już pracuję z tą funkcją!
Yahia El Haddad