অন্য টেবিলের বৈশিষ্ট্যগুলির দ্বারা কীভাবে একটি টেবিলের বৈশিষ্ট্যগুলিতে এস স্প্লিট করা যায়?


9

আমাকে বহুভুজ (স্তর 'পোল') দুটি বন্ধ এবং নন-ক্লোজড লাইনস্ট্রিংস (স্তর 'লিন') দ্বারা বিভক্ত করতে হবে।

এখানে চিত্র বর্ণনা লিখুন এখানে চিত্র বর্ণনা লিখুন

দুর্ভাগ্যক্রমে আমি নিম্নলিখিত কোয়েরিতে চলমান সঠিক ফলাফল পাই না।

CREATE VIEW splitted_pol AS
SELECT 
    g.path[1] as gid, 
    g.geom::geometry(polygon, SRID) as geom 
FROM
    (SELECT 
    (ST_Dump(ST_Split(pol.geom, lin.geom))).* 
    FROM pol, lin
) as g;

আমার উদাহরণে এসT_স্প্লিটকে ছয়টি বহুভুজ (স্তর 'বিভক্ত_পোল') তৈরি করা উচিত।

এখানে চিত্র বর্ণনা লিখুন এখানে চিত্র বর্ণনা লিখুন কেউ কি কীভাবে কিউআইজিআইএস / পোস্টজিআইএস এর সাথে এসT_স্প্লিট ব্যবহার করবেন তা জানেন?


আপনার রত্নগুলি পুনরাবৃত্তভাবে খাওয়াতে হবে ST_Split
জাকুব কানিয়া

আপনি কি আমাকে এসকিউএল কোয়েরি সাহায্য করতে পারেন? আমি পোস্টজিআইএসে নতুন
চন্দ্র সমুদ্র

আপনার ইনপুট স্তরগুলি ঠিক কী ধারণ করে? আমি একটি লাল বর্গক্ষেত্র এবং একটি ত্রিভুজ বহুভুজ সহ স্তর 'পোল' এবং মাত্র একটি গা dark় নীল উল্লম্ব রেখার সাথে স্তর 'লিন' দেখতে পাচ্ছি। এবং আপনি 6 বহুভুজ আশা করবেন না কেন? আমি "সীমান্ত" কে আমলে নেব না।
স্টিফান

স্তরগুলি চিত্রিত করার জন্য আমি একটি স্ক্রিনশট যুক্ত করেছি।
চন্দ্র সমুদ্র

কোনও সুযোগ আপনি ইনপুট জ্যামিতি যুক্ত করতে পারেন?
জন পাওয়েল

উত্তর:


4

আপনি এই জাতীয় কিছু তৈরি করতে পারেন:

create or replace function ST_MultiSplit(geom Geometry, blades Geometry) RETURNS Geometry AS $$
BEGIN
  FOR i IN 1..ST_NumGeometries(blades)
     LOOP
        geom = ST_Split(geom, ST_GeometryN(blades, i));
     END LOOP;
  RETURN geom;
END;
$$ LANGUAGE plpgsql;

তারপরে এটি ব্যবহার করুন:

Select ST_AsEWKT(a.geom) from (
   select (ST_Dump(ST_MultiSplit(pol.geom, (
      select ST_MemUnion(lin.geom) from lin where ST_Intersects(pol.geom, lin.geom) = 't')
 ))).geom geom from pol) a;

এটি আপনার প্রত্যাশিত ছয়টি রেকর্ড দেয়। আপনি চেক / হ্যান্ডলিংয়ে কিছু ত্রুটি যুক্ত করতে চাইতে পারেন এবং আমি স্কেলাবিলিটি সম্পর্কে নিশ্চিত নই।


4

আমি জাভাতে লাইন দিয়ে বৈশিষ্ট্যটি বিভক্ত করতে পোস্টজিআইএস এসকিউএল ব্যবহার করছি এবং আমার কোডটি কাজ করেছে। আমার কোডটি হ'ল:

পাবলিক তালিকা বিভাজন জ্যামিতি (স্ট্রিং জিওম 1, স্ট্রিং জিওম 2)

    List<String> result=new ArrayList<String>() ;
    try {

        Statement s = connection.createStatement();
        String sql_stat = null;
        sql_stat = "select st_astext (a.geom)from (select ( st_dump(p_geom)).geom as geom FROM (SELECT  st_split(ST_GeomFromEWKT('"+geom1+"') ,ST_GeomFromEWKT('"+geom2+"'))AS p_geom) AS b) AS a;";
        System.out.println(sql_stat);
        ResultSet rs=  s.executeQuery(sql_stat);
        while (rs.next()){
            result.add(rs.getString(1)) ;
        }
    } catch (Exception e) {
        e.printStackTrace();
    }
    return result ;
}

আমি আপনাকে সাহায্য আশা করি।


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

কিউজিআইএস সি ++ তে লেখা এবং পাইথন বাইন্ডিং রয়েছে। সুতরাং আপনি সেই ভাষাগুলি ব্যবহার করে নিজের অ্যাপ্লিকেশন বিকাশ করতে পারেন। আপনি জাভা ব্যবহার করতে পারবেন না post আপনি পোস্টজিআইএসের পরিবর্তে ব্যবহার করতে পারেন।
সমানে

কোনও সি ++ / পাইথন অ্যাপ্লিকেশন ছাড়াই পোস্টজিআইএস ব্যবহার করে লাইনস্ট্রিং বৈশিষ্ট্যগুলি দিয়ে বহুভুজ বৈশিষ্ট্যগুলিকে বিভক্ত করার কোনও উপায় আছে কি? আমার কোনও প্রোগ্রামিংয়ের অভিজ্ঞতা নেই।
চন্দ্র সমুদ্র

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