পোস্টজিআইজে জ্যামিতি এসআরআইডি নিয়ে সমস্যা


11

আমি পোস্টজিআইএস-এ আমার টেবিলটি বহন করেছি b

id_borne serial NOT NULL,
  num_borne character varying,
  shape_borne geometry

আমি সফলভাবে ব্যবহার করে আমার টেবিলের এসআরআইডি পরিবর্তন করেছি

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

পুরানো এসআরআইডি 0 ছিল।

সমস্যাটি হ'ল আমি যখন আমার টেবিলটিতে একটি নতুন উপাদান যুক্ত করার চেষ্টা করি তখন আমার borneএই বার্তার ত্রুটি থাকে:

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

এখানে চিত্র বর্ণনা লিখুন

এটাই আমার সমস্যা! এসআরআইডি আপডেট হয়েছে তবে যখন আমি একটি নতুন পয়েন্ট যুক্ত করার চেষ্টা করি তখন আমি এই বার্তাটি পাই।


2
নিশ্চিত করুন যে আপনি আপনার ডেটাটি এমন একটি SRID দিয়েছেন যা tableোকানোর চেষ্টা করার আগে টেবিলের সাথে মেলে।
ইয়ান টার্টন

আমি বুঝতে পারি না, আমার ডেটাগুলির গ্রন্থটি আমার টেবিলের স্ক্রিড! এটা কি একই, না?
ইয়াহিয়া এল হাদাদ

1
আপনি কি আমাদের আপনার সন্নিবেশ বিবৃতি প্রদর্শন করতে পারেন?
ইয়ান টার্টন

এর মতো: অন্তর্ভুক্ত অন্তর্ভুক্ত (নাম_বর্ণ, আকৃতি_বাহিত) ভ্যালু (1, পয়েন্ট (25800, 256000));
ইয়াহিয়া এল হাদাদ

1
জ্যামিতি আপনার সন্নিবেশ বিবৃতিতে একটি শ্রীদ নেই। এটিই ত্রুটির কারণ
দেবদত্ত টেংশে

উত্তর:


14

যা ঘটছে তা হ'ল আপনি যে ডেটাটি sertোকানোর চেষ্টা করছেন তাতে কোনও এসআরআইডি বরাদ্দ নেই। একটি বরাদ্দ করতে, ST_SetSRID () দিয়ে আপনার সন্নিবেশ বিবৃতিতে geোকানো জ্যামিতিটি মোড়ানোর চেষ্টা করুন। যেমন,

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

আমার কিছু টেবিল নেই
ইয়াহিয়া এল হাদাদ

আপনার ব্যবহারের কেস অন্তর্ভুক্ত করার জন্য আপডেট হয়েছে।
মকিনফ্লিপি ফ্লপি 14

এটা কাজ করে না !
ইয়াহিয়া এল হাদাদ

ত্রুটির বার্তা কি? এছাড়াও, চলমান চেষ্টা করুন: select find_srid('public', 'borne', 'shape_borne');শ্রাদটি আসলে মাঠে উপস্থিত হয়েছে কিনা তা নিশ্চিত করার জন্য।
মকিনফ্লিপি ফ্লপি

ঠিক আছে! এটি সর্বসাধারণের মধ্যে INSERT INTO ব্যবহার করে কাজ করছে num এই টেবিলটি যুক্ত করার জন্য এসT_SetSRID (ST_MakePoint (...) ব্যবহার করা বাধ্যতামূলক? আমার অন্য টেবিলের জন্য (পার্সেল) এটি উদাহরণের জন্য একটি সাধারণ অনুরোধের সাথে কাজ করছে: INSERT INTO পার্সেল (num_parcelle, আকৃতি) ভ্যালুস (1, পলিজোন (( 0 0, 1 0, 1 1, 0 1, 0 0)));
ইয়াহিয়া এল হাদাদ

6

আপনি যদি জ্যামিতির ডব্লিউকেটি pgAdmin III তে টাইপ করছেন, আপনাকে EWKT সিনট্যাক্স ব্যবহার করে SRID নির্দিষ্ট করতে হবে, অন্যথায় এটি ডিফল্ট 0 এ।

PgAdmin III এর জ্যামিতি ক্ষেত্রে এটি টাইপ করুন:

SRID=26191;POINT(25800 256000)

অন্যথায়, @ ম্যাকিনফ্লিপিফ্লপিটি এস এসকিএসআরআইডি ব্যবহার করে সঠিক এসকিউএল উপায় রয়েছে।


0

নীচে নীচের লিঙ্কটি আপনাকে সহায়তা করতে পারে, নীচের পৃষ্ঠাটি দেখুন:

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


আমি ইতিমধ্যে এই ফাংশন দিয়ে কাজ!
ইয়াহিয়া এল হাদাদ
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.