পোস্টজিআইএস রাস্টার সমষ্টি (মানচিত্র বীজগণিত)


14

আমার কাছে নির্দিষ্ট দিনগুলিতে ভ্রমণের সময় আইসোক্রোনস উপস্থাপন করে বহুভুজগুলির একটি টেবিল রয়েছে। প্রতিটি উত্স বিন্দুর জন্য, পাঁচটি আইসোক্রোন জ্যামিতি রয়েছে (পৃথক সারিগুলিতে সঞ্চিত)। প্রতিটি উত্স পয়েন্টের জন্য, আমি পাঁচটি আইসোক্রোনস (একটি বাইনারি এনওএলএল বা 1) রাস্টারাইজ করতে চাই এবং তারপরে সেগুলিকে একক রাস্টার স্তরে একত্রিত করতে চাই। এই রাস্টার স্তরটির জন্য একটি সাধারণ মানচিত্রের বীজগণিতের প্রয়োজন: সমষ্টি / 5, যাতে প্রতিটি উত্স শেষ পর্যন্ত একক রাস্টার স্তরটির সাথে যুক্ত হবে যা [NULL, 0.2, 0.4, 0.6, 0.8, 1] এর মধ্যে কতগুলি নির্ভর করে উপাদান স্তরগুলি ওভারল্যাপ করে। এটি একটি সম্ভাবনার পৃষ্ঠ surface

আমার ডেটা সব পোস্টগ্রিজ 9.3 এ পোস্ট করা হয়েছে (পোস্টজিআইএস সহ)। আমার সমস্যাটি হ'ল আমি যখন পোস্টজিআইএস রাস্টারটি ব্যবহার করতে শিখতে চাইছি তখন মনে হচ্ছে এটি খুব খাড়া শেখার বক্ররেখার রয়েছে এবং উদাহরণগুলির মধ্যে আমি একক রাস্টার স্তরটির সাথে চুক্তি করতে পারি। উদাহরণস্বরূপ, এই স্তরটি বহুভুজ ওভারলেয়ের অংশ হিসাবে ব্যবহৃত হয়, সম্ভবত প্রতিটি বহুভুজের জন্য রাস্টারটির গড় গড়ে। সংমিশ্রণের জন্য আমি একটি প্রতিরূপ উদাহরণ খুঁজে পাইনি: ক) ভেক্টর -> রাস্টার খ) মানচিত্র বীজগণিত; এবং গ) আমার প্রথম অনুচ্ছেদে অনুসারে বৈশিষ্ট্য দ্বারা গ্রুপ RO

এই কাজটি সম্পাদন করতে হলে আমার জিডিএল বা গ্রাস ব্যবহার করা ঠিক আছে তবে পোস্টজিআইএস হ্যান্ডল করতে সক্ষম হওয়া উচিত বলে মনে হচ্ছে; আমার ইনপুট ডেটা ইতিমধ্যে পোস্টজিআইএস জ্যামিতি দেওয়া থাকলে এটি করা সুবিধাজনক হবে; এবং আমি পোস্টজিআইএস রাস্টারের সাথে সত্যই পদক্ষেপ নিতে চাই।

কিছু নমুনা তথ্য কাঠামো:

areaid    time        date          isogeom (polygon)
1000      07:15:00    2014-05-05    xxx
1000      07:15:00    2014-05-06    xxy
...
1006      07:15:00    2014-05-05    zzz

আমি অঞ্চলভিত্তিক দলবদ্ধভাবে জালিয়াতি করতে চাই, এবং তারপরে মানচিত্র বীজগণিত সম্পাদন করতে চাই:

areaid    isorast (raster)
1000      aaa
1006      bbb

পোস্টজিআইএস-এ এটি ধারণ করে আমি সফল হইনি। আমার দৃষ্টিভঙ্গি ভেক্টরকে রাস্টার হিসাবে রূপান্তর করা, রাস্টারদের অ্যারেতে ফেলে দেওয়া, এবং জিওটিআইএফএফ-তে লিখিত হওয়ার আগে (সম্ভবত পোস্টজিআইএসে ফেরত পাঠানো যেতে পারে) সাইক্রোপজি 2-এর মাধ্যমে নাম্বার অ্যারেগুলির সংমিশ্রণটি সম্পাদন করা হয়েছে। আদর্শ নয়, তবে সক্ষম।


1
দুর্দান্ত প্রশ্ন। আমি পোস্টগ্রিস রাস্টার অনুভূতি শিখার জন্য সত্যই উচিত share দুঃখের বিষয় আজ খুব ব্যস্ত।
জন পাওয়েল

1
এই বোস্টনজিআইএস ব্লগে মানচিত্র বীজগণিত সম্পর্কে মোটামুটি শক্ত নিবন্ধ রয়েছে । এই ব্লগের লেখক পোস্টগিস ইন অ্যাকশন নামে একটি দুর্দান্ত বইয়ের লেখকও রয়েছে, যেখানে পোষ্টগিসের প্রচুর পরিমাণে রাস্টার ক্ষমতা রয়েছে। দুঃখিত, আমি আরও প্রত্যক্ষ উদাহরণ দিয়ে আসতে পারিনি।
জন পাওয়েল 21

উত্তর:


3

আপনার নিজের সামগ্রিক ফাংশনটি লিখতে হবে:

CREATE OR REPLACE function sum_raster_state(raster, raster)
returns raster
language sql
as $f$

SELECT
CASE $1
WHEN NULL THEN
      $2
ELSE
    ST_MapAlgebra(
        $1, 
        $2, 
        '([rast1] + [rast2])', 
        NULL, 
        'UNION', 
        '[rast2]', 
        '[rast1]', 
        NULL)
END;
$f$;

CREATE OR REPLACE FUNCTION sum_raster_final(raster)
returns raster
language sql
as $f$
SELECT 
   $1
$f$;

create aggregate sum_raster(raster) (
    SFUNC = sum_raster_state,
    STYPE = raster,
    FINALFUNC = sum_raster_final
);

এরপরে আপনি এটিকে এভাবে কল করতে পারেন

SELECT areaid, sum_raster(st_asraster(isogeom, ...)) FROM isochrone GROUP BY areaid

এটি আপনাকে একই অঞ্চলের আইডি সহ আপনার সমস্ত রাস্টারদের যোগফল দেয়। আপনাকে প্রতিটি অঞ্চল আইডির জন্য পর্যবেক্ষণের সংখ্যার দ্বারা রাস্টার মানগুলি ভাগ করতে হবে। (আমি এটি সামগ্রিক ফাংশনে অন্তর্ভুক্ত করি নি You আপনি এটি এখানে বা পরে MapAlegbra ব্যবহার করে করতে পারেন)

নিশ্চিত হয়ে নিন যে আপনার ইনপুট রাস্টারগুলি সবগুলি একত্রিত হয়েছে, অন্যথায় এটি কাজ করবে না।

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