PostGIS'te Geometri SRID'si ile ilgili sorun


11

PostGIS'te masamı (taşınan) kandırdım

id_borne serial NOT NULL,
  num_borne character varying,
  shape_borne geometry

Tablonun SRID'sini kullanarak başarıyla değiştirdim

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

Eski SRID 0'dır.

Sorun, benim tabloya yeni bir öğe eklemeye çalıştığınızda bornebu ileti hatası var:

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

resim açıklamasını buraya girin

Bu benim sorunum! SRID güncellendi, ancak yeni bir nokta eklemeye çalıştığımda bu iletiyi alıyorum.


2
eklemeye çalışmadan önce verilerinize tablo ile eşleşen bir SRID verdiğinizden emin olun.
Ian Turton

anlamıyorum, verilerimin srid masamın srid! aynı, değil mi?
Yahia El Haddad

1
bize ekleme ifadelerinizden birini gösterebilir misiniz?
Ian Turton

şu şekilde: INSONT INTO kaynaklı (num_borne, shape_borne) DEĞERLER (1, POINT (25800, 256000));
Yahia El Haddad

1
Insert deyiminizdeki geometri bir srid içermiyor. Hatanın nedeni bu
Devdatta Tengshe

Yanıtlar:


14

Olmaya çalıştığınız, eklemeye çalıştığınız verilere bir SRID atanmamış. Bir tane atamak için, eklenen deyimi ekleme ifadenize ST_SetSRID () ile sarmayı deneyin. Örneğin,

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

veya

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

Tablom yok
Yahia El Haddad

Kullanım durumunuzu içerecek şekilde güncellendi.
MakinFlippyFloppy

işe yaramadı !
Yahia El Haddad

hata mesajı nedir? ayrıca, select find_srid('public', 'borne', 'shape_borne');srid'in gerçekten sahada ayarlandığından emin olmak için : çalıştırmayı deneyin .
MakinFlippyFloppy

tamam! INSERT INTO public.borne (num_borne, shape_borne) VALUES (1, ST_SetSRID (ST_MakePoint (25800, 256000), 26191)); bu tabloya eklemek için ST_SetSRID (ST_MakePoint (...) kullanmak zorunlu mudur? diğer tablom (parsel) için örnek için normal bir istekle boğuluyor: INSERT INTO parsel (num_parcelle, shape) VALUES (( 0 0, 1 0, 1 1, 0 1, 0 0)));
Yahia El Haddad

6

PgAdmin III'e bir geometrinin WKT'sini yazıyorsanız, SRID'yi EWKT sözdizimini kullanarak belirtmeniz gerekir, aksi takdirde varsayılan olarak 0 olur.

Bunu pgAdmin III'ün geometri alanına yazın:

SRID=26191;POINT(25800 256000)

Aksi takdirde, @MakinFlippyFloppy ST_SetSRID kullanarak doğru SQL yoluna sahiptir.


0

Aşağıdaki linkin size yardımcı olabileceğini düşündüm, aşağıdaki sayfayı inceleyin ::

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


Ben zaten bu işlevle çalışıyorum!
Yahia El Haddad
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.