লিনস্ট্রিংসে থাকাকালীন এলোমেলো ফিশনেটের সেলগুলিতে একে অপরের থেকে নির্দিষ্ট দূরত্বে পয়েন্ট তৈরি করুন


10

আমাদের একটি ল্যান্ড প্রোটোকল রয়েছে যেখানে আমরা 1x1 কিলোমিটার কোষের ফিশনেট পাই। কিছু সেল এলোমেলোভাবে চয়ন করা হয়। আমাদের প্রতিটি ঘরে 4 পয়েন্ট রাখতে হবে এবং এই পয়েন্টগুলিও রাস্তায় যেতে হবে। POSSIBLE যদি প্রতিটি কোষের প্রতিটি পয়েন্টের জন্য পয়েন্টগুলির মধ্যে সর্বনিম্ন দূরত্ব 500 মিটার হতে হয় বা যদি তা না হয় তবে আমরা সর্বোচ্চ সম্ভাব্য দূরত্ব চাই distance

প্রথম প্রয়াসের মধ্যে আমরা প্রতিটি কক্ষকে এসএসক্রিয়েটফিশনেটের সাথে চার 500x500 এম কোষে বিভক্ত করে দিয়েছিলাম আমরা তারপরে সাব-সেলগুলির সেন্ট্রয়েড এবং তারপরে নিকটতম রাস্তায় (এসT_ ক্লসস্টপয়েন্ট) পয়েন্ট রেখেছি। আমরা কিছু ভাল ফলাফল পেয়েছি তবে নীচের উদাহরণে আপনি দেখতে পাচ্ছেন যে পঞ্চম 5 এর চেয়ে খুব কাছে এবং বাম রাস্তায় সরানো যেতে পারে।

WITH
r1 AS (         -- only sub-cells which intersects random cells
    SELECT id_maille, ROW_NUMBER() OVER() AS id_grille, fishnet_500.geomgrille
    FROM fishnet_500
        JOIN t_mailles
            ON ST_Intersects(ST_Buffer(t_mailles.geom,-200), fishnet_500.geomgrille)     -- buffer < 0 to not select neightbours
)
,
r2 AS (         -- cut roads in every cells
SELECT id_maille, id_grille, ST_Intersection((ST_Dump(roads.geom)).geom, r1.geomgrille) as geomroute
FROM roads
    JOIN r1
        ON ST_Intersects(roads.geom, r1.geomgrille)
)
                -- select point on each road the closest to cell centroid
SELECT r2.id_maille, r2.id_grille, ST_ClosestPoint(ST_Union(r2.geomroute),ST_Centroid(r1.geomgrille)) as geomipa
FROM r2
    JOIN r1
        ON r2.id_grille = r1.id_grille
GROUP BY r2.id_maille, r2.id_grille, r1.geomgrille
ORDER BY r2.id_maille, r2.id_grille

আপনি এটা ব্যবহার করে দেখুন দিতে চান যদি আমি 3 স্তর করা (ফিসনেট র্যান্ডম কোষ সঙ্গে, সাব-fisnet রাস্তা) একটি সংরক্ষণাগার মাধ্যমে আপনি খুঁজে পেতে পারে এখানে

আমি অনুমান করি যে আমরা একটি পুনরাবৃত্ত আলগোরিদিম এড়াতে পারি না যা অনেক সম্ভাবনার চেষ্টা করে তবে আমি নিশ্চিত নই।

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


আপনি এতক্ষণ ব্যবহার করা কোডটি ভাগ করে নিতে পারেন?
কুশান

অন্য কোন বাধা আছে? উদাহরণস্বরূপ, উপ-কক্ষের সবচেয়ে দূরের কোণে একটি বিন্দু দিয়ে শুরু করা এটি আরও সহজ করে দেবে, যার ফলে খুব কম হওয়ার কারণে আপনাকে অন্যান্য পয়েন্টগুলি ফেলে দিতে হবে?
সিম্বামাঙ্গু

হ্যাঁ বিবেচনা করা কোণে যখন অন্য কোনও ঘরটি কোষ স্পর্শ করে না তখন কোণে পয়েন্টগুলি দিয়ে শুরু করা ভাল। পুরো গ্রিডে পয়েন্টগুলি একে অপরের থেকে ন্যূনতম দূরত্বে থাকতে হবে।
নিকোলাস বোয়েস্টল্ট

উত্তর:


1

আপনি কি আপনার পোস্টজিআইএস ডাটাবেসের সাথে লিঙ্ক রেখে আর বা অজগরে এটি করতে ইচ্ছুক? আপনি যদি প্রতি 1x1 কিলোমিটার ঘরে সমস্ত লাইনে ST_DumpPPoint ব্যবহার করেন তবে প্রতিটি> 500 মিটারের দূরত্ব সহ 4 টি পয়েন্ট বা যতদূর সম্ভব পৃথক পৃথক পৃথক অ্যালগরিদম ব্যবহার করতে সক্ষম হওয়া উচিত।

ন্যাপস্যাক সমস্যার জন্য উইকিপিডিয়ায় উল্লিখিত একটি অ্যালগরিদম, https://en.wikedia.org/wiki/Knapsack_problem , আপনাকে কিছু ধারণা দেবে। অথবা, আমি মনে করি একটি এমসিসিএম অ্যালগরিদম ভালভাবে কাজ করবে।

যদি দুটি গ্রিড একে অপরকে অবিচ্ছিন্ন করে রাখে, তবে সংলগ্ন গ্রিডগুলির পয়েন্টগুলির মধ্যে দূরত্ব কী বিবেচনা করে?


আপনার শেষ প্রশ্নটি পুনর্বিবেচনা করতে হ্যাঁ, আমার শেষ মন্তব্যে যেমন বলা হয়েছে: "পয়েন্টগুলি পুরো গ্রিডে একে অপরের থেকে নূন্যতম দূরত্বে থাকতে হয়"। আপনার সাহায্যের জন্য ধন্যবাদ।
নিকোলাস বোয়েস্টল্ট
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.