আমার কাছে অ্যাড্রেস পয়েন্টগুলির জাতীয় ডেটাসেট (37 মিলিয়ন) এবং মাল্টিপলিগনজেড টাইপের বন্যার বাহ্যরেখার (2 মিলিয়ন) একটি বহুভুজের ডেটাসেট রয়েছে, বহুভুজগুলির মধ্যে কিছু খুব জটিল, সর্বাধিক এস 06 এনপয়েন্টগুলি প্রায় 200,000 এর কাছাকাছি। আমি পোস্টজিআইএস (২.১18) ব্যবহার করে সনাক্ত করার চেষ্টা করছি যা ঠিকানার পয়েন্টগুলি বন্যার বহুভুজের মধ্যে রয়েছে এবং এগুলি ঠিকানা আইডি এবং বন্যার ঝুঁকি সম্পর্কিত বিশদ সহ একটি নতুন টেবিলে লিখুন। আমি ঠিকানার দৃষ্টিকোণ থেকে চেষ্টা করেছি (ST_Within) তবে তারপরে এটি বন্যার ক্ষেত্রের দৃষ্টিকোণ (ST_Contains) থেকে শুরু করে দিয়েছি, যুক্তিযুক্ত কারণ এখানে এমন কোনও বৃহত অঞ্চল রয়েছে যার কোনও বন্যার ঝুঁকি নেই। উভয় ডেটাসেটের 4326 এ পুনঃপ্রক্রিয়া করা হয়েছে এবং উভয় টেবিলের একটি স্থানিক সূচক রয়েছে। নীচের আমার জিজ্ঞাসাটি এখন 3 দিন ধরে চলছে এবং শীঘ্রই কোনও সময় শেষ করার লক্ষণ দেখা যাচ্ছে না!
select a.id, f.risk_factor_1, f.risk_factor_2, f.risk_factor_3
into gb.addresses_with_flood_risk
from gb.flood_risk_areas f, gb.addresses a
where ST_Contains(f.the_geom, a.the_geom);
এটি চালানোর জন্য আরও সর্বোত্তম উপায় আছে কি? এছাড়াও, এই ধরণের দীর্ঘ চলমান অনুসন্ধানের জন্য রিসোর্স ব্যবহার এবং পিজি_স্ট্যাট_অ্যাক্টিভিটি দেখার চেয়ে অগ্রগতির নিরীক্ষণের সর্বোত্তম উপায় কী?
আমার আসল জিজ্ঞাসাটি 3 দিনের জন্য ঠিক আছে তবে আমি অন্য কাজের সাথে একপাশে লিখিত হয়েছি তাই সমাধানটি চেষ্টা করার জন্য সময়টি আমার কখনই উত্সর্গ করতে পেলাম না। তবে আমি এখনই এটি পুনরায় পরিদর্শন করেছি এবং সুপারিশগুলির মাধ্যমে কাজ করেছি, এখন পর্যন্ত খুব ভাল। আমি নিম্নলিখিত ব্যবহার করেছি:
- এখানে প্রস্তাবিত ST_FishNet সমাধান ব্যবহার করে যুক্তরাজ্যে একটি 50 কিলোমিটার গ্রিড তৈরি করেছে
- উত্পন্ন গ্রিডের এসআরআইডিটিকে ব্রিটিশ ন্যাশনাল গ্রিডে সেট করুন এবং এর উপরে একটি স্থানিক সূচক তৈরি করুন
- ST_Intersication এবং ST_Intersects ব্যবহার করে আমার বন্যার ডেটা (মাল্টিপলিগন) কেটে গেছে (কেবলমাত্র এখানেই আমাকে আকৃতির আকার 2pgsql হিসাবে একটি জেড সূচক যুক্ত করার কারণে ভূমিকায় ST_Force_2D ব্যবহার করতে হয়েছিল)
- একই গ্রিড ব্যবহার করে আমার পয়েন্টের ডেটা কেটে গেছে
- সারণি এবং করল এবং প্রতিটি টেবিলের মধ্যে স্থানিক সূচক তৈরি করে
আমি এখনই আমার স্ক্রিপ্টটি চালানোর জন্য প্রস্তুত, সারি এবং কলামগুলি পুনরাবৃত্তি করে ফলাফলকে একটি নতুন টেবিলের আকারে প্রকাশ করবে যতক্ষণ না আমি পুরো দেশটি coveredেকে রাখি। তবে সবেমাত্র আমার বন্যার তথ্য পরীক্ষা করে দেখুন এবং খুব বড় কিছু বহুভুজ কিছু অনুবাদে হারিয়ে গেছে বলে মনে হচ্ছে! এটি আমার জিজ্ঞাসা:
SELECT g.row, g.col, f.gid, f.objectid, f.prob_4band, ST_Intersection(ST_Force_2D(f.geom), g.geom) AS geom
INTO rofrse.tmp_flood_risk_grid
FROM rofrse.raw_flood_risk f, rofrse.gb_grid g
WHERE (ST_Intersects(ST_Force_2D(f.geom), g.geom));
আমার আসল তথ্যটি দেখতে এমন দেখাচ্ছে:
তবে পোস্ট ক্লিপিং এর মতো দেখাচ্ছে:
এটি একটি "অনুপস্থিত" বহুভুজের উদাহরণ: