আমি বহুগুণের একটি সেট (প্রসেসিং.ট্রিমেডপ্যারসেলনিউ) তৈরি করার জন্য এসT_ ডিফারেন্সটি ব্যবহার করার চেষ্টা করছি যা পোস্টগিস ২.১ (এবং পোস্টগ্রিস এসকিউএল ৯.৩) ব্যবহার করে বহুভুজ (টেস্ট.সেসেল_জমেট্রি_1) এর অন্য সেট দ্বারা আচ্ছাদিত কোনও অঞ্চল ধারণ করে না। এখানে আমার জিজ্ঞাসা:
CREATE TABLE processing.trimmedparcelsnew AS
SELECT
orig.id, ST_Difference(orig.geom, cont.geom) AS difference
FROM
test.single_geometry_1 cont,
test.multi_geometry_1 orig;
তবে ফলস্বরূপ বহুভুজগুলি ছাঁটাই করা হয়নি, পরিবর্তে তারা অন্য স্তরের সাথে ছেদ করে এমন জায়গায় বিভক্ত বলে মনে হয়। আমি ফলাফলটি একটি টেবিলের মধ্যে না রেখে কেবল নির্বাচনটি চালানোর চেষ্টা করেছি এবং আমি যা ভাবতে পারি তার সবকিছুর চেষ্টা করেছি, তবে এই ফাংশনটি কাজ করার মতো মনে হচ্ছে না।
আমি ফলাফলের একটি ছবি সংযুক্ত করেছি
মন্তব্যের পরে, আমি যেখানে একটি ক্লজ যুক্ত করার চেষ্টা করেছি। আমি যে পার্সেলগুলির কোনও ছেদ নেই সেগুলি এবং অন্যান্য পার্সেলগুলির ছেদ করার অঞ্চলগুলি চাই (স্তর পরীক্ষা.সেসেল_জমেট্রি আমার পার্সেলগুলি থেকে অপসারণ করতে চাই দূষিত প্রতিনিধিত্ব করে) want আমি একটি ছেদ করার চেষ্টা করেছি তবে অবশ্যই আমি প্রকৃতপক্ষে নন ছেদগুলি চাই তাই এখন আমি বিচ্ছিন্নতার চেষ্টা করছি। আমি আমার টেবিলেও উত্স যোগ করার চেষ্টা করেছি তবে এসT_Differences ( http://postgis.net/docs/ST_Differences.html ) এর জন্য ডকুমেন্টেশন বলে যে এটি আমার সঠিক জ্যামিতিটি ফিরিয়ে দেয় (জ্যামিতি যে জ্যামিতি A এর সেই অংশকে উপস্থাপন করে যে জ্যামিতি বি দিয়ে ছেদ করে না), তাই আমি কেন আমার টেবিলে আসল বহুভুজটি চাইব তা নিয়ে আমি বিভ্রান্ত। যাইহোক, এখানে আমার সংশোধিত কোড:
CREATE TABLE processing.trimmedparcelsnew AS
SELECT
orig.id, ST_Difference(orig.geom, cont.geom) AS difference, orig.geom AS geom
FROM
test.single_geometry_1 cont,
test.multi_geometry_1 orig
WHERE ST_Disjoint(orig.geom, cont.geom);
ডাবস্টনের উত্তর অনুসরণ করে আমি এখন চেষ্টা করেছি:
CREATE TABLE processing.parcels_trimmed AS
SELECT id, COALESCE(ST_Difference(geom, (SELECT ST_Union(b.geom)
FROM test.single_geometry_1 b
WHERE ST_Intersects(a.geom, b.geom)
AND a.id != b.id)), a.geom)
FROM test.multi_geometry_1 a;
এর ফলাফলটি কেবল পরীক্ষার অনুলিপি। বহু_জুমিত্রি_ _1 যদিও এখন বিভাজন ঘটছে না।
আমি আগের সংস্করণটি চেষ্টা করেছি, তবে আবার কেবল পরীক্ষার একটি অনুলিপি পেয়েছি।
CREATE TABLE processing.parcels_trimmed_no_coalesce AS
SELECT id, COALESCE(ST_Difference(geom, (SELECT ST_Union(b.geom)
FROM test.single_geometry_1 b
WHERE ST_Intersects(a.geom, b.geom)
AND a.id != b.id)), a.geom)
FROM test.multi_geometry_1 a;
আমি ভাবতে শুরু করি যে আমি অন্যায় করে চলেছি এমন কিছু আছে কিনা? পরবর্তী বিবৃতিটি হ'ল:
DROP TABLE IF EXISTS processing.parcels_trimmed_no_coalesce;
এবং আমি পোস্টগ্রেএসকিউএল এসকিউএল কোয়েরি উইন্ডো এবং ওপেনজাম্প থেকে কোয়েরিগুলি চালাচ্ছি।
টেবিলটি দেখতে আমি যে বিবৃতিটি ব্যবহার করি তা হ'ল:
SELECT * FROM processing.parcels_trimmed_no_coalesce;
সরলকরণের স্বার্থে আমি এখন এই কোয়েরিটিকে কেবলমাত্রে নামিয়েছি:
SELECT id, COALESCE(ST_Difference(geom, (SELECT ST_Union(b.geom)
FROM test.geometriestocutagainst b
WHERE ST_Intersects(a.geom, b.geom)
AND a.id != b.id)), a.geom)
FROM test.geometriestocut a;
এটি এখনও কেবলমাত্র বহুভুজ (test.geometriestocut) এ ফলাফল দেয় যখন পছন্দসই ফলাফলটি টেস্ট.জোমেট্রিস্টোকট্যাগেইনস্টের বিরুদ্ধে মূল ছাঁটাই হয়।
WHERE
ধারা উল্লেখ করেন নি , ফলস্বরূপ সারণিতে আপনার বহুপদী প্রসার থাকতে পারে। কত সারি আছেtrimmedparcelsnew
?