আমার দুটি জ্যামিতি কলাম সহ পোস্টজিআইএস টেবিল রয়েছে, দুটিই এসআরআইডি 4326 দিয়ে সংজ্ঞায়িত করা হয়েছে I আমি নীচের INSERT
বিবৃতিটি ব্যবহার করে টেবিলে problemোকাতে পারি (যেখানে lng
এবং lat
প্রোগ্রামাগুলিতে মানগুলি পাস হয়েছে):
INSERT INTO pad_meta (
uuid, created, updated, name, origin, radius, area, expiry, creator
) VALUES (
$1, now(), now(), $2, ST_GeomFromText('POINT(lng, lat)', 4326), $3,
ST_Buffer(ST_GeomFromText('POINT(lng, lat)', 4326), $4), $5, $6
)
তবে আমি যখন পাব তার মানটির উপর নির্ভর করে ST_Intersects ব্যবহার করে ছেদ করার জন্য জিজ্ঞাসা করি ERROR: Operation on mixed SRID geometries
।
উদাহরণস্বরূপ, এই কোয়েরিটি কাজ করে:
SELECT * FROM pad_meta where ST_Intersects(
'POINT(-122.334172173172 46.602634395263560)'::geometry, area::geometry
) ORDER BY created DESC;
এবং এই ত্রুটিগুলি আউট:
SELECT * FROM pad_meta where ST_Intersects(
'POINT(-122.334172173172 47.602634395263560)'::geometry, area::geometry
) ORDER BY created DESC;
দ্রষ্টব্য, দ্রাঘিমাংশের মান বাদে এগুলি অভিন্ন প্রশ্ন। আমি বিভিন্ন মান নিয়ে পরীক্ষা-নিরীক্ষা করেছি, কিন্তু যে প্রশ্নের কাজ করে এবং কী করে না তার মধ্যে একটি স্পষ্ট রূপান্তর পয়েন্ট চিহ্নিত করতে পারিনি।
আমি মনে করি আমি মূলত কিছু ভুল বুঝছি tanding এই মুহুর্তের জন্য, ST_GeomFromText
এসআরআইডিটি ব্যবহার করতে এবং স্পষ্টভাবে উল্লেখ করে পুনরায় ফর্ম্যাট করে সমস্যার সমাধান / সংশোধন / কাজ করেছি:
SELECT * FROM pad_meta where ST_Intersects(
ST_GeomFromText('POINT(-122.334172173172 47.602634395263560)', 4326), area
) ORDER BY created DESC;
তবে আমি সত্যিই পার্থক্যটি কী তা সত্য তা বুঝতে পারি না, বা যদি এটি সত্যই "সমাধান" হয়।
আমার প্রশ্নটি হল: কেন আমি কেবল নির্দিষ্ট মানগুলির জন্য ত্রুটি পাচ্ছি এবং এই কোয়েরিকে বিন্যাস করার উপযুক্ত উপায় কী?
এখানে রেফারেন্সের জন্য আমার সারণির সংজ্ঞা দেওয়া আছে:
CREATE TABLE IF NOT EXISTS pad_meta (
uuid CHAR(32),
created TIMESTAMP,
updated TIMESTAMP,
name VARCHAR(128),
origin GEOMETRY(Point, 4326),
radius INTEGER,
area GEOMETRY(Polygon, 4326),
expiry TIMESTAMP,
creator CHAR(32),
PRIMARY KEY (uuid)
);
আমি এটিও যাচাই করেছি যে জ্যামিতি_কলামগুলিতে কেবলমাত্র এক ধরণের এসআরআইডি রয়েছে:
SELECT f_table_name, f_geometry_column, srid FROM geometry_columns;
f_table_name | f_geometry_column | srid
--------------+-------------------+------
pad_meta | origin | 4326
pad_meta | area | 4326
সহায়তা / পরামর্শ প্রশংসা ধন্যবাদ! (দ্রষ্টব্য: আমি এই প্রশ্নটিও দেখেছি , তবে যেহেতু আমি ইতিমধ্যে স্পষ্টভাবে আমার জ্যামিতি এসআরআইডিগুলি টেবিলের মধ্যে সন্নিবেশ করানোর সময় সংজ্ঞায়িত করছি তাই মনে হচ্ছে যা ঘটছে তা নয় is)
SRID=4326
বাকি বিবৃতিটির জন্য এসআরআইডি সেট করার সঠিক উপায়ে (যেমন আপনি উপরে করেছেন) দিয়ে কোনও প্রশ্নের সাথে উপসর্গ করছেন? (ST_GeomFromText
কেবলমাত্র এসআরআইডি নির্দিষ্ট করার জন্য আমি জানতাম না বলেই এর বিপরীতে ...?) প্রশ্নের জন্য ডিফল্ট এসআরআইডি সেট করার কোনও উপায় আছে কি? বরং প্রতিটি বার স্পষ্টভাবে সেট করা ভার্জোজ মনে হচ্ছে। আবার, ধন্যবাদ!