রেখাংশগুলি থেকে ভোরোনাই চিত্রটি তৈরি করুন


14

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

আদর্শভাবে আমি পাইথন থেকে স্ক্রিপ্ট করতে পারে এমন কিছু চাই, তবে আর্কজিআইএস বা এর অনুরূপ ব্যবহারের সমাধানও গ্রহণযোগ্য হবে।

লাইন বিভাগ থেকে ভোরোনাই চিত্র

আমি এখন পর্যন্ত এটির একমাত্র গ্রন্থাগার হ'ল ওপেনভোরনোই , যা আশাব্যঞ্জক বলে মনে হচ্ছে। অন্য কেউ আছে?


1
এটি সম্ভবত সহায়তা করবে: gis.stackexchange.com/questions/53414/…
ড্যান সি

ধন্যবাদ। আমার অনুসন্ধানে কেন প্রশ্নটি আসে নি তা নিশ্চিত নয়।
স্নোরফলোরপাগাস

উত্তর:


5

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

https://github.com/UNTGeography/VoronoiDiagramsGIS

এটি @ রডউক্সজুর উত্তরে বর্ণিত "ইউক্লিডিয়ান অ্যালোকেশন" হিসাবে একটি অনুরূপ পদ্ধতি ব্যবহার করে এবং ফলদায়ক রাস্টার থেকে ভেক্টর বহুভুজ তৈরি করতে ফ্লো ডাইরেকশন / বেসিন রাস্টার ব্যবহার করে।


আগ্রহীদের জন্য গুরুত্বপূর্ণ অংশ: github.com/UNTGeography
Voronoi ডায়াগ্রামস

3

ভোরোনো প্রাথমিকভাবে পয়েন্টগুলির জন্য ডিজাইন করা হয়েছে। আপনার সমস্যার জন্য আমি যে দুটি পদ্ধতি কল্পনা করতে পারি তা এখানে রয়েছে (আর্কজিআইএস সরঞ্জামগুলি উদ্ধৃত করে, তবে সম্ভবত সুদৃ with় দ্বারা সম্ভব):

1)

ক) রেখাগুলি বরাবর পয়েন্ট তৈরি করুন (উদাহরণস্বরূপ ডেনসিফাই করুন তারপর রেখার শীর্ষে অবস্থানটি বৈশিষ্ট্যযুক্ত করুন)

খ) থিয়েসন বহুভুজ তৈরি করুন

গ) থাইসেন বহুভুজগুলি যে রেখাগুলিকে ছেদ করে সেগুলির ভিত্তিতে দ্রবীভূত করুন

2)

ক) স্থানিক বিশ্লেষক সহ, ইউক্যালিডিয়ান বরাদ্দকে লাইনে গণনা করুন

খ) প্রতিটি অঞ্চলকে বহুভুতে রূপান্তর করুন


3

কিছু গ্রাহকের জন্য বেশ কয়েকজন সহকর্মী এবং আমি 2 জিওপ্রসেসিং সরঞ্জাম তৈরি করতে কাজ করছি যা এটি করে। ভূ-প্রক্রিয়াকরণ সরঞ্জামগুলি সর্বজনীনভাবে উপলভ্য না হলেও, অজগর এবং সি # আমরা ব্যবহার করেছি:

সি # এবং পাইথন মোড়ক উভয়ই আসলে সি ++ বুস্ট ভোরোনাই এপিআইয়ের উপর নির্ভর করে: http://www.boost.org/doc/libs/1_54_0/libs/polygon/doc/voronoi_main.htm

নোট করুন যে এপিআই অনেকগুলি মেমরি গ্রাস করে। আপনি যদি 64 বিট, আর্কজিআইএস প্রো, বা কিউজিআইএস এর জন্য জিওপ্রসেসিং ব্যবহার করেন তবে এটি কোনও সমস্যা নয়। আপনি যদি অর্কিজিআইএস ডেস্কটপে এটি 32 বিট হিসাবে থাকেন তবে এটি একটি সীমাবদ্ধতা। (৪০,০০০ সারি বা তার বেশি সংখ্যক বিশদ সড়ক নেটওয়ার্ক মেমরির সীমাতে পৌঁছানোর জন্য পর্যাপ্ত হওয়া উচিত)


1
আমি আসলে আর্কম্যাপ এবং আরকজিআইএস প্রো-এর জন্য একটি জিওপ্রসেসিং সরঞ্জাম তৈরি করেছি যা পাইভেরোনাই লাইব্রেরির উপর নির্ভর করে: github.com/fabanc/Boost-Voronoi- for- আরসিজিআইএস
ফ্যাবিয়েন অ্যানসেলিন

2

ইটি জিওয়েজার্ডস ( অর্কের জন্য একটি প্লাগইন) এর জন্য একটি সরঞ্জাম রয়েছে যা পলাইনগুলি গ্রহণ করে (নীচের স্ক্রিনশটটি দেখুন)। দুর্ভাগ্যক্রমে আপনার সরঞ্জামটি চালনার জন্য লাইসেন্সযুক্ত পণ্যটির প্রয়োজন হবে, তবে আমি মনে করি এটি কৌশলটি করা উচিত।

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


0

পোস্টগ্র্রেএসকিউএল / পোস্টজিআইএস ব্যবহার করে আপনার কার্য সমাধানের আরও একটি উপায়।

যদি লাইনগুলি সংক্ষিপ্ত এবং সহজ হয় তবে স্ক্রিপ্টটি চালান:

WITH
tbla AS (SELECT (ST_Dump(geom)).geom geom FROM <line_name_table>),
tblb AS (SELECT (ST_DumpPoints(geom)).geom geom FROM tbla
        UNION
        SELECT ST_Centroid(geom) geom FROM tbla),
tblc AS (SELECT ((ST_Dump(ST_VoronoiPolygons(ST_Collect(geom)))).geom) geom FROM tblb)
SELECT ST_Union(a.geom) geom FROM tblc a JOIN tbla b ON ST_Intersects(a.geom, b.geom) GROUP BY b.geom;

ফলাফল দেখুন।

লাইনগুলি দীর্ঘ হলে স্ক্রিপ্টটি চালান:

WITH
tbla AS (SELECT (ST_Dump(geom)).geom geom FROM <line_name_table>),
tblb AS (WITH btbl AS (SELECT (ST_Dump(geom)).geom geom FROM tbla),
intervals AS (SELECT generate_series (0, 9) as steps)
SELECT steps AS stp, ST_LineInterpolatePoint(geom, steps/(SELECT count(steps)::float-1 FROM intervals)) geom FROM btbl, intervals GROUP BY intervals.steps, geom),
tblc AS (SELECT ((ST_Dump(ST_VoronoiPolygons(ST_Collect(geom)))).geom) geom FROM tblb)
SELECT ST_Union(a.geom) geom FROM tblc a JOIN tbla b ON ST_Intersects(a.geom, b.geom) GROUP BY b.geom;

ফলাফল দেখুন।

যদি প্রয়োজন হয় তবে লাইনগুলিতে পয়েন্টের সংখ্যাটি সংক্ষিপ্ত করুন, আমার উদাহরণে এটি 10 ​​পয়েন্ট।

মূল সমাধান।

এই স্ক্রিপ্টটি বলা হয়: ST_Voronoi ডায়াগ্রাম ফ্রেমলাইনস।


আমি এটি এখনও চালাইনি, তবে দেখে মনে হচ্ছে এটি জ্যামিতির উল্লম্ব ব্যবহার করে ভারোনি বহুভুজ তৈরি করে তারপর তারা যদি জিনিতিকে স্পর্শ করে তবে তাদেরকে (ইউনিয়নের সাথে) একীভূত করে। এটা কি ঠিক? যদি তাই হয় তবে এটি আপনার ঠিক জ্যামিতিতে অনেকগুলি শীর্ষবিন্দু রয়েছে এবং কোনওগুলি ছাড়াই দীর্ঘ অংশ নেই।
স্নোরফলোরপাগাস

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