পোস্টজিআইএসের সাথে ছেদকারী লাইনগুলিতে যোগদান করুন


15

এটি এমন কিছু যা আমি জিজ্ঞাসা করতে প্রায় লজ্জিত কিন্তু আমার জীবনের জন্য এটির কাজটি করার জন্য আমি এটি দেখতে পাচ্ছি না।

আমার বিভাগগুলির সাথে একটি রাস্তা স্তর রয়েছে, প্রতিটি বিভাগে একটি Road IDএবং একটি বিভাগ রয়েছে type

আমি সমস্ত বিভাগগুলিকে একসাথে যোগ দিতে চাই, প্রত্যেকের Road IDজন্য একটি লাইনস্ট্রিংয়ের জন্য তবে কেবল যখন সেগুলি একই হয় typeএবং স্পর্শ করা হয় (সমস্ত লাইন একসাথে স্ন্যাপ করা হয়)।

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

Road ID - Type
   1       L
   1       L
   1       T
   1       L

উত্তর:


11

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

SELECT (ST_Dump(geom)).geom AS geom, "road_id", "road_type"
FROM (
    SELECT ST_LineMerge(ST_Union(geom)) AS geom, "road_id", "road_type"
    FROM "RoadCentreLines"
    GROUP BY "road_id", "road_type"
) AS street_union

আমার জ্যামিতি কোনও প্রশ্নের সাথে মার্জ হয় না
লুফডুড

@ লুফয়েড কেয়ার আরও কোন তথ্য সরবরাহ করতে চান? আপনি যে জ্যামিতি নিয়ে কাজ করছেন তা এমনভাবে সংযুক্ত না করা সম্ভব যে এটি
গ্র্যান্ট হ্যামফ্রিজ

এটি আমার পক্ষে রোড আইডির ভিত্তিতে একটি রোড ডেটাসেটকে মার্জ করার জন্য সুন্দরভাবে কাজ করেছে। এটি ফাঁক দিয়ে রাস্তাগুলিকে সুন্দরভাবে পরিচালনা করেছে (ফাঁক বিভাগগুলি জুড়ে কোনও লাইন নেই)। আমি ওপি নই, তবে এটি দুর্দান্ত উত্তর। এটি গ্রহণযোগ্য উত্তর হওয়া উচিত। ধন্যবাদ।
জবল্ক

এটাই সেরা উত্তর!
এবরোরসো

6

দেখে মনে হচ্ছে এটি কাজ করে

SELECT a."Road_ID",a."Road_Type", ST_LineMerge(ST_Collect(a.the_geom))
FROM "RoadCentreLines" as a 
LEFT JOIN "RoadCentreLines" as b ON 
ST_Touches(a.the_geom,b.the_geom) 
    AND a."Road_Type" = b."Road_Type" 
    AND a."Road_ID" = b."Road_ID"
GROUP BY ST_Touches(a.the_geom,b.the_geom), a."Road_Type", a."Road_ID"

0

কেবল থুতু-বলিং তবে আমি কয়েকটি অন্যান্য সমাধান সম্পর্কে ভাবতে পারি। আমি জানি না তারা আরও ভাল বা খারাপ, ঠিক যে তারা অন্য।

প্রথমত, যদি কেবল কয়েকটি রাস্তার ধরণ থাকে তবে আপনি টাইপের বাই টাইপ যেতে পারেন এর মতো কিছু নিয়ে:

WITH type As (SELECT "Road_ID" As id WHERE "Road_Type" = 'type')
SELECT ST_LineMerge (ST_Collect(the_geom))
FROM "RoadCentreLines"
WHERE ST_StartPoint(the_geom) && ST_EndPoint(the_geom) IS TRUE
AND "Road_ID" IN (SELECT id FROM type);

উপরের বেশিরভাগটি রোডটাইপের সাথে আপনি যদি ফোর লুপে পরিবর্তনশীল হিসাবে ব্যবহার করতে পারেন তবে সেখানে গুচ্ছের কিছু ধরণের সংখ্যক প্রকারের উপস্থিতি রয়েছে।

আমার শেষ চিন্তায় সমস্ত জ্যামিতিগুলি মার্জ করা, তারপরে ST_Line_Substring ফাংশন ( লিংক-লিংক ) এর সাথে রাস্তার ধরণের কল করা জড়িত তবে এটি কোনও কাজ করবে না।

এর সাথে শুভকামনা রব

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