আমি কিছু রাস্টার / বহুভুজ ছেদ করার জন্য PostGIS2.0 ব্যবহার করছি । আমার কোন অপারেশনটি ব্যবহার করা উচিত এবং এটি সম্পাদন করার দ্রুততম উপায় কী তা বুঝতে আমার সমস্যা হচ্ছে। আমার সমস্যাটি নিম্নরূপ:
- আমার একটি বহুভুজ এবং একটি রাস্টার আছে
- বহুভুজের মধ্যে পড়ে এমন সমস্ত পিক্সেল আমি খুঁজে পেতে এবং পিক্সেলের মানটির যোগফল পেতে চাই
- এবং (আপডেট হওয়া সমস্যা): আমি কোয়েরিটি সম্পাদন করার সময় কিছু পিক্সেলের জন্য মূল মানগুলি পাই যা মূল রাস্টারটিতে নেই that
আমি অসুবিধা বোঝার হচ্ছে কিনা আমি ব্যবহার করা উচিত ST_Intersects()
বা ST_Intersection()
। আমার পিক্সেলগুলি সংক্ষিপ্ত করার জন্য সর্বোত্তম পদ্ধতির কী তা আমি জানি না। এখানে আমি প্রথম পদ্ধতির চেষ্টা করেছি যা চেষ্টা করেছি (# 1):
SELECT
r.rast
FROM
raster as r,
polygon as p
WHERE
ST_Intersects(r.rast, p.geom)
এটি rast
মানগুলির একটি তালিকা ফেরত দেয় যা আমি কী করব তা নিশ্চিত নই। আমি ব্যবহার করে সারাংশের পরিসংখ্যান গণনা করার চেষ্টা করেছি ST_SummaryStats()
তবে আমি নিশ্চিত নই যে এটি বহুভুজের মধ্যে থাকা সমস্ত পিক্সেলের ওয়েট-সমষ্টি কিনা।
SELECT
(result).count,
(result).sum
FROM (
SELECT
ST_SummaryStats(r.rast) As result
FROM
raster As r,
polygon As p
WHERE
ST_Intersects(r.rast, p.geom)
) As tmp
অন্যান্য পদ্ধতির যা আমি চেষ্টা করেছি (# 2) ব্যবহার করে ST_Intersection()
:
SELECT
(gv).geom,
(gv).val
FROM
(
SELECT
ST_Intersection(r.rast, p.geom) AS gv
FROM
raster as r,
polygon as p
WHERE
ST_Intersects(r.rast, p.geom)
) as foo;
এটি জ্যামিতির একটি তালিকা প্রত্যাবর্তন করে যা আমি আরও বিশ্লেষণ করি তবে আমি ধারণা করি এটি কম দক্ষ।
আমি অপ্রত্যাশিত যার উপর অপারেশনের দ্রুত আদেশও রয়েছে। আমি কি সবসময়ই বেছে নেব raster, polygon
বা polygon, raster
, বা বহুভুজটিকে কোনও রাস্টার হিসাবে রূপান্তর করব raster, raster
?
সম্পাদনা: আমি # 2 R.K.
এর লিঙ্ক থেকে কিছু বিশদ সহ পদ্ধতির আপডেট 2 ।
পদ্ধতির # 2 ব্যবহার করে, আমি ফলাফলগুলিতে নিম্নলিখিত ত্রুটিটি লক্ষ্য করেছি যা আমি আউটপুটটি বুঝতে না পারার কারণ এটি। এখানে আমার আসল রাস্টারটির চিত্র, এবং বহুভুজের একটি রূপরেখা যা এটি ছেদ করতে ব্যবহৃত হচ্ছে, উপরে ওভারলাইড করা হয়েছে:
এবং এখানে পোস্টজিআইএস ব্যবহার করে ছেদ করার ফলাফল:
ফলস্বরূপ সমস্যাটি হ'ল 21474836 এর মান ফিরে পাওয়া যাচ্ছে যা মূল রাস্টারে নেই। আমি জানি না কেন এটি হচ্ছে। আমি সন্দেহ করি এটি কোথাও কম সংখ্যার সাথে সম্পর্কিত (প্রায় 0 দ্বারা বিভাজন), তবে এটি ভুল ফলাফল দেয়।
ST_SummaryStats()
# 1 এর জন্য ব্যবহার করেছি তবে কীভাবে এটি # 2 এর জন্য করবেন তা নিশ্চিত নই।